文章目录
网络分层
5 | 应用层(Application) | FTP, HTTP, SMTP, DNS, DHCP | 报文, 用户数据 |
---|---|---|---|
4 | 运输层(Transport) | TCP, UDP | 段(Segments) |
3 | 网络层(Network) | IP, ARP, ICMP | 包(Packets) |
2 | 数据链路层(Data Link) | CSMA/CD, PPP | 帧(Frames) |
1 | 物理层(Physical) | 比特流(Bits) |
物理层(Physical)
◼ 物理层定义了接口标准、线缆标准、传输速率、传输方式等
数字信号、模拟信号
◼ 模拟信号(Analog Signal)
- 连续的信号,适合长距离传输
- 抗干扰能力差,受到干扰时波形变形很难纠正
◼ 数字信号(Digital Signal)
- 离散的信号,不适合长距离传输
- 抗干扰能力强,受到干扰时波形失真可以修复
数据通信模型
◼ 局域网通信模型
◼ 广域网通信模型
信道(Channel)
◼ 信道:信息传输的通道,一条传输介质上(比如网线)上可以有多条信道
◼ 单工通信
- 信号只能往一个方向传输,任何时候都不能改变信号的传输方向
- 比如无线电广播、有线电视广播
◼ 半双工通信
- 信号可以双向传输,但必须是交替进行,同一时间只能往一个方向传输
- 比如对讲机
◼ 全双工通信
- 信号可以同时双向传输
- 比如手机(打电话,听说同时进行)
数据链路层(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)作为帧结束符
所以
◼ 数据部分一旦出现了SOH、EOT,就需要进行转义
数据链路层 - 差错检验
◼ FCS是根据数据部分 + 首部计算得出的
网卡在接收到帧之后, 会用帧的数据部分和数据链路层首部进行计算得出的值与FCS比较, 如果不同, 说明数据出错, 网卡会把数据丢掉
CSMA/CD协议
◼ CSMA/CD(Carrier Sense Multiple Access with Collision Detectio)
◼ 载波侦听多路访问/冲突检测
◼ 使用了CSMA/CD协议的网络可以称为是以太网(Ethernet),它传输的是以太网帧
- 以太网帧的格式有:Ethernet V2标准、IEEE的802.3标准
- 使用最多的是:Ethernet V2标准
◼ 为了能够检测正在发送的帧是否产生了冲突,以太网的帧至少要64字节
◼ 用交换机组建的网络,已经支持全双工通信,不需要再使用CSMA/CD,但它传输的帧依然是以太网帧
所以,用交换机组建的网络,依然可以叫做以太网
Ethernet V2帧的格式
◼ 首部:目标MAC + 源MAC + 网络类型(是IPv4还是IPv6)
◼ 以太网帧:首部 + 数据 + FCS
◼ 数据的长度至少是:64 – 6 – 6 – 2 – 4 = 46字节 46~1500 1500为MTU
Ethernet V2标准
◼ 当数据部分的长度小于46字节时
数据链路层会在数据的后面加入一些字节填充
接收端会将添加的字节去掉
◼ 长度总结
以太网帧的数据长度:46~1500字节
以太网帧的长度:64~1518字节(目标MAC +源MAC + 网络类型 + 数据 + FCS)
网卡
◼ 网卡接收到一个帧,首先会进行差错校验,如果校验通过则接收,否则丢弃
◼ Wireshark抓到的帧没有FCS ,因为它抓到的是差错校验通过的帧(帧尾的FCS会被硬件去掉)
Wireshark抓不到差错校验失败的帧
PPP协议(Point to Point Protocol)
◼ Address字段:图中的值是0xFF,形同虚设,点到点信道不需要源MAC、目标MAC地址
◼ Control字段:图中的值是0x03,目前没有什么作用
◼ Protocol字段:内部用到的协议类型
◼ 帧开始符、帧结束符:0x7E
PPP协议 - 字节填充
◼ 将0x7E替换成0x7D5E
◼ 将0x7D替换成0x7D5D