网络协议系列文章
网络协议(四):网络分类、ISP、上网方式、公网私网、NAT
网络协议(六):网络层(版本、首部长度、区分服务、总长度、 标识、标志、片偏移生存时间、协议、首部校验和)
网络协议(八):传输层-TCP(可靠性传输、拥塞控制、建立连接-三次握手、释放连接-四次挥手)
网络协议(十):HTTP(报文格式、请求方法、头部字段、状态码、跨域)
网络协议(十一):单向散列函数、对称加密、非对称加密、混合密码系统、数字签名、证书
网络协议(十二):HTTPS(SSL/TLS、TLS1.2的连接)
网络协议(十三):HTTP/1.1的升级改进(HTTP/2、HTTP/3)
网络协议(十四):WebSocket、WebService、RESTful、IPv6、网络爬虫、HTTP缓存
一、网络互联模型
- 为了更好地促进互联网络的研究和发展,国际标准化组织ISO在1985年制定了网络互连模型
- OSI 参考模型(Open System Interconnect Reference Model),具有7层结构
请求过程
网络分层对应的通信协议和数据名称
二、物理层(Physical)
-
物理层定义了接口标准、线缆标准、传输速率、传输方式等
数字信号、模拟信号
-
模拟信号(Analog Signal)
-
连续的信号,适合长距离传输
-
抗干扰能力差,受到干扰时波形变形很难纠正
-
-
数字信号(Digital Signal)
-
离散的信号,不适合长距离传输
-
抗干扰能力强,受到干扰时波形失真可以修复
-
数据通信模型
-
局域网通信模型
注:网线一般不能超过100米;数字信号适用于短距离传输
-
广域网通信模型
信道
-
信道:信息传输的通道,一条传输介质上(比如网线)上可以有多条信道
-
单工通信
- 信号只能往一个方向传输,任何时候都不能改变信号的传输方向
-
比如无线电广播、有线电视广播
-
半双工通信
- 信号可以双向传输,但必须是交替进行,同一时间只能往一个方向传输
-
比如对讲机
-
全双工通信
- 信号可以同时双向传输
-
比如手机(打电话,听说同时进行)
三、数据链路层(Data Link)
-
链路:从1个节点到相邻节点的一段物理线路(有线或无线),中间没有其他交换节点
-
数据链路:在一条链路上传输数据时,需要有对应的通信协议来控制数据的传输
-
不同类型的数据链路,所用的通信协议可能是不同的
-
广播信道:CSMA/CD协议(比如同轴电缆、集线器等组成的网络)
-
点对点信道:PPP协议(比如2个路由器之间的信道)
-
- 数据链路层的3个概念(封装成帧、透明传输、差错检验),任何链路都需要
封装成帧
-
帧(Frame)的数据部分:就是
网络层传递下来的数据包
(IP数据包,Packet) -
最大传输单元MTU(Maximum Transfer Unit)
- 每一种数据链路层协议都规定了所能够传送的帧的数据长度上限
-
以太网的MTU为1500个字节
透明传输
- 使用 SOH(Start Of Header)作为 帧开始符
- 使用 EOT(End Of Transmission)作为 帧结束符
- 若数据部分出现 EOT,容易让接收端产生错误的理解,所以数据部分一旦出现了SOH、EOT,就需要进行转义:在后面加上ESC
差错检验
- FCS是根据数据部分 + 首部计算得出的
- 数据传输前和传输后都会计算FCS用来检验数据是否出错
四、数据链路层通信协议
1、CSMA/CD协议
-
CSMA/CD:载波侦听多路访问/冲突检测
-
使用了CSMA/CD的网络可以称为是以太网(Ethernet),它传输的是以太网帧
-
以太网帧的格式有:Ethernet V2标准、IEEE的802.3标准,使用最多的是:Ethernet V2标准
-
为了能够检测正在发送的帧是否产生了冲突,以太网的帧至少要
64
字节
-
用交换机组建的网络,已经支持全双工通信,不需要再使用CSMA/CD,但它传输的帧依然是以太网帧
-
所以,用交换机组建的网络,依然可以叫做以太网
Ethernet V2帧的格式
- 首部:目标MAC + 源MAC + 网络类型
- 以太网帧:首部 + 数据 + FCS
- 数据的长度至少:64-目标MAC(6)-源MAC(6)-类型(2)-FCS(4) = 46字节
Ethernet V2标准
- 当数据部分的长度小于 46 字节时,数据链路层会在数据的后面加入一些字节填充
- 接收端会将添加的字节去掉
网卡
- 网卡接收到一个帧,首先会进行差错校验,如果校验通过则接收,否则丢弃
- Wireshark抓到的帧没有FCS ,因为它抓到的是差错校验通过的帧(帧尾的FCS会被硬件去掉)
- Wireshark抓不到差错校验失败的帧
2、PPP协议
- 帧开始符、帧结束符:0x7E
- Address 字段:图中的值是 0xFF,形同虚设,点到点信道不需要源MAC、目标MAC地址
- Control 字段:图中的值是 0x03,目前没有什么作用
- Protocol 字段:内部用到的协议类型
- PPP协议 —— 字节填充