### 数据链路层 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地址