计算机网络 第三章:数据链路层

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

1.1 数据链路和帧

链路:从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其他的交换结点。

数据链路:链路上必要的通信协议来控制这些数据的传输。(逻辑链路就是数据链路)

帧:点对点信道的数据链路层的协议数据单元。

点对点信道的数据链路层在进行通信时的主要步骤如下:

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

1.2 三个基本问题

1.2.1 封装成帧

封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。分组交换的一个重要概念就是:所有在互联网上传送的数据都以分组(即IP数据报)为传送单位。

当数据是由可打印的 ASCII 码组成的文本文件时,其中可打印的有 95 个,而不可打印的控制字符有 33 个。

请注意,SOH 和 EOT 都是控制字符的名称,它们的十六进制编码分别是01(二进制是00000001)和 04(二进制是00000100)。

1.2.2 透明传输

当传送的帧是用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像 SOH 或 EOT 这样的帧定界控制字符。可见不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。

但当数据部分是非 ASCII 码的文本文件时(如二进制代码的计算机程序或图像等),情况就不同了。如果数据中的某个字节的二进制代码恰好和 SOH 致 EOT 一致,就会发生错误:

1.2.3 差错检测

比特差错:比特在传输过程中可能会产生差错,1 成 0,0 成 1。

循环冗余检验 CRC:一种模2运算后的检错方法。

在数据链路层若仅仅使用循环冗余检验 CRC 差错检测技术,则只能做到对帧的无差错接受,即:“凡是接收端数据链路层接受的帧,我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错”。

2.点对点协议 PPP

2.1 PPP 协议的特点

2.1.1 PPP 协议应满足的需求

  1. 简单:对数据链路层的帧,不需要纠错,不需要序号,也不需要流量控制。
  2. 封装成帧:必须规定特殊的字符作为帧定界符。
  3. 透明性:透明传输。
  4. 多种网络层协议:在同一条物理链路上同时支持多种网络层协议的运行。
  5. 多种类型链路:除了要支持多种网络层的协议外,PPP 还必须能够在多种类型的链路上运行。
  6. 差错检测:必须能够对接收端收到的帧进行检测
  7. 检测链接状态:自动检测出链路是否处于正常工作状态。
  8. 最大传送单元:设置 MTU 最大传送单元。
  9. 网络层地址协商:PPP协议必须提供一种机制使通信的两个网络层的实体能够通过协商知道或能够配置彼此的网络层地址。
  10. 数据压缩协商:必须提供一种方法来协商使用数据压缩算法。

2.1.2 PPP 协议的组成

  1. 一个将 IP 数据报封装到串行链路的方法。PPP 既支持异步链路(无奇偶检验的8比特数据),也支持面向比特的同步链路。
  2. 一个用来建立、配置和测试数据链路连接的链路控制协议 LCP(Link ControlProtocol)。
  3. 一套网络控制协议 NCP (Network Control Protocol),其中的每一个协议支持不同的网络层协议,如 IP、OSI 的网络层、DECnet,以及AppleTalk 等。

2.2 PPP 协议的帧格式

F 标志字段
A 地址字段
C 标志字段

当信息字段中出现和标志字段一样的比特 (0x7E) 组合时,就必须采取一些措施:

见到 5 个 1,即 11111,要在后面添加一个 0。

见到 0x7E,要用转义字符 0x7D0x7E 改为 0x7D 0x5E

见到 0x7D,与转义字符相同。0x7D 改为 0x7D 0x5D

见到 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前加入一个 0x7D 字节,同时该字符的编码也要改变。例如出现 0x03,要改为 0x7D 0x23

2.2.1 字节填充

当 PPP 使用异步传输时,把每一个 0x7DE 转变成 2 字节序列 0x7D, 0x5D。

若信息字段中出现 ASCII 码的控制字符(即数值小于0x20的字符),则在该字符前加 0x7D。

2.2.2 零比特填充

当 PPP 使用同步传输(在 SONET/SDH 链路)时,只要发现有 5 个连续 1,则立即填入一个 0。

2.3 PPP 协议的工作状态

PPP 链路的起始和终止状态永远是链路静止状态

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

3.1 局域网的数据链路层

3.1.1 局域网最主要的特点

网络为一个单位所拥有,且地理范围和站点数目均有限。

3.1.2 局域网一些主要优点

  1. 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
  2. 便于系统的扩展和逐渐演变,各设备的位置可灵活调整和改变。
  3. 提高了系统的可靠性(reliability)、可用性(availability)和生存性(survivability)。

3.1.3 局域网按网络拓扑进行分类

3.1.4 局域网的共享信道

局域网使用频分、时分、波分、码分复用等,代价较高不合适。所以使用动态媒体接入控制,即多点接入。

3.1.5 动态媒体接入控制(多点接入)

特点是信道并非在用户通信时固定分配给用户。

  1. 随机接入:特点是所有的用户可随机地发送信息。但如果恰巧有两个或更多的用户在同一时刻发送信息,那么在共享媒体上就要产生碰撞(即发生了冲突),使得这些用户的发送都失败。因此,必须有解决碰撞的网络协议(CSMA/CD)。
  2. 受控接入:特点是用户不能随机地发送信息而必须服从一定的控制。这类的典型代表有分散控制的令牌环局域网和集中控制的多点线路探询(polling),或称为轮询。

随机接入的以太网将被重点讨论。受控接入则由于目前在局域网中使用得较少。

3.1.6 以太网的两个标准

DIX Ethernet V2 802.3
推出 DEC、因特尔、施乐 IEEE
时间 1980年 1983年

太网的两个标准 DIX Ethernet V2 与 IEEE 的 802.3 标准只有很小的差别,因此很多人也常把 802.3 局域网简称为“以太网”。

严格上:

  • 以太网:DIX Ethernet V2 标准的局域网
  • 802.3:802.3 标准的局域网

3.1.7 适配器的作用

计算机与外界局域网的连接是通过通信适配器(adapter)进行的。适配器本来是在主机箱内插入的一块网络接口板,这种接口板又称为网络接口卡 NIC(Network Interface Card)或简称为“网卡”。

💡 由于现在计算机主板上都已经嵌入了这种适配器,不再使用单独的网卡了,因此适配器这个术语更准确。

适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的IO总线以并行传输方式进行的。

3.2 CSMA/CD 协议

  1. 载波监听多点接入/碰撞检测 CSMA/CD
  2. 以太网发送的数据都使用曼彻斯特编码。

CSMA/CD 要点:

  • 多点接入:总线型网络
  • 载波监听:不停的检测信道
  • 碰撞检测:边发送边监听,也叫冲突检测

显然,CSMA/CD 一个站不可能同时进行发送和接收(但必须边发送边监听信道)。因此使用CSMA/CD协议的以太网不可能进行全双工通信而只能进行双向交替通信(半双工通信)。

以太网使用截断二进制指数退避(truncated binary exponential backoff)算法来确定碰撞后重传的时机。截断二进制指数退避算法并不复杂。这种算法让发生碰撞的站在停止发送数据后,不是等待信道变为空闲后就立即再发送数据,而是推迟(这叫做退避)一个随机的时间。这点很容易理解,因为如果几个发生碰撞的站都在监听信道,那么都会同时发现信道变成了空闲。如果大家都同时再重新发送,那么肯定又会发生碰撞。

💡 凡长度小于64字节的帧都是由于冲突而异常中止的无效帧。

3.3 使用集线器的星型拓扑

集线器的特点:

  1. 逻辑上仍是一个总线网,用 CSMA/CD 协议,同一时刻至多只允许一个站发送数据。
  2. 一个集线器有许多接口。
  3. 工作在物理层,每个接口仅仅简单的转发比特。
  4. 采用了专门的芯片,进行自适应串音回波抵消。

3.4 以太网的信道利用率

一个站在发送帧时出现了碰撞。经过一个争用期 $2τ$ 后($τ$是以太网单程端到端传播时延),可能又出现了碰撞。这样经过若干个争用期后,一个站发送成功了。

要提高以太网的信道利用率,就必须减小 $τ$ 与 $T0$ 之比。在以太网中定义了参数 $a$,它是以太网单程端到端时延 $τ$ 与帧的发送时间 $T0$ 之比:

$$
a=\dfrac{τ}{T_0}
$$

当 $a→0$ 时,表示只要一发生碰撞,就立即可以检测出来,并立即停止发送,因而信道资源被浪费的时间非常非常少。反之,参数 $a$ 越大,表明争用期所占的比例越大,使得信道利用率明显降低。

3.5 以太网的 MAC 层

3.5.1 MAC 层的硬件地址

MAC地址,即硬件地址、物理地址。

3.5.2 MAC 帧的格式

DIX Ethernet V2 标准:

💡 首部没有帧长度(或数据长度)字段,但是可以通过曼彻斯特编码送完毕后接口上的电压也就不再变化了,这样就能确定数据字段的结束位置。

4.拓展的以太网

4.1 在物理层拓展以太网

扩展主机和集线器之间的距离的一种简单方法就是使用光纤(通常是一对光纤)和一对光纤调制解调器。

如果使用多个集线器,就可以连接成覆盖更大范围的多级星形结构的以太网。

好处:

  1. 使这个学院不同系的以太网上的计算机能够进行跨系的通信。
  2. 扩大了以太网覆盖的地理范围。

缺点:

  1. 把多个碰撞域变成一个碰撞域。
  2. 不同系用不同以太网技术就不能用集线器连接。

4.2 在数据链路层拓展以太网

4.2.1 以太网交换机的特点

  1. 实质是一个多接口的网桥。
  2. 独占传输媒体,无碰撞地传输数据。
  3. 即插即用,交换表通过自学习算法自动逐渐建立。
  4. 速率超软件网桥,性能超集线器。

4.2.2 以太网交换机的自学习功能

查找交换表,如果有,就不再进行广播。

但有时为了增加网络的可靠性,在使用以太网交换机组网时,往往会增加一些冗余的链路。

4.2.3 从总线以太网到星型以太网

总线以太网使用 CSMA/CD 协议,以半双工方式工作。

以太网交换机不使用共享总线,没有碰撞问题,因此不使用 CSMA/CD 协议,而是以全双工方式工作,但是帧结构未改变,仍然采用以太网的帧结构。

4.3 虚拟局域网

虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的计算机属于哪一个 VLAN。

💡 虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网。

例如,计算机 $B_1$~$B_3$ 同属于虚拟局域网 VLAN2。当 $B_1$ 向工作组内成员发送数据时,$B_2$ 和 $B_3$ 将会收到广播的信息,$A_1$ 、$A_2$ 和 $C_1$ 都不会收到。

VLAN 的以太网帧的首部增加了4个字节。最后的 12 位是该虚拟局域网 VLAN 标识符 VID,它唯一地标志了这个以太网帧属于哪一个 VLAN。

5.高速以太网

5.1 100BASE-T 以太网

100BASE-T 是在双绞线上传送 100 Mbit/s 基带信号的星形拓扑以太网,仍使用 IEEE802.3 的 CSMA/CD 协议。

5.2 吉比特以太网

吉比特以太网的标准 IEEE 802.3z 有以下几个特点:

  1. 允许在1 Gbit/s 下以全双工和半双工两种方式工作。
  2. 使用 IEEE 802.3 协议规定的帧格式。
  3. 在半双工方式下使用 CSMA/CD 协议,而在全双工方式不使用 CSMA/CD 协议。
  4. 与 10BASE-T 和 100BASE-T 技术向后兼容。

5.3 10吉比特以太网和更快的以太网

10GE 的帧格式与 10 Mbit/s,100 Mbit/s 和 1Gbit/s 以太网的帧格式完全相同,并保留了 802.3 标准规定的以太网最小帧长和最大帧长。这就使用户在将其已有的以太网进行升级时,仍能和较低速率的以太网很方便地通信。

10GE 只工作在全双工方式,因此不存在争用问题,当然也不使用 CSMA/CD 协议。这就使得 10GE 的传输距离大大提高了(因为不再受必须进行碰撞检测的限制)。

5.4 使用以太网进行宽带接入

把 PPP 协议中的 PPP 帧再封装到以太网中来传输。这就是 1999 年公布的 PPPoE(PPP over Ethernet),意思是“在以太网上运行 PPP”。现在的光纤宽带接入 FTTx 都要使用PPPoE的方式进行接入。


计算机网络 第三章:数据链路层
https://pudding.nousbuild.com/computer-network-3/
作者
Haoning Wu
发布于
2022年5月7日
更新于
2024年10月14日
许可协议