撰稿:未来侦察班
咨询:aynaixibaba

TCP/IP是必修课,物理层Phy、数据链路层、网络层、传输层、应用层五层... 本节接着聊数据链路层。
1. 数据链路层
从数据链路层开始,就出现"帧Frame",能够更好地适配高层协议。其主要由LLC逻辑链路层和MAC媒体访问控制层组成。
简单类比,MAC+Phy就像在河两岸搭建的一座桥,建材可选光纤、双绞线等;而逻辑链路LLC就像一个物流公司,组建多支运输队,大公司可以雇佣整支车队,而小公司可以把包裹统一寄存再由运输公司统一发车。
2. 数据链路层详解
2.1 核心作用
数据链路层DLL由LLC和MAC两部分组成,向上对接网络层,向下连接物理层Phy。了解蓝牙协议背景就会发现,LLC层对应L2CAP处理逻辑链路,MAC层也类似LMP和部分BB层。

LLC逻辑链路控制层 负责SAP多路复用,建立及管理逻辑链路,SAP功能被以太网帧更加简洁的type类型逐渐挤占绝大多数应用领域。

MAC媒体访问控制层,具有通信介质相关性,携带6字节48位的mac地址,设备间网络通信都会依赖mac地址,即便是高层协议ip地址四元组建立网络连接,但在底层依然要查表找到ip对应的mac物理地址。
MAC主要功能是承上启下,细分4个功能点如下:
- 封装成帧,物理层phy中是串流,没有帧的概念,数据链路层将收到的网络层数据包作为自己的数据段,再加上帧头帧尾就组成帧,通过phy串流发给对端设备。

还是桥的例子,用户发快递(用户层),写上收货地址(传输层),物流公司分类打包(网络层)相同区域装同一个集装箱,最后装在卡车上(数据链路层),卡车行驶在公路桥上(物理层),寄给收件人(对端设备)。
- 透明传输,乍一听不太好理解。简单解释就是高层协议无论用传输什么内容,数据链路层都不会出错。但事实上帧头帧尾都有。不过透明传输是PPP协议专属,需要用特殊字段标记帧开始和结尾。
举个例子,在家里每次叫"小爱同学"小米电视就会回应,但恰巧家里的小猫也叫小爱同学呢,事情就有意思起来,电视和小猫都很蒙圈,主人到底叫的谁。
以太网II帧会在物理层加上前导码和帧标记,并不依赖特殊字段标记判定开始结束,线缆静默作为结束条件,因此天生就是透明传输。
- 流量控制,数据传输需要双方支持,一旦一方出现拥堵,可能就需要通知对方暂停传输,以防数据丢失。支持停止-等待协议和滑动窗口协议两种流控策略。新版IEEE 802.3x引入PAUSE帧。
- 介质访问,CSMA/CD(以太网)和 CSMA/CA(Wi-Fi)是最常见的访问控制策略,目前wifi中依然在广泛使用。
2.2 帧详解
以太网帧Ethernet V2格式

目的地址是对方的地址也就是接收帧的设备地址,源地址是本机地址,告诉对方谁给它发的。类型字段指明高层协议类型(如下图),帧校验检查数据完整性。

802.3帧
在Ethernet II未统治江湖前,IEEE给出的通信方案是802.3帧,高层协议类型由LLC层增加SAP服务接入点,接收方DSAP和发起方SSAP以及控制字段。

而mac层只管传输,使用Length长度字段替代Type的2字节。相比之下,Ethernet II结构就简单很多,关键是功能也非常完整。最终IEEE推出802.3 SNAP将Ethernet II帧收编。

PPP点对点协议
全称是Point-to-Point Protocol,没有源地址和目的地址,无法自由寻址只能固定两个设备间通信,常用的拨号上网等场景,后来扩展出PPPoE等协议类型。它是依赖帧头帧尾特殊字符判定整个帧,因此数据段(图中IP数据报)是不能出现0x7E等字节的,因此需要添加转义字符。

对比之下,数据链路层的mac地址用于设备间寻址,Type类型对接ipv4协议,应用层Tcp/udp port对接最终的应用app完整的网络框架。Ethernet II更具通用性和简洁易用。
2.3 教材
扩展下教材如《计算机网络》的数据链路章节详解,会介绍PPP网络、CSMA/CD、总线网、集线器等等,虽然它们技术长河中略显久远,但其迭代延伸依然活跃在当下网络中,如PPPoE在宽带入网认证、CSMA/CA在无线通信领域等。
至少研究CSMA/CD通信原理,就正好读懂现代网络中以太网帧数据段最小长度46字节的原因:碰撞检测判定条件依赖时间,然后时间换算成数据长度对应最小值64字节,并且以太网帧头帧尾18字节,刚好对应46字节的阈值。
3. 设备分类
网络设备可以按照网络协议层次数量分类:完整协议栈5层、部分协议栈2层或3层和特殊网络设备。如下图左右两端的主机具备5层协议栈,中间接入路由器,路由器不会解析第四和五层内容,仅网络层为中心转发数据包。

- 完整协议栈设备 终端设备网卡,如电脑intel无线网卡、瑞昱的有线网卡和所在软件系统windows或ubuntu等一起构成从应用层到物理层的完整协议栈。
- 部分协议栈设备 中继设备,如路由器是三层网络层到物理层,普通交换机只有两层数据链路层到物理层,高级交换机可能也支持网络层。
- 特殊设备 两种不同介质之间转换,如蓝牙PAN协议数据包,L2CAP层模拟网卡设备,系统收发数字信号的网络包转换成蓝牙的模拟信号传递到对端PAN设备。
另外像USB设备可以模拟出网卡,直接对接网络层,ifconfig可以看到usb0网卡。实现usb线传输网络数据包。两个设备也可以通过网络层直连,这样就没有Phy物理层通信。