当前位置: 首页 > news >正文

计算机网络基础:从协议到通信全解析(大致框架)

本节重点:

1.了解网络发展背景,对局域网/广域网的概念有基本认识

2.了解网络协议的意义,重点理解TCP/IP五层结构模型

3.学习网络传输的基本流程,理解封装和解包分用

一、计算机网络发展背景:

人与人之间是需要协同工作的,就注定了计算机需要协同工作,网络的产生是必然的

  • 早期计算机是昂贵的大型设备(如 IBM 大型机),体积庞大、功能单一,且为 “单机运行” 模式,一台计算机仅供少数人使用,资源(如计算能力、存储)无法共享。
  • 军事、科研领域首先产生了 “多设备协同” 需求:例如,美国军方需要让不同地点的计算机共享数据,以提高指挥效率;科研机构希望连接多台计算机,协同完成复杂计算(如导弹轨迹计算、气象模拟)。

早期的计算机是独立模式(计算机之间相互独立)

网络互联模式:多台计算机连接在一起,完成数据共享,协同工作 

二、局域网与广域网:

局域网(LAN)和广域网(WAN)是计算机网络按地理覆盖范围划分的两种核心类型

局域网:在有限地理范围内(如家庭、办公室、校园、工厂)将多台设备(计算机、手机、打印机等)互联形成的网络。

交换机;主要用于在同一网络(如局域网 LAN)内实现多个设备的高效通信

广域网:覆盖广阔地理范围(如城市、国家、全球)的网络,用于连接多个局域网或其他广域网,实现远距离数据传输。

总结:局域网就是局部的,广域网就是远距离,所谓局部和广部是相对的概念,取决于观察的视角、网络的规模和应用场景。

三、协议:

协议是指网络中不同设备之间进行通信时必须共同遵守的一套规则、标准或约定,它规定了通信的格式、时机、顺序以及错误处理方式等,确保数据能够准确、有序、高效地在设备间传输。

简单理解:就不如两个人交流,只有是用同一套语言(中文/英文),并且遵循基本的语法规则才能相互交流沟通,网络也是如此,只有达成约定,才能互相传输解析数据 

计算机之间的传输媒介是光信号和电信号,通过“频率”和”强弱“来表示0和1这样的信息,要想传递各种不同的信息,就需要约定双方的数据格式,但只要约定好就行了吗? 

显然不是,就好比一个是中文,一个是英文,我都各自遵循自己的协议,但没有人制定国际交流语言就不行,两个还是不能沟通,就好比计算机生产厂商很多,os很多,硬件设备很多,如何让不同的设备不同的厂商之间的计算机能够相互顺畅的通信,就需要有人约定一个标准,让大家都来遵循,这个标准就叫网络协议。 

3.1  协议分层:

 

例子中:我们简单的进行通信,在我们语言层看来是面对面的,但实际是我们语言层的数据经过通信设备层,在经过电话机协议,转到对方的通信设备层在到语言层。

那我们为什么要进行协议分层?本质就是为了解耦,如果我们把所有的协议都揉在一起,都放在一层,那这个协议会很冗杂,如果我们改变语言层的东西,就意味着改变整个协议,不利于实现和维护、发展

3.2  理解分层:

a.软件设计方面的优势————实现低耦合

b.分层的依据是让功能比较集中,耦合度比较高的模块为一层 

c.每一层都要解决特定的问题(这就是我们学习网络的框架)

3.3  用例子理解每一层次

假设我们有两台主机,主机a和主机b,我们该如何传输数据?

1.如何把数据交付给和自己相连的下一台主机(注意:不是主机a到b,而是主机a到b的过程中经过的其他主机)

2.当我们能传输后,我们要解决往哪传输,也就是路径的选择

3.我们要有纠错/容错的能力,如果传输失败,数据该怎么办???

4.数据包从主机a到b后要解决应用方面的问题(比如主机a向b发出申请下载电影,把数据发送给对方是手段,目的是为了下载电影,为了解决应用问题)

总结:综上是网络要解决的4个问题,应用低耦合高内聚的分层原理,每一层次都有自己匹配的协议,每一层的协议都要解决自己的问题。

3.4  OSI(Open System Interconnection)七层模型

OSI 七层模型:是国际标准化组织(ISO)提出的一种理论上的分层架构,目的是为网络协议的设计提供统一的 “功能划分标准”。它将网络通信从底层到上层划分为 7 个层级(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),每个层级明确了需要解决的核心问题(如物理层负责信号传输,网络层负责路由选择等)。
简单说,OSI 模型像一张 “建筑图纸”,规定了 “房子应该有地基、墙体、屋顶”,但不具体规定 “地基用什么水泥,屋顶用什么瓦片”

从上图可以看出:每一层都有自己的协议和自己要解决的问题

实际问题中,567层是需要我们自己设计的,也就是之前的例子中的第四点(解决应用问题)234层对应问题123,物理层暂时不考虑

3.5  TCP/IP五层(或四层)模型

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

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

物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的 wifi 无线网使用 电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗 干扰性等. 集线器(Hub)工作在物理层。
数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就 自动重发)、数据差错校验等工作。有以太网、令牌环网, 无线 LAN 等标准。交换机(Switch)工作在数据链路层。
网络层: 负责地址管理和路由选择。例如在 IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层。
传输层: 负责两台主机之间的数据传输。如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机。
应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等,我们的网络编程主要就是针对应用层。

也就是把567层归结到应用层,后续如果我们说四层模型就是省略了物理层

结合上面所说的,我们实际编程是应用层,os其实早就在内部规定好了传输层和网络层。 

 一般而言:

对于一台主机, 它的操作系统内核实现了从传输层到数据链路层的内容。

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

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

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

但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发)。

四、局域网中的两台主机是如何通信的???

4.1  协议报头

例子:比如一个快递,你想买的东西实际上是箱子里的东西,并不包括快递盒及快递单,这多出来的就叫协议,协议上的从哪寄到哪,收件人名字等信息就叫报头,将来快递在站点与站点之间传递时只需要看报头

a.报文=报头+有效载荷(后面会提)

b.协议每一层都有,而每一个协议最终表现就是协议要有报头

c.协议通常是通过协议报头来进行表达的

4.2  局域网

a.两台主机同处一个局域网是能够直接通信的

b.局域网的原理(简单提,后面详细讲)

   每一台主机都有自己的”名字“,每一台都有网卡,网卡也有自己的地址,MAC地址(表明自己在     局域网中的唯一性)(在linux中ifconfig可以查询,其中有一行ether就是MAC地址,16进制,一     共48bit位 ,window是ipconfig /all)

简单来说就是A给D发数据,所有的主机都会收到,但由于所有主机在自己最底层的协议判断时,C和B直接把该报头丢弃,只有D识别并且判断出是A发给自己的,所以就会处理

 当一个”你好“从主机1发到主机2时要经历封装,解包分用的过程,也就是”你好“每经过一层时要加上对应的报头,对方在接收到后到达应用层要经过解包分用的过程

在网络协议中,我们可以认为同层协议在直接通信,也可以理解成向下交付,这是两种不同的认知

4.3  报文=报头+有效载荷

报头就是每一层的协议,有效载荷就是除掉协议后剩下的

比如在传输层(站在传输层的视角):报文为传输层报头+应用层包头+”你好“

报头=传输层报头,有效载荷=应用层报头+”你好“

4.4  数据包封装和分用 

1.不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。
2.应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。
3.首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息。
4.数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理。

数据分用的过程:

 

4.5  每一层协议都要面临和解决的问题

1.如何判断哪里是报头,哪里是有效载荷

2.如何判断自己的有效载荷要交给上一层的哪个协议???每一层的协议也有几个,要清楚交给那个协议

以上就是每一层协议的报头都要涵盖的信息,这就是协议的共性

4.6  局域网的分类

1.以太网

a.当主机a给d发时,b不能给c发(只允许一个主机在任何一个时刻给局域网中发送信息,否则发送碰撞)

b.碰撞(Collision) 指的是多个设备同时在同一物理介质(如网线)上发送数据,导致信号相互干扰、无法被正确接收的现象。(网线站在os的角度就是共享资源/临界资源)

c.如果发送碰撞就需要重新发送

2.令牌环路

令牌环路就类似与锁,谁拥有令牌谁就可以发信息,避免了碰撞

特点:可靠性高、实时性较好,但成本高、扩展性差,目前已几乎被以太网取代。

3.无线LAN

基于无线通信技术(如无线电波、红外线)的局域网,核心标准是 IEEE 802.11 系列(即 WiFi),也属于广义以太网的延伸(无线以太网)。
特点:无需布线,灵活性强,适用于移动设备接入。

4.7  MAC地址和ip地址

在Linux中是用ifconfig命令进行查询

ehc0和lo都是网络接口,ehc0相当于入网接口,收数据和发数据都是这个,相当于数据链路层

4.7.1  MAC地址

其中echo中 ether是以太意思,这后面跟着就是MAC地址,每个数字都是16进制,一共有12个数字,每两个:分隔,12x4就是48位,也就是6个字节

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

4.7.2  IP地址

inet是ip地址,内网ip/私有ip ip地址中每个取值范围是0~255,即用一个char类型来表示,四个字节就可以表示一个ip地址,这种表示方案称为IPv4,以点分隔,叫点分十进制 

IPv6 采用 128 位二进制数表示地址,按每 8 位(1 字节)划分为 16 个字节,通常用8 组十六进制数表示(每组 4 个十六进制数,对应 16 位二进制,即 2 个字节),组之间用冒号(:)分隔。
例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334 就是一个标准的 IPv6 地址。

IPv6是解决IPv4地址不够用的情况

一般情况是局域网用MAC地址,广域网用ip,但ip还可以用于局域网(后面会解释)

4.7.3 ip地址和mac地址的作用

既然ip和mac都可以表示主机的唯一性,那区别是啥???作用是啥???

ip地址是提供方向目标,方便路径选择,比如西游记唐僧从大唐到西天取经

目的mac地址是会变的,是提供可行性,比如上一站女儿国下一站黑风岭,上一站黑风岭下一站火焰山

也就是ip提供给你一个方向,mac是沿着这个大致方向在两个相邻结点间一直跳,直到终点

ip地址工作在网络层提供宏观方向,mac地址工作在数据链路层提供微观执行

五、总结梳理数据如何在网络当中传输 

图中中间部分代表路由器,两边部分代表主机

圈圈代表一个一个的局域网

传输层和网络层是os内置好的,链路层是驱动

可以明确未来我们用户是通过编写代码,调用系统调用接口来向下传达我们的网络发送任务才交给对方主机

一定是左主机自顶向下进行封装,然后经过网线转发到路由器,然后在做自底向上的解包

当经过第一个路由器A时,因为mac地址是在数据链路层,到路由器A时已经去掉源mac地址和目的mac地址,然后经过网络层检查发现需要到另外一个路由器,所以在A中自顶向下封装,加上源mac地址和去B的nac地址,到B后依次循环这样的操作,最后到右主机

最后形成的路径就会变成这样

问题:为什么路由器A到B时它是清楚去B,而不是别的路由器???

 原因就在于ip地址宏观的路径选择,ip地址早已经决定了从哪个到哪个在到哪个

mac地址实现的是微观的,是决定从哪个到哪个这种局部的

 

 

http://www.lryc.cn/news/592096.html

相关文章:

  • Selenium自动化浏览器操作指南
  • websocket案例 599足球比分
  • IDEA高效开发:Database Navigator插件安装与核心使用指南
  • 【后端】.NET Core API框架搭建(10) --配置163邮件发送服务
  • 应用集成体系深度解析:从数据互通到流程协同
  • 实现库存显示和状态按钮的Question
  • nginx定制http头信息
  • python实现Markdown转化PDF的方案
  • 关于字符编辑器vi、vim版本的安装过程及其常用命令:
  • 小架构step系列18:工具
  • web3 区块链技术与用
  • 6 种无线传输照片从安卓到 Mac 的方法
  • 在ComfyUI中CLIP Text Encode (Prompt)和CLIPTextEncodeFlux的区别
  • 5 种可行的方法:如何将 Redmi 联系人备份到 Mac
  • AI进入自动驾驶时代:OpenAI发布革命性ChatGPT Agent
  • 飞牛上使用Docker方式部署LibreTV,再配合内网穿透,实现免费无广告刷剧的服务教程
  • 深度剖析:最新发布的ChatGPT Agent 技术架构与应用场景
  • uniapp+vue2——自定义底部导航tabbar
  • android版本编译问题之Hvac 应用体积优化问题处理记录
  • 从一开始的网络攻防(四):XSS
  • 推荐算法召回:架构理解
  • 正则表达式,Collection集合,迭代器
  • 正则表达式完全指南:从入门到实战
  • Kotlin集合分组
  • 黑马Node.js全套入门教程,nodejs新教程含es6模块化+npm+express+webpack+promise等_ts对象笔记
  • Kotlin集合过滤
  • 【Python】LEGB作用域 + re模块 + 正则表达式
  • uni-app 跳转页面传参
  • SpringCloud相关总结
  • 牛油果果实检测-目标检测数据集(真实环境下)