> For the complete documentation index, see [llms.txt](https://yangsx95.gitbook.io/notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yangsx95.gitbook.io/notes/computer-science/ji-suan-ji-wang-luo/shu-ju-lian-lu-ceng.md).

# 数据链路层

以数据链路层的角度来看传输信道，可以将信道分为两种类型：

1. 点对点信道：使用一对一的点对点通信方式
2. 广播信道：使用一对多的广播通信方式，过程比较复杂，需要专用的协议来协调

互联网中两台主机的通讯流程：

![](https://2351062869-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7b2CdwBN9liniVJpfEAc%2Fuploads%2Fgit-blob-fe170aaa38745f2f05027d972aeb4db9d240d86d%2F2022-05-05-17-17-58-image.png?alt=media)

![](https://2351062869-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7b2CdwBN9liniVJpfEAc%2Fuploads%2Fgit-blob-a8db22577d79d2391d97cec885798097d5583b7c%2F2022-05-05-17-18-49-image.png?alt=media)

## 使用点对点信道的数据链路层

### 数据链路和帧

* 链路(物理链路)：从一个结点到相邻结点的一段物理线路，中间没有任何其他的交换节点
* 数据链路(逻辑链路)：把实现了这些通信协议的硬件和软件加到链路上，就构成了数据链路(物理线路+协议)，逻辑链路中可能包含多个物理链路

**帧**：

1. 是在点对点信道数据链路层的协议数据单元
2. 数据链路层会将网络层交下来的数据构成帧，然后发送到链路上
3. 或者在接收到物理层传递过来的帧的时候，将数据从帧中取出发送给网络层

数据链路层的主要通讯流程：

![](https://2351062869-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7b2CdwBN9liniVJpfEAc%2Fuploads%2Fgit-blob-fbec1af7dc4347ef5c1d7a27b7a1aa6ccf40dd6f%2F2022-05-05-17-41-54-image.png?alt=media)

1. 结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧
2. 结点A把封装好的帧发送给结点B的数据链路层
3. 若结点B的数据链路层收到的帧无差错，则从收到的帧中提取IP数据报上交给网络层；否则丢弃这个帧

特点：数据链路层不用考虑物理层如何实现，所以就相当与对等层水平传输

### 三个基本问题

#### 封装成帧

封装成帧：就是在一段数据前后分别添加首部和尾部，确定帧的界限，然后就构成了一个帧

#### 透明传输

#### 差错检测

## 使用广播信道的数据链路层
