# 数据链路层
概念:在物理层提供比特传输服务的基础上,在通信的实体之间建立数据链路连接。传送以帧为单位的数据,采用差错控制、流量控制方法、使有差错的物理线路变成无差错的数据链路。
相关协议:
- 点对点协议(Point-to-Point Protocol,PPP)
- 以太网协议(Ethernet)
- 高级数据链路控制协议(High-level Data Link Control,HDLC)
- 帧中继(Frame Relay)
- 异步传输模式(Asynchronous Transfer Mode)
# 理解
解读: 对于下图,我读出 010100111101001011,然后从第 3 位开始读起,读出两字节 01001111 和 01001011,十进制数字对应 79 和 75,字母对应 ASCLL 码表中的 O 和 K,也就是 OK 的意思。
疑问: 你凭什么从第 3 位开始读起,而不是第 1 位呢?第 2 位呢?如果是第 2 位开始读就是 83 和 210。如果是第 3 位开始读就是 167 和 165。
补充: 理由是我喜欢从第 3 位开始读起。是不是很没说服力?😂 那如果大家都随心所欲的读,那结果就完全不同了。所以需要制定大家认同的一个规范,来规定是 从哪读,读到哪,这样一来协议就产生了。从哪读,读到哪 这之间的数据块又称为 帧。
TIP
1 字节 = 8 比特
# 高级数据链路控制协议
# 理解
问题: 从哪读,读到哪,也就是如何包装 帧。
回答: 当遇到连续 6 个 1 ,即 01111110 标志字段时,就作为开始读取的地方。结尾也需要一个标志字段。该过程也是 封装帧 的过程。这样看起来就像只有头尾的标志字段,夹着中间 透明数据 的帧在传输。
疑问: 后半段也有01111110
,为什么不从那开始?
回答: 发送端不仅需要在数据前后添加标志字段,还需要对数据进行检查。如果有连续 6 个 1 出现,即 01111110,那就在第 7 位插入一个 0。接收端在解析的时候,如果发现连续 5 个 1,即 011111,就需要判断第 7 位是否为 0。如果是 0,则将 0 删除;如果是 1 并且第 8 位是 0,则认为是标志字段。
# 结构
- 标志字段(8bit):二进制 01111110。
- 地址字段(8bit):通信对方的地址。
- 控制字段(8bit):用于区分帧的类型(数据帧、监控帧、无编号帧)
- 信息字段(可变):数据
- 帧校验序列(16bit):校验码。对地址字段、控制字段、信息字段进行 循环冗余校验。
TIP
其他字段不细讲,有兴趣可以自行了解。
# 以太网协议
# 理解
问题: 从哪读,读到哪,也就是如何包装 帧。
回答:
- 在发送数据之前,必须有一个静默期,即电压为 0,维持 96bit。用于区分上一帧和下一帧。
- 紧接着周期交替二进制 1 和 0,维持 56bit。可以用来同步时钟。
- 紧接着是二进制 10101011 的标志位。最后 11 就是通知对方,后面都是数据了。
补充: 理论上是可以发送无限大的数据(无限长的帧),但是如果万一传输过程中出错,那这一整个巨型帧就没用了,只能等待帧重发。所以规定 46 字节 到 1500 字节 之间是比较合理的。如果数据包实际长度小于 46 字节,那么会给这个数据包后面会自动补充 0,来达到规定的字节数。
# 传输
问题: 主机 A 如何发送信息给主机 C?主机 A 如何发送信息给以太网中所有主机?
回答: 如下图,发送以太网帧,将主机 A 的 物理地址 填入 源地址 中。如果是发送到主机 C,则将主机 C 的 物理地址 填入 目标地址。如果是发送到以太网所有主机,则将广播地址 (十六进制 ff:ff:ff:ff:ff:ff) 填入 目标地址。(数据链路层)
TIP
物理地址 也叫 MAC 地址。MAC 地址 的长度为 48 bit(6 字节),通常表示为 12 个 十六进制数,如:00-16-EA-AE-3C-40。其中前 6 位十六进制数 00-16-EA 代表网络硬件制造商的编号,它由 IEEE(电气与电子工程师协会)分配,而后 6 位十六进制数 AE-3C-40 代表该制造商所制造的某个网络产品(如网卡)的系列号。只要不更改自己的 MAC 地址,MAC 地址在世界是惟一的。形象地说,MAC 地址就如同身份证上的身份证号码,具有唯一性。
# 结构
- 前同步码(7 字节):交替出现的 0 和 1,作用是提醒接受端有数据帧到来,并且可以调整自身的时钟频率,前同步码属于物理层添加。
- 帧首定界符(1 字节):二进制 10101011。最后的 11 是提醒接收端,信息要来了。
- 目标地址(6 字节):接收方的物理地址(MAC 地址)。
- 源地址(6 字节):发送方的物理地址(MAC 地址)。
- 长度或类型(2 字节):规定包含的数据按哪些协议解析。
- 数据(可变):包含被上层协议封装的数据,最小长度 46 字节,最大长度 1500 字节。
- 帧校验序列字段-CRC(4 字节):循环冗余码校验值。
长度或类型 的常用类型如下:
十六进制值 | 协议 |
---|---|
0800 | IPv4 |
0806 | ARP |
8864 | PPPoE |
8100 | 802.1Q |
86DD | IPv6 |
WARNING
以太网是一种计算机局域网技术。IEEE 组织的 IEEE 802.3 标准制定了以太网的技术标准,它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网是目前应用最普遍的局域网技术,取代了其他局域网技术,例如:如令牌环、FDDI 和 ARCNET。
# 点对点协议
为在点对点连接上传输多协议数据包提供了一个标准方法。如下图
# 结构
- 标志字段-F(1 字节):二进制 01111110。
- 地址字段-A(1 字节):一般是二进制 11111111,也是广播地址。因为是点对点,是可以知道对方地址的。
- 控制字段-C(1 字节):默认为二进制 00000011,表示这是一个无序号帧。
- 协议字段(2 字节):规定包含的数据按哪些协议解析。
- 信息字段-信息部分(可变):包含被上层协议封装的数据,不超过 1500 字节。
- 帧校验序列字段-FCS(2 字节):循环冗余校验码。
TIP
PPP 帧结构和 HDLC 帧结构很相似。