以下内容来自于小码哥"网络协议从入门到底层原理"
物理层(Physical)
- 物理层定义了接口标准, 线缆标准, 传输速率, 传输方式等
数字信号, 模拟信号
-
模拟信号
(Analog Signal)
-- 连续的信号, 适合长距离传输
-- 抗干扰能力差, 受到干扰时波形变形很难纠正 -
数字信号
(Digital Signal)
-- 离散的信号, 不适合长距离传输
-- 抗干扰能力强, 受到干扰时波形失真可以修复
数据通信模型
-
局域网通信模型
image.png
-- 注意: 网线不能超过100m
-
广域网通信模型
image.png
信道(Channel)
-
信道: 信息传输的通道, 一条传输介质上(比如网线)上可以有多条信道
-
单工通信:
-- 信号只能往一个方向传输, 任何时候都不能改变信号的传输方向
-- 比如无线电广播, 有线电视广播 -
半双工通信:
-- 信号可以双向传输, 但必须是交替进行, 同一时间只能往一个方向传输
-- 比如对讲机 -
全双工通信:
-- 信号可以同时双向传输
-- 比如手机
数据链路层(Data Link)
-
链路: 从一个节点到相邻节点的一段物理线路(有线或无线), 中间没有其他交换节点
-
数据链路: 在一条链路上传输数据时, 需要有对应的通信协议来控制数据的传输
-- 不同类型的数据链路, 所用的通信协议是可能不同的
✔️广播信道:CSMA/CD
协议(比如同轴电缆, 集线器等组成的网络)
✔️点对点信道:PPP
协议(比如2
个路由器之间的信道) -
数据链路层的
3
个基本问题:
-- 封装成帧
-- 透明传输
-- 差错检验
数据链路层-封装成帧
image.png-
帧
(Frame)
的数据部分
-- 就是网络层传递下来的数据包(IP
数据包,Packet
) -
最大传输单元
MTU(Maximum Transfer Unit)
-- 每一种数据链路层协议都规定了所能够传送的帧的数据长度上限
-- 以太网的MTU
为1500
个字节
数据链路层- 透明传输
image.png- 数据部分一旦出现了
SOH
,EOT
, 就需要进行转义:
image.png
数据链路层- 差错检验
image.png-
FCS
是根据数据部分 + 首部计算得出的
CSMA/CD
协议
-
CSMA/CD(Carrier Sense Multiple Access with Collision Detection)
-- 载波侦听多路访问/冲突检测 -
使用了
CSMA/CD
的网络可以称为是以太网(Ethernet)
, 它传输的是以太网帧
-- 以太网帧的格式有:Ethernet V2
标准,IEEE
的802.3
标准
-- 使用最多的是:Ethernet V2
标准 -
为了能够检测正在发送的帧是否产生了冲突, 以太网的帧至少有
64
个字节 -
用交换机组建的网络, 已经支持全双工通信, 不需要再使用
CSMA/CD
协议, 但它传输的帧依然是以太网帧
所以用交换机组件的网络, 依然叫做以太网
Ethernet V2
帧的格式
image.png
-
首部: 源
MAC
+ 目标MAC
+ 网络类型(是IPv4
还是IPv6
) -
以太网帧: 首部 + 数据 +
FCS
-
数据的长度至少是:
64 - 6 - 6 - 2 - 4 = 46 bytes
-
当数据部分的长度小于
image.png46
字节的时候
-- 数据链路层会在数据的后面加入一些字节填充
-- 接收端将会把添加的字节去掉
-
长度总结:
-- 以太网帧的数据长度:46~1500bytes
-- 以太网帧的长度:64~1518bytes
(目标MAC
+ 源MAC
+ 网络类型 + 数据 +FCS
)
PPP
协议(Point to Point Protocol)
image.png
-
Address
字段: 图中的值是0xFF
, 形同虚设, 点对点信道不需要源MAC
, 目标MAC
地址 -
Control
字段: 图中的值是0x03
, 目前没有什么作用 -
Protocol
字段: 内部用到的协议类型 - 帧开始符, 帧结束符:
0x7E
PPP
协议-字节填充
image.png
- 将
0x7E
替换成0x7D5E
- 将
0x7D
替换成0x7D5D
网卡
image.png- 网卡接收到一个帧, 首先会进行差错校验, 如果校验通过则接收, 否则丢弃
-
Wireshark
抓到的帧没有FCS
, 因为它抓到的是差错校验通过的帧, (帧尾的FCS
会被硬件去掉)
网友评论