### 数据链路层 Data Link - 链路: 从一个节点到相邻节点到一段物理线路(有线或无线),中间没有其他交换节点(网桥和集线器除外) - 数据链路层的数据叫 `帧` - 不同类型的数据链路,所用的通信协议可能是不同的 - 广播信道: CSMA/CD协议,比如同轴电缆,集线器等组成的电路 - 点对点信道: PPP协议,比如两个路由器之间的信道 ### 数据链路层的3个基本问题 - 封装成帧 - 透明传输 - 差错检验 #### 封装成帧 ![image](https://user-images.githubusercontent.com/39154923/135198947-d37752b6-ae36-441e-ab79-6e78b1e94272.png) - 帧的数据部分就是网络层传递下来的数据包 - 最大传输单元MTU,每一种数据链路层协议都规定了所能传送的帧的数据长度上限 - 以太网的MTU为1500字节 #### 透明传输 ![image](https://user-images.githubusercontent.com/39154923/135201189-b0dc94dc-2f1d-4bc0-8f85-9cf6ea3f795f.png) - SOH帧开始符 - EOT帧结束符 - 数据部分一旦出现帧开始或者帧结束符就进行转义 ![image](https://user-images.githubusercontent.com/39154923/135202743-71b37be3-7dc6-43a7-9f65-77e16dec6267.png) #### 差错检验 ![image](https://user-images.githubusercontent.com/39154923/135203157-2bca9d97-7e0d-40f6-9bc0-b22d64bb9cf8.png) - FCS是根据数据部分 + 首部计算得出来的 ### CSMA/CD协议 - Carrier Sense Multiple Access wich Collision Detectio 载波监听多路访问/冲突检测 - 使用这个协议的网络可以称为是以太网,它传输的是以太网帧,格式有Ethernet V2标准,IEEE的802.3标准,使用最多的是前者 - 为了能够正常检测正在发送的帧是否产生了冲突,以太网的帧至少要64字节 - 用交换机组建的网络,支持全双工通信,不需要使用CSMA/CD协议,但是传输的帧依然是以太网帧,组建的网络依然可以叫以太网 - 数据的长度至少是46字节,数据长度不够时数据链路层会进行填充,接收端会去掉填充的字节 - 以太网帧的数据长度时46-1500,整个以太网帧的长度时64-1518 ![图片](https://user-images.githubusercontent.com/39154923/136492904-f1d5fd45-7ab7-489f-bf68-38617daa9bf1.png) ### 点对点PPP协议(Point to Point Protocol) ![image](https://user-images.githubusercontent.com/39154923/136524602-5f2fbe65-20de-4a37-a2dc-6e59903d01a2.png) - Address字段, 0xFF,点到点通信不需要源mac地址和目标mac地址 - Control字段,0x03 目前没有用到 - Protocal PPP协议使用到的内部协议 - 帧开始符和帧结束符 0x7E - PPP帧封装的网络层数据和以太网帧是一样 ### 物理设备 - 网卡:工作在物理层,负责fcs差错检验,通过后会删除fcs内容 - 交换机:二层交换机,数据链路层,知道双方的mac地址 - 集线器:工作在物理层 - 路由器:三层,网络层,知道双方的ip地址