网络基础擅长组建乐队

news2025/1/11 5:13:23

让我们荡起双桨

来说说网络吧

现有计算机要进行协作,网络的产生是必然的

局域网:计算机数量更多了, 通过交换机和路由器连接在一起

广域网:将远隔千里的计算机都连在一起

 

交换机路由器等设备就应运而生

计算机是人的工具,人要协作,所以网络的产生是必然的!

协议

协议本质是一种约定

 计算机之间的传输媒介是光信号和电信号

通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式

只要通信的两台主机约定好协议就可以了?

不行,语言不同订好了协议也是无法正常通信的

完善的协议需要更多更细致的规定并且让参与的人都要遵守

任何问题都可以通过添加一层软件层来解决

软件分层有什么好处啊?

两个人打电话在逻辑上是两个人直接沟通

在物理上是两个电话在说话

只要软件进行分层就能模块化解耦合,让软件维护的成本更低

先描述再组织,分层最大的好处在于 "封装" -->  面向对象

计算机生产厂商有很多 

计算机操作系统, 也有很多

计算机网络硬件设备, 还是有很多

如何让这些不同厂商之间生产的计算机能够相互顺畅的通信?

就需要有人站出来, 约定一个共同的标准, 大家都来遵守, 这就是网络协议

 OSI七层模型

 OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型, 是一个逻辑上的定义和规范;

把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;

OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;

它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;

但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来理解

我那亲爱的TCP/IP协议啊

TCP/IP协议

 TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.

物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆 (现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决 定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.

数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测 到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太 网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.

网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规 划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.

传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标 主机.

应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问 协议(Telnet)等. 我们的网络编程主要就是针对应用层.

 上面的都是书上的内容

这不就是计算机里的八股文吗,,,

我们还是回来看看为什么要有TCP/IP协议吧

在学生时代谈恋爱通信的成本很低

我们来举个例子

我们假设振振子是一个甜美可人的小男孩,而逍遥是一位帅气潇洒的男高中生,逍遥和振振子这样金童玉童郎才郎貌,在认识之后很快就谈上了恋爱,振振子是逍遥的意难平,每次逍遥都习惯等在振振子的宿舍楼下,当他看到振振子笑容满面的朝他跑过来要抱抱时,他感觉世界都美好了,少年的心事总是懵懂易知,他们之间甜甜蜜蜜,即使偶尔因为吃醋或者意见不和而吵架,也会因为对方一点点小动作而重归于好,这就是学生时代,通信的成本很低,低到写一张小纸条,一个隔着走廊的眼神,他们都能明白对方的心意

 

泪目,,,,,,,,

但是学生时代总是短暂的,他们总要有毕业的时候,他们毕业之后又该如何联系呢?

在之前振振子生气的时候,逍遥只需要买一杯奶茶等在振振子宿舍楼下就好了,但是现在距离带给他们的只有更多的矛盾,已经不是那个走两步就能看见对方的时候了,逍遥总不能坐一班火车赶到只为了给振振子送一杯奶茶(有何不可),这样通信的成本就变高了,距离太远了,逍遥(主机A)要先把买的礼物交给快递小哥(路由器),那么世界上那么多男孩子,怎样定位找到振振子呢?还有一点需要注意,发送数据不是目的,只是手段,逍遥给振振子买奶茶不是目的,哄振振子开心才是目的,奶茶只是一种手段

只是单纯距离变长了就衍生出了这么多问题,异地恋难啊

为了解决这样的问题,我们就定下了各种各样的协议

这是一种解决方案

单纯因为通信距离变长

操作系统都不一样,但是上层的 标准都一样,所以各个主机可以互相通信

最重要的两层在双方操作系统中以同样的标准实现

 TCP/IP是传输层和网络层的两个很重要的协议,所以把这系列的协议统称为TCP/IP协议

对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;

对于一台路由器, 它实现了从网络层到物理层;

对于一台交换机, 它实现了从数据链路层到物理层;

对于集线器, 它只实现了物理层;

所谓的协议就是通信双方都认识 的结构化的数据类型

我们发快递要有快递单,对8?

快递单你收到的时候能确定它是你的快递

快递单是约定

协议也是这样的,拿C语言表示的话它就是一个结构体

两台主机在同一个局域网能够直接通信

网络传输基本流程

同一个网段内的两台主机进行文件传输

两台计算机通过TCP/IP协议通讯的过程:

跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器.

数据包封装和分用

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).

应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装

(Encapsulation).

首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.

数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理.

 数据封装的过程:

 数据分用的过程:

网络中的地址管理 

IP地址

IP地址是在IP协议中, 用来标识网络中不同主机的地址

对于IPv4来说, IP地址是一个4字节, 32位的整数

我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1

用点分割的每一个数字表示一个字节, 范围是 0 - 255(豪德)

MAC地址

MAC地址用来识别数据链路层中相连的节点

长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)

在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)

这就是临界资源啊得斯

以太网中任何时刻只允许一台机器向网络中发送数据,如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞

所有发送数据的主机要进行碰撞检测和碰撞避免

在没有交换机的情况下,一个以太网就是一个碰撞域

局域网通信的过程中,主机对收到的报文确认是否是发给自己的,是通过目标mac地址判定

同层之间都认为自己在和对方的同层协议在直接通信

数据在网络中发送的时候,一定要最终在硬件上跑

除了应用层,每一层协议都必须解决一个问题:自己的有效载荷,应该交给上层的哪一种协议(分用)

网络层向上看到的数据都是一样的,都至少是IP报文

IP可以屏蔽底层网络的差异,所有的网络都是IP网络

IP地址和MAC地址之间有什么关系捏

举个例子吧,我们假设励志轩是从东土大唐来的一名僧人,他要去西天取经,从长安来,到西天去,始发站:长安,第一站:车迟国,到了车迟国后,墨墨酱告诉励志轩下一站去女儿国是西天取经的标准路线,于是励志轩欣然前行,到了女儿国,碰到了身在女儿国的燃燃子,于是燃燃子告诉励志轩下一站是火焰山,励志轩继续旅程,而在这个过程中,从长安来,到西天去就属于是IP地址,车迟国,女儿国,火焰山就属于是mac地址

所以IP是最终目标

Mac是下一个目标

好捏网络的基础就是这样

十月一的假期给我一种

我要腐烂在这里的感觉

但是我又觉得腐烂在哪也不能在这儿腐烂

怪怪的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2195198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

layernorm笔记

文章目录 layer norm的解释二维三维 batchnorm和layernorm主要的区别为什么要在序列转录模型中使用layer norm? layer norm的解释 二维 红色为batchnorm,蓝色为layer norm batchnorm对每一个特征算均值和方差 layer norm对每一个批次算均值和方差 三…

窗口系统与图形绘制接口

个人博客:Sekyoro的博客小屋 个人网站:Proanimer的个人网站 当我们想要进行底层图形应用(GUI)开发时,往往需要用到窗口系统和图形库,这里简单介绍一下 视窗系统(window system)与通信协议 下面内容主要针对Unix-like操作系统 视窗系统是以使用视窗作为主要特征之一的图形用…

【含开题报告+文档+PPT+源码】基于SSM + Vue的养老院管理系统【包运行成功】

开题报告 随着社会的发展和经济的进步,人口老龄化问题逐渐凸显。统计数据显示,全球范围内的老龄人口比例正在逐年上升,养老需求也随之增长。养老院作为提供专业养老服务的机构,承担着照料老人、提供医疗保健和社交活动等责任。传…

DVWA Brute Force篇暴力破解 Low/Medium/Hight

这里就不再赘述环境搭建,就默认你已经做好环境搭建的准备了.接下来就步入正题(我的bp是汉化) 任务一,设置级别为low级别,创建好我们的字典文件 任务二 开启抓包,并且我们输入错误的账户密码 (当我知道账户名称为admin时…

Nginx06-静态资源部署

零、文章目录 Nginx06-静态资源部署 1、静态资源概述 静态资源:是在Web开发中不经常改变的文件,比如图片、CSS样式表、JavaScript脚本文件等。这些资源通常是预先编译好的,不需要服务器端的动态处理。动态资源:是在Web开发中需…

fiddler抓包19_模拟IP地址(如异地IP)

课程大纲 使用场景举例:北京模拟海南IP地址“182.118.99.12”发送请求。 ① 打开CustomRules.js文件:Fiddler快捷键“CtrlR”(或鼠标点击,菜单栏 - Rules“规则” - Customize Rules“自定义规则”)。 ② 添加代码,保存&#xff1…

SpringBoot在线教育系统:架构设计与技术选型

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

计算机网络——DNS

提供域名——>ip地址的转换 分层命名 分布式解析 怎么样维护 DNS实现在边缘系统——传输层及其以上 还提供别名——>规范名字的转换——>ip 负载均衡是一种用于在多个计算资源(如服务器、网络设备等)之间分配工作负载的技术。其主要目的是…

最小生成树prim算法kruskal算法

最小生成树 在一个无向图中求一棵树(n-1条边,无环,连通所有点)而且这棵树的边的权和最小 prim(普利姆)算法 prim算法有叫加点法,我们先标定一个点,然后寻找与这个点相连的边的权值最小的点,不断重复此操作&#xff…

【鸿蒙学习】深入解析鸿蒙应用与元服务:含义、区别、应用场景及创建方法

文章目录 鸿蒙应用(HarmonyOS App)含义用于干什么优缺点 元服务(Atomic Service)含义用于干什么优缺点 鸿蒙应用与元服务的区别创建方法鸿蒙应用的创建元服务的创建 总结 随着科技的不断进步,操作系统也在不断迭代更新…

医院管理自动化:Spring Boot技术实践

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适…

上传文件失败,请检查阿里云配置信息:[The specified bucket is not valid.

-- 十一假期结束 -- 去年今日此门中,人面挑花相应红。 -- 人面不知何处去,桃花依旧笑春风。

UART驱动学习三(TTY驱动部分源码解析)

目录 全局框架图一、tty_io.c 分析1. 关键数据结构和定义2. 文件操作结构体3. 初始化和注册4. 读写操作5. 挂起和恢复6. 信号处理7. 设备类8. 控制台通知9. 辅助函数10. 代码功能11. 带有注释的部分tty_io.c源码 二、tty_ldisc.c 分析1. 关键数据结构和定义2. 行规程操作函数3.…

从零开始打造华丽的国庆生活记录本地HTML网站

目录 目录 前言 准备工作 所需工具 文件夹结构 基础知识入门 HTML基础 CSS基础 JavaScript基础 步骤详解 1. 创建项目文件夹 2. 编写HTML文件 3. 添加CSS样式 4. 增加交互功能 5. 添加图片和视频 6. 美化网站 7. 实现响应式设计 8. 测试与优化 附加功能 创建…

Windows 搭建 Gitea

一、准备工作 1. 安装 Git:Gitea 依赖 Git 进行代码管理,所以首先需要确保系统中安装了 Git。 下载地址:https://git-scm.com/downloads/win 2. 安装数据库(可选) 默认情况下,Gitea 使用 SQLite 作为内…

【springboot】使用代码生成器快速开发

接上一项目&#xff0c;使用mybatis-plus-generator实现简易代码文件生成 在fast-demo-web模块中的pom.xml中添加mybatis-plus-generator、freemarker和Lombok依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator&…

Windows 11:如何轻松安装或卸载 Copilot 应用(多种方法)

起初&#xff0c;Copilot 是一个与 Windows 11 和 Windows 10 系统紧密结合的内置 AI 助手&#xff0c;能够通过回答问题、调整系统设置等功能来提高你的工作效率。 但从 Windows 11 24H2 开始&#xff0c;Copilot 功能已经从系统中剥离出来&#xff0c;成了一个基于 Microsoft…

【kubernetes】环境准备及K8S二进制安装【最新最全】

一,规划 1,架构 主节点(3台 master)+ 工作节点 (1台 node1) Pod网段: 10.0.0.0/16 Service网段: 10.255.0.0/16 实验环境规划: 操作系统:centos7.6 配置: 4Gib内存/6vCPU/100G硬盘 注意:也可以用4vCPU 网络:NAT 开启虚拟机的虚拟化: 2,K8S集群角色 Ip 主机名…

【嵌入式实时操作系统开发】智能家居入门4(FreeRTOS、MQTT服务器、MQTT协议、STM32、微信小程序)

前面已经发了智能家居入门的1、2、3了&#xff0c;在实际开发中一般都会使用到实时操作系统&#xff0c;这里就以FreeRTOS为例子&#xff0c;使用标准库。记录由裸机转到实时操作系统所遇到的问题以及总体流程。相较于裸机&#xff0c;系统实时性强了很多&#xff0c;小程序下发…

JavaSE——面向对象9.1:代码块详解

目录 一、静态代码块 二、构造代码块 三、局部代码块 四、总结 一、静态代码块 在《JavaSE——面向对象9&#xff1a;static、final关键字、代码块、单例模式》这篇文章中已经介绍过&#xff0c;静态代码块随着类的加载而加载&#xff0c;且只加载一次&#xff0c;这里不再…