# 数据链路层

概念:在物理层提供比特传输服务的基础上,在通信的实体之间建立数据链路连接。传送以帧为单位的数据,采用差错控制、流量控制方法、使有差错的物理线路变成无差错的数据链路。

相关协议:

  1. 点对点协议(Point-to-Point Protocol,PPP)
  2. 以太网协议(Ethernet)
  3. 高级数据链路控制协议(High-level Data Link Control,HDLC)
  4. 帧中继(Frame Relay)
  5. 异步传输模式(Asynchronous Transfer Mode)

# 理解

数据图

解读: 对于下图,我读出 010100111101001011,然后从第 3 位开始读起,读出两字节 0100111101001011,十进制数字对应 7975,字母对应 ASCLL 码表中的 OK,也就是 OK 的意思。

疑问: 你凭什么从第 3 位开始读起,而不是第 1 位呢?第 2 位呢?如果是第 2 位开始读就是 83210。如果是第 3 位开始读就是 167165

补充: 理由是我喜欢从第 3 位开始读起。是不是很没说服力?😂 那如果大家都随心所欲的读,那结果就完全不同了。所以需要制定大家认同的一个规范,来规定是 从哪读,读到哪,这样一来协议就产生了。从哪读,读到哪 这之间的数据块又称为

TIP

1 字节 = 8 比特

# 高级数据链路控制协议

# 理解

问题: 从哪读,读到哪,也就是如何包装

回答: 当遇到连续 61 ,即 01111110 标志字段时,就作为开始读取的地方。结尾也需要一个标志字段。该过程也是 封装帧 的过程。这样看起来就像只有头尾的标志字段,夹着中间 透明数据 的帧在传输。

数据图HDLC

疑问: 后半段也有01111110,为什么不从那开始?

数据图HDLC-提问

回答: 发送端不仅需要在数据前后添加标志字段,还需要对数据进行检查。如果有连续 61 出现,即 01111110,那就在第 7 位插入一个 0。接收端在解析的时候,如果发现连续 51,即 011111,就需要判断第 7 位是否为 0。如果是 0,则将 0 删除;如果是 1 并且第 8 位是 0,则认为是标志字段。

# 结构

HDLC结构图

  • 标志字段(8bit):二进制 01111110
  • 地址字段(8bit):通信对方的地址。
  • 控制字段(8bit):用于区分帧的类型(数据帧、监控帧、无编号帧)
  • 信息字段(可变):数据
  • 帧校验序列(16bit):校验码。对地址字段、控制字段、信息字段进行 循环冗余校验

TIP

其他字段不细讲,有兴趣可以自行了解。

# 以太网协议

# 理解

问题: 从哪读,读到哪,也就是如何包装

回答:

  1. 在发送数据之前,必须有一个静默期,即电压为 0,维持 96bit。用于区分上一帧和下一帧。
  2. 紧接着周期交替二进制 10,维持 56bit。可以用来同步时钟。
  3. 紧接着是二进制 10101011 的标志位。最后 11 就是通知对方,后面都是数据了。

以太帧

补充: 理论上是可以发送无限大的数据(无限长的帧),但是如果万一传输过程中出错,那这一整个巨型帧就没用了,只能等待帧重发。所以规定 46 字节1500 字节 之间是比较合理的。如果数据包实际长度小于 46 字节,那么会给这个数据包后面会自动补充 0,来达到规定的字节数。

# 传输

问题: 主机 A 如何发送信息给主机 C?主机 A 如何发送信息给以太网中所有主机?

回答: 如下图,发送以太网帧,将主机 A 的 物理地址 填入 源地址 中。如果是发送到主机 C,则将主机 C 的 物理地址 填入 目标地址。如果是发送到以太网所有主机,则将广播地址 (十六进制 ff:ff:ff:ff:ff:ff) 填入 目标地址。(数据链路层)

Ethernet传输

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 地址就如同身份证上的身份证号码,具有唯一性

# 结构

Ethernet

  • 前同步码(7 字节):交替出现的 01,作用是提醒接受端有数据帧到来,并且可以调整自身的时钟频率,前同步码属于物理层添加。
  • 帧首定界符(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。

# 点对点协议

为在点对点连接上传输多协议数据包提供了一个标准方法。如下图

ppp

# 结构

ppp帧结构

  • 标志字段-F(1 字节):二进制 01111110
  • 地址字段-A(1 字节):一般是二进制 11111111,也是广播地址。因为是点对点,是可以知道对方地址的。
  • 控制字段-C(1 字节):默认为二进制 00000011,表示这是一个无序号帧。
  • 协议字段(2 字节):规定包含的数据按哪些协议解析。
  • 信息字段-信息部分(可变):包含被上层协议封装的数据,不超过 1500 字节。
  • 帧校验序列字段-FCS(2 字节):循环冗余校验码。

TIP

PPP 帧结构和 HDLC 帧结构很相似。