这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

数据链路层

在选择题中考察,个别年份也在大题中考察过,需熟练掌握介质访问控制的相关方法。

学习思维导图:

# 数据链路层

## 数据链路层的功能

## 组帧

## 差错控制

- 检错编码
- 纠错编码

## 流量控制和可靠传输机制

- 流量控制、可靠传输和滑动窗口
- 停等协议
- 回退N帧
- 选择性重传协议

## 介质访问控制

- 信道划分
- 随机访问:ALOHA, CSMA, CSMA/CD, CSMA/CA
- 轮询访问

## 局域网

- 基本概念和体系结构
- 以太网和IEEE 802.3
- 无限局域网和IEEE 802.11
- VLAN

## 广域网

- 基本概念
- PPP协议

## 数据链路层设备

- 以太网交换机和工作原理

数据链路层功能

  1. 封装数据帧(Frame Encapsulation):
    • 数据链路层将来自网络层的数据包封装成数据帧,这包括将源和目标地址添加到帧头部,以便在物理介质上的传输。
  2. 数据帧传输(Frame Transmission):
    • 数据链路层负责将数据帧从一个物理节点传输到另一个物理节点。这可能涉及到点对点的传输(例如,以太网)或多点广播传输(例如,Wi-Fi)。
  3. 物理地址寻址(Physical Addressing):
    • 数据链路层使用物理地址(通常是MAC地址)来标识设备。这些地址用于确定数据帧的目标设备。
  4. 帧同步和定界(Frame Synchronization and Framing):
    • 数据链路层确保接收端可以正确识别和分离不同的数据帧。这通常通过在帧的起始和结束位置使用特殊的比特模式来实现。
  5. 流量控制(Flow Control):
    • 数据链路层可以控制发送端的数据传输速率,以防止接收端不堪重负而丢失数据。这确保了适当的数据流量管理。
  6. 差错检测和纠正(Error Detection and Correction):
    • 数据链路层使用差错检测技术(如CRC校验)来检测帧在传输过程中是否受到损坏。一些数据链路层协议还可以进行错误纠正,尝试修复损坏的数据。

1 - 组帧

掌握几种组帧方法,重点掌握首位定界字符法、零比特填充法,可能在选择题中考察。

数据链路层的主要功能就是组帧

帧(frame)代表数据链路层的数据发送单位,在接收到来自于网络层的报文(packet)时如何为其添加帧头和帧尾,并且以何种方式进行帧定界(接收方区别连续不同的帧)。

组帧的关键就在于帧定界,也就是对于接收方来说,它能够以某种方式区分连续收到的不同帧。 从这个角度出发,组帧方式可以被分为以下几种:

字符计数法

字符计数法在帧首部使用计数字段来表明帧内字符数量。

当接收方读取帧时,根据读取帧开头的一部分内容,即可得知当前帧的长度是多少,这样就

5
6
7
8
9
8
0
1
2
3
4
5
6
5
4
5
6
7
5
1
2
3
4
字符计数法
Frame 1
5 Characters
Frame 2
5 Characters
Frame 3
8 Characters
Frame 4
5 Characters
字符数量

首位定界字符法

首位定界字符法即 使用特殊控制字符标志帧的开始和结束

但是使用这种方式可能出现如下问题:就是 首位定界字符 可能会在帧内部出现,这个时候就会造成歧义。

所以当特殊字符出现在帧的数据部分时,需要用转义字符ESC来对特殊字符进行转义,同样,ESC出现在数据部分同样需要转义。

Payload Field
Trailer
FLAG
FLAG
Header
A
FLAG
B
A
FLAG
B
ESC
A
ESC
B
A
ESC
B
ESC
A
ESC
B
FLAG
A
ESC
B
ESC
FLAG
ESC
首尾定界字符法
定界字符
帧的格式
定界字符
帧的原始数据
经过转义之后的数据

以上图为例,假设我们使用 FLAG 作为首位定界字符的话(注意这里 FLAG 只是字符名称,不是表示字符是 FLAG),那么当 FLAG 出现在数据部分时,我们需要对 FLAG 进行转义,需要注意的是,因为我们使用 ESC 作为转义字符,所以当数据中出现 ESC 时,我们也需要对转义字符自己进行转义。

零比特填充法

零比特填充法(Bit Stuffing)与首位定界字符法思路类似。

01111110 作为一个新的数据帧的开头,这里的关键在于要对数据帧内容中与 01111110 相同的部分进行转义,转义的方式是如果碰到11111,就在后边添加一个0,接收方在处理接收到的数据时,需要进行反向处理,如果在数据部分碰到111110时,就要删除这个0。

在传送的比特流中可以传送任意比特组合,而不会引起对帧边界的判断错误。零比特填充法很容易由硬件来实现,性能优于字符填充法。

对于零比特填充法,需要记住 01111110 这种开头的比特填充方式 以及 具体如何进行转义。

Frame
0111 1110
Frame
0111 1110
0111101111110001
01111011111010001
零比特填充法
Frame 1
Frame 2
帧的原始数据
转义后数据
发送方在连续5个1之后填充一个0
接收方进行反向处理,得到原始数据

违规编码法

违规编码法(Physcial Layer Coding Violations)使用特殊电平进行定界。比如,曼彻斯特编码将数据比特“1”编码为“高-低”电平,将比特“0”编码为“低-高”电平对,而“高-高”电平对和“低-低”电平对是没有被使用的,所以可以用这两个电平进行帧定界。

编码方式详见 编码和调制

2 - 差错控制

本节内容比较复杂,尤其是涉及到CRC和海明码的具体细节,掌握检错和纠错的大致流程即可,可能在选择题中考察。

分类

  • 检错编码:奇偶校验码、循环冗余码
  • 纠错编码:海明码

奇偶校验码

奇偶校验码(Parity Check Code)是一种错误检测机制,通常用于数据传输中,以检测传输过程中的单比特错误。奇偶校验码通过在数据中添加一个额外的比特(校验比特)来实现。这个校验比特的值被设置为确保数据中的所有比特(包括校验比特)的总数是奇数或偶数,具体取决于所选择的奇偶性规则。

奇偶校验码有两种常见的类型:奇校验和偶校验。

  1. 奇校验(Odd Parity):在奇校验中,校验比特被设置为确保数据中的所有比特的总数(包括校验比特)为奇数。如果在传输过程中某个比特发生了错误,导致总比特数变为偶数,接收端将检测到错误。
  2. 偶校验(Even Parity):在偶校验中,校验比特被设置为确保数据中的所有比特的总数(包括校验比特)为偶数。如果在传输过程中某个比特发生了错误,导致总比特数变为奇数,接收端将检测到错误。

奇偶校验的工作原理是发送端计算数据中所有比特的总数,并根据所选的奇偶性规则设置校验比特的值。接收端在接收数据后再次计算所有比特的总数,包括校验比特,然后检查总数是否满足所选的奇偶性规则。如果总数不符合规则,接收端将检测到错误。

循环冗余码

循环冗余校验(CRC)是一种常用的数据完整性校验方法,主要用于数据传输的错误检测。CRC 的核心思想是将数据看作多项式的系数,并用特定的生成多项式进行除法操作,得到的余数即为 CRC 值。

CRC 校验大致流程:

  • 生成多项式:CRC 的核心是一个生成多项式,通常用二进制表示。这个多项式是事先定义好的,并且在发送端和接收端都必须知道。
  • 帧校验码计算:为了计算 CRC 校验码,发送端将数据帧和生成多项式进行除法运算,得到余数,然后将余数附加到数据帧的末尾。如果生成多项式是 n 位长,那么 CRC 校验码将是 n-1 位长。
  • 传输:将 CRC 校验码附加到数据帧的尾部,发送至接收端。
  • 接收端校验:接收端接收到数据帧后,也执行相同的 CRC 校验操作。它将接收到的数据帧与生成多项式进行除法运算,得到一个余数。如果余数为零,表示数据帧没有错误。如果余数不为零,表示数据帧存在错误。
Data
Divisor
000....0
CRC
Sender
Data
CRC
Data
CRC
Divisor
Remainder
Receiver
n bits
n-1 bits
zero accept
non-zero reject

以一个实际例子说明 CRC 校验过程

假设我们要发送的数据是:1010001101

我们选择的生成多项式是:110101,对应的是 $x^5 + x^4 + x^2 + 1$

发送方操作:

  1. 为了进行校验码计算,首先在原始数据的尾部添加 k−1 个零(其中 k 是生成多项式的位数,这里是 4),所以数据变成了:1010001101 00000
  2. 使用生成多项式除以这个新的数据。实际上,我们使用二进制的异或操作来进行模 2 除法。
  3. 计算得到的余数就是 CRC。
              110101011
       ------------------
110101 | 101000110100000
         110101
         ------
          111011
          110101
          ------
            111010
            110101
            ------
              111110
              110101
              ------
                101100
                110101
                ------
                 110010
                 110101
                 ------
                   01110

将计算得到 CRC 01110 添加到数据后面一起发送,接收方接收到的数据为 101000110101110

接收方接收到数据后进行校验,计算过程如下:

              110101011
       --------------------------------------
110101 | 101000110101110
         110101
         ------
          111011
          110101
          ------
            111010
            110101
            ------
              111110
              110101
              ------
                101111
                110101
                ------
                 110101
                 110101
                 ------
                      0

计算得到余数为零,表示数据帧没有错误。

海明码

海明码(Hamming Code)是一种用于错误检测和纠正的编码方案,通常用于数据传输和存储系统中。它的主要目标是检测和纠正数据中的单比特错误。

海明码的核心思想是在数据位之间插入一定数量的校验位(也称为奇偶校验位),使得每个校验位都负责检查一组特定的位。校验位的数量取决于数据位的数量,并且它们的位置通常是2的幂次(即第1位、第2位、第4位……)。

以一个 实例 说明海明码的 生成和纠正 过程:

步骤 1:确定校验位数量

假如我们的数据是 $1011$ ,也就是 $4$ 位。根据海明码的原则,我们需要确定足够的校验位 $r$ 来满足以下条件:

$2^r \ge k + r + 1$

对于 $k = 4$ (数据位),我们找到最小的 $r$ 为 $3$

步骤 2:放置数据位

首先放置数据位 $d$ :

  • 第 $3$ 位($2^0+2^1$): 数据位 $d_1$
  • 第 $5$ 位($2^0+2^2$): 数据位 $d_2$
  • 第 $6$ 位($2^1+2^2$): 数据位 $d_3$
  • 第 $7$ 位($2^0+2^1+2^2$): 数据位 $d_4$

将校验位( $p$ )插入到数据位中的适当位置。校验位位置通常是 $2$ 的幂( $1, 2, 4, 8, …$ )。

位置1234567
海明码$p_1$$p_2$$d_1$$p_3$$d_2$$d_3$$d_4$
数据--$1$-$0$$1$$1$

步骤 3:计算校验位

  • $p_1 $ 检查位置 $1$ 、 $3$ 、 $5$ 、 $7$ 的位,因为它们的二进制表示中,最右边的位是 $1$ 。所以 $p_1 = d_1 \oplus d_2 \oplus d_4 = 1 \oplus 0 \oplus 1 = 0$ ,所以 $p_1 = 0$ 。
  • $p_2 $ 检查位置 $2$ 、 $3$ 、 $6$ 、 $7$ 的位,因为它们的倒数第二位是 $1$ 。这些位的异或值为 $p_2 = d_1 \oplus d_3 \oplus d_4 = 1 \oplus 1 \oplus 1 = 1$,所以 $p_2 = 1$ 。
  • $p_3 $ 检查位置 $4$ 、 $5$ 、 $6$ 、 $7$ 的位,因为它们的倒数第三位是 $1$ 。这些位的异或值为 $p_3 = d_2 \oplus d_3 \oplus d_4 = 0 \oplus 1 \oplus 1 = 0$,所以 $p_3 = 0$ 。

步骤 4:生成海明码

位置1234567
海明码$p_1$$p_2$$d_1$$p_3$$d_2$$d_3$$d_4$
数据$0$$1$$1$$0$$0$$1$$1$

所以, $1011$ 的 $(7,4)$ 海明码是 $0110011$ 。任何一位的单一错误都可以通过分析校验位来检测并纠正。

步骤 5:检测和纠正错误

假设在传输过程中第二位出现了错误,接收的码变为 $0010011$ 。接收者现在要检查每个校验位:

  • $p_1 = d_1 \oplus d_2 \oplus d_4 = 1 \oplus 0 \oplus 1 = 0$ (没有变化)
  • $p_2 = d_1 \oplus d_3 \oplus d_4 = 1 \oplus 1 \oplus 1 = 1$ (错误)
  • $p_3 = d_2 \oplus d_3 \oplus d_4 = 0 \oplus 1 \oplus 1 = 0$ (没有变化)

校验位 $p$ _ $2$ 错误,这告诉我们位模式 $ 2, 3, 6, 7 $ 中的某个位出错。因为只有 $p_2$ 指示出错误,我们可以断定是第 $2$ 位出错了。

要纠正这个错误,只需要改变第二位:

从:0 1 1 0 0 1 1
到:0 0 1 0 0 1 1

现在,海明码回到了正确的 $0010011$ 状态。

3 - 流量控制

掌握停等、回退 N 帧、选择性重传的过程以及窗口大小,可能在选择题中考察。

停等协议

停等 (Stop-and-Wait) 是一种基础的自动重传请求 (ARQ) 协议。其基本思想是在发送每个数据帧后都停下来,等待接收方的确认。只有在收到确认后,发送方才会继续发送下一个帧。由于这种方法在任何时刻只允许一个帧在传输中,因此它被称为“停等”。

0
1
2
0
1
停等协议
发送方
接收方

过程关键:

  1. 发送数据:发送方发送一个数据帧到接收方,并启动一个计时器等待确认。
  2. 等待确认:发送方在发送数据帧后处于等待状态,直到接收到确认或计时器到期。
  3. 确认的接收:接收方在收到数据帧后,检查其完整性(例如通过校验和)。如果数据帧正确,接收方会发送一个确认帧回到发送方。
  4. 计时器到期:如果发送方的计时器在收到确认之前到期,发送方会假设数据帧丢失或确认丢失,并重新发送数据帧。然后再次启动计时器。

回退 N 帧

在 回退 N 帧(GBN, Go Back N)协议中,发送方可以连续发送多个帧,而不需要等待每个帧的确认。但是,发送方需要为每个帧维护一个计时器。如果一个帧的计时器到期而没有收到确认,发送方会重新发送该帧及其之后发送的所有帧。

0
1
2
0
1
1
x
1
2
0
1
2
0
回退N帧
发送方
接收方

过程关键:

  1. 窗口大小:在 GBN 中,若帧序号的比特数为 $n$,则发送窗口的最大值为 $2^n - 1$,接受窗口的大小为 $1$。
  2. 发送过程:发送方连续发送窗口内的帧,每发送一个帧,都会为其启动一个计时器。
  3. 接收过程:接收方只接收期望的帧序号。如果接收到的帧是期望的,它会发送一个确认。如果接收到的帧不是期望的(可能是由于前面的帧丢失),它会丢弃该帧并重新发送对上一个正确接收的帧的确认。
  4. 超时和重传: 发送方通常只为 最早发送但未确认的帧(窗口内的第一个未确认帧)设置一个单一的超时定时器。 如果计时器到期,该帧及其之后发送的所有帧都会被重传。重传的原因是,如果一个帧丢失,后续的帧虽然可能已经到达接收方,但由于接收方的窗口大小为 1,它们会被丢弃。
  5. 滑动窗口:当发送方收到一个帧的确认,它知道该帧及其之前的所有帧都已正确接收。于是,它会将窗口向前滑动,从而可以发送新的帧。

通过GBN, SR 交互演示你可以更好理解 GBN、SR 的过程。

选择性重传

选择性重传(SR,Selective Repeat)是另一种自动重传请求 (ARQ) 协议,它旨在解决回退 N 帧协议在高误码率环境下的效率问题。与 Go-Back-N 不同,Selective Repeat 只重传那些确实丢失的帧,而不是所有之后的帧。这使得 SR 在高误码率环境下比 GBN 更为高效。

0
1
2
0
1
2
x
1
0
1
2
0
选择性重传
发送方
接收方

过程关键:

  1. 窗口大小:在 SR 中,一般发送窗口和接受窗口大小一致,若帧序号的比特数为 $n$,则窗口大小最大为 $2^{n-1}$。
  2. 发送过程:发送方连续发送窗口内的帧,并为每个发送的帧启动一个计时器。
  3. 接收过程:接收方接收所有在其窗口范围内的帧,并为正确接收的每个帧发送确认。接收到的帧可能是乱序的,但接收方可以缓存这些乱序的帧,直到可以按正确的顺序将其传递给上层。
  4. 超时和重传:如果发送方的某个帧的计时器到期,只有这个特定的帧会被重传,而不是所有的帧。这是 SR 与 GBN 的主要区别。
  5. 滑动窗口:发送方和接收方的窗口都是动态移动的。当发送方收到一个帧的确认时,它会尝试滑动其窗口以发送新的帧。同时,接收方在将帧按正确顺序传递给上层后,也会滑动其窗口。
  6. 处理冲突的确认:考虑到网络的延迟,发送方可能在超时并重传一个帧后才收到其早期版本的确认。为了处理这种情况,SR 协议需要具有识别和丢弃重复确认的机制。

对比

停等协议(Stop-and-Wait)、GBN(Go-Back-N)、SR(Selective Repeat)是计算机网络中用于可靠数据传输的三种流量控制和错误处理协议。它们的主要目标是确保在不可靠的通信信道上的数据传输的可靠性。

重点注意接收方和发送方的窗口大小范围。

特性停等协议GBN 协议SR 协议
发送方窗口大小范围(序号位数为 n)1最大为$2^n - 1$最大为$2^{n-1}$
接收方窗口大小范围(序号位数为 n)1$1$与发送方窗口一致
发送方效率低(每帧等待确认)高(并发发送多帧)高(并发发送多帧)
接收方效率高(无需缓存多帧)低(需要缓存多帧)高(需要缓存多帧)
错误处理重传单个丢失帧重传从丢失帧开始的所有帧重传单个丢失帧或乱序帧
带宽利用率高(部分带宽利用)高(部分带宽利用)

窗口大小限制

$$\text{发送窗口大小} + \text{接受窗口大小} \le 2^n$$

滑动窗口协议是计算机网络中用于控制传输层数据流的一种机制。在这种协议下,发送窗口和接收窗口的大小有一个重要的限制,即它们的和不能超过序列号空间的大小。序列号空间是由能够用于标识帧的序列号的总数确定的,这通常是由序列号的位数决定的。

对于一个使用了 $n$ 位序列号的协议,序列号的范围是从 $0$ 到 $2^n-1$ 。因此,整个序列号空间的大小是 $2^n$ ,这意味着理论上最多可以有 $2^n$ 个不同的帧在传输中被唯一区分。

这个限制的主要原因是防止所谓的“序列号回绕”(Sequence Number Wraparound)。如果发送窗口和接收窗口的大小之和大于序列号空间的大小,那么就可能发生一个新的帧使用了一个老的、已经被使用的序列号,但是该帧可能还在网络中传输或者被延迟。接收方将无法区分这是一个新的帧还是重复的帧。

链路利用率计算

在 ARQ 协议中,链路利用率(也叫做信道利用率)是指信道用于传输有效数据的效率,通常定义为 成功传输数据的时间占总传输时间的比例。它反映了协议在给定信道条件下的性能,是评估 ARQ 协议效率的重要指标。

信道利用率 $U$ 可以表示为

$$U = \frac{T_{data}}{T_{total}}$$

其中:

  • $T_{data}$:成功传输有效数据的时间。
  • $T_{total}$:总时间,包含数据传输、确认、重传以及等待。

一般情况

对于 ARQ 协议,假设信号传播时间为 $T_p$,一个数据帧的传输时间为 $T_d$,一个确认帧的传输时间为 $T_a$,发送窗口的最大值为 $N$,信号往返时间 $RTT = 2 \cdot T_p$。

在此情况下,信道利用率 $U$ = 发送数据的时间 / 从发送第一个帧的时间到收到第一个确认帧的时间:

$$U = \frac{N \cdot T_d}{RTT + T_d + T_a}$$

停等协议

A
D
Time
Time
信号传播时间
帧传输时间
停等协议
发送帧
确认帧

对于停等协议,信道利用率为

$$U = \frac{T_d}{RTT + T_d + T_a}$$

连续ARQ协议

A
D
Time
Time
信号传播时间
帧传输时间
滑动窗口协议,连续传输多个帧

对于使用了滑动窗口的协议(比如回退N帧和选择性重传),一次性可以传输 $N$ 个数据帧,信道利用率为

$$U = \frac{N \cdot T_d}{RTT + T_d + T_a}$$

注意有些时候确认帧比较小,在这种情况下确认帧传输时间 $T_a$ 可以忽略。

此外,$U \le 1$,所以当 $N \cdot T_d > RTT + T_d + T_a$ 时,信道利用率 $U = 1$。

4 - 介质访问控制

需熟练掌握信道划分以及随机访问信道控制的各种方式,在选择题中会考察。除此外,需理解 CSMA/CD 的细节,在往年真题的大题中也考察过。

共享介质

共享介质
A
B
C
D
E

在介绍 MAC 概念之前,必须要说明一下共享介质的概念。

在一个网络环境中,多个设备可能需要同时访问同一个物理介质来发送数据,这个介质可以是电缆、光纤或者无线信道。

当设备发送数据时,数据包会在整个介质上传播,所有连接到该介质的设备都可以接收到数据包。如果多个设备同时发送数据,介质上的数据信号就会相互冲突进而导致错误。

所以 MAC 协议确保了 共享介质上的 有效、公正且有序的数据传输。

MAC 方式总结

介质访问控制(MAC,Media Access Control)可以分为 信道划分 以及 随机访问 两种大方向。

信道划分 介质访问控制:也叫做多路复用,在一条传输介质上同时传输多个不同种类的信号(种类可以根据不同的参数进行划分),这样不同的设备可以发送特定类型的信号,并且不同信号之间相互不干扰,信道划分 访问控制可以分为以下几种:

  • FDM:频分多路复用
  • TDM:时分多路复用
  • WDM:波分多路复用
  • CDM:码分多路复用

随机访问 介质访问控制是指多台设备共享同一个通信介质时,它们可以随机地尝试发送数据,而不需要事先协调,当发生冲突后再做后续的协调,以保证不会接收到错误的数据。

  • ALOHA
  • CSMA
  • CSMA/CD
  • CSMA/CA

多路复用

多路复用(Multiplexing)是一种技术,用于在同一传输介质上同时传输多个信号,包含频分多路复用(FDM)、时分多路复用(TDM)、波分多路复用(WDM)和码分多路复用(CDM)四种。

FDM

频分多路复用(FDM)将可用带宽划分为若干个不重叠的频段,每个信号占用一个频段。各个信号可以同时传输,但彼此之间不会干扰,因为它们占用不同的频率。

MUX
channel 1 (f1)
DEMUX
channel 2 (f2)
channel 3 (f3)
frequency
FDM

FDM 在传统的模拟电话系统和广播中广泛使用。

TDM

时分多路复用(TDM)将时间划分成若干个时隙,每个信号在不同的时隙中传输。所有信号在时间上轮流使用同一传输介质。

MUX
1
DEMUX
2
3
4
1
2
3
4
1
2
3
4
TDM

TDM 常用于数字通信系统,如数字电话网络。

WDM

波分多路复用(WDM)是 FDM 的一种应用,主要用于光纤通信。它将光纤的可用带宽划分为多个波长(颜色),每个信号占用一个波长。

MUX
DEMUX
WDM

WDM 技术可以大幅增加光纤的通信容量,广泛应用于长距离和高速光纤网络。

CDM

码分多路复用(CDM)使用不同的编码来区分各个信号。所有信号可以在同一频带上同时传输,但通过使用不同的编码序列来避免相互干扰。

虽然 CDM 的概念可以用在许多不同的传输系统中,但在实践中,它主要作为 码分多址CDMA,Code Division Multiple Access) 的基础技术。

在 CDMA 中,每一个比特时间划分为 m 个短的时间槽,称为码片(chip),每个站被指派一个惟一的 m bit 码片序列(chip sequence) 。

  • 如果发送比特 1,则发送自己的 m 位码片序列。
  • 如果发送比特 0,则发送该码片序列的二进制反码。

简单理解就是,A 站向 C 站发出的信号用一个向量来表示,B 站向 C 站发出的信号用另一个向量来表示,两个向量要求相互正交。向量中的分量,就是所谓的码片。

当两个或多个站点同时发送时,各路数据在信道中线性相加。为了从信道中分离出各路信号,要求各个站点的码片序列相互正交。

令向量 $S$ 表示站 S 的码片向量,令 $T$ 表示其他任何站的码片向量。两个不同站的码片序列正交,就是向量 $S$ 和 $T$ 的规格化内积(inner product)都是 0:

$$S \cdot T = \frac{1}{m} \sum_{i=1}^{m}{S_i T_i} = 0$$

任何站的码片向量和该码片反码的向量的规格化内积都是-1:

$$S \cdot \overline{S} = \frac{1}{m} \sum_{i=1}^{m}{S_i \cdot \overline{S_i}} = 0$$

举个实际的例子来说明。令向量 $S$ 表示 A 站的码片向量,$T$ 表示 B 站的码片向量。假设 A 站的码片序列被指派为 00011011,则 A 站发送 00011011 就表示发送比特 1,发送 11100100 就表示发送比特 0。为了方 便计算,将码片中的 0 写为-1,将 1 写为+1,因此 A 站的码片序列是(-1 -1 -1 +1 +1 -1 +1 +1)。

令 $T$ = (-1 -1 +1 -1 +1 +1 +1 -1),可以观察到,不管是 $T$ 还是 $\overline{T}$,都有四个码片的值与 $S$ 相反,所以 $S \cdot T = 0$。

当 A 站向 C 站发送数据 1 时,就发送了向量 (-1 -1 -1 +1 +1 -1 +1 +1)。

当 B 站向 C 站发送数据 1 时,就发送了向量 (+1 +1 -1 +1 -1 -1 -1 +1)。

两个向量在公共信道上叠加,实际上是线性相加,得到 $S + \overline{T}$ = (0 0 -2 2 0 -2 0 2)。

ALOHA 协议

ALOHA 协议是一种早期开发的随机访问协议,用于在共享信道上传输数据。ALOHA 有两种基本类型:纯 ALOHA 和时隙 ALOHA。

  • 纯 ALOHA:用户可以在任何时间发送数据包。由于没有时间同步,数据包之间容易发生冲突。
  • 时隙 ALOHA:时间被分成离散的时隙,用户只能在时隙的开始发送数据包。这种方法通过同步发送时间,减少了冲突的概率。

纯 ALOHA

纯 ALOHA(Pure ALOHA)是一种简单的随机接入协议,允许用户在任意时刻发送数据包,而无需对时间进行任何同步或分时。 由于用户可以在任何时间发送数据包,数据包之间可能会发生冲突。

Station1
Station1
Station2
Station2
Station3
Station3
Station4
Station4
Frame 1.1
Frame 1.1
Resend
Resend
Frame 1.2
Frame 1.2
Frame 2.1
Frame 2.1
Resend
Resend
Frame 3.1
Frame 3.1
Resend
Resend
Frame 4.1
Frame 4.1
Frame 2.1
Frame 2.1
Frame 4.1
Frame 4.1
Frame 3.1
Frame 3.1
Collision
duration
Collision...
Collision
duration
Collision...
Resend
Resend
Text is not SVG - cannot display

工作原理:

  • 用户随时发送数据包。
  • 如果数据包成功到达接收端,则传输完成。
  • 如果发生冲突(即两个或多个用户同时发送数据包),相关用户需要等待随机的时间后重传。

时隙 ALOHA

时隙 ALOHA(Slotted ALOHA)在纯 ALOHA 的基础上引入了时间同步,将时间划分为一系列等长的时隙。用户只能在时隙的开始发送数据包。

Station1
Station1
Station2
Station2
Station3
Station3
Station4
Station4
Frame 1.1
Frame 1.1
Frame 1.2
Frame 1.2
Frame 2.1
Frame 2.1
Resend
Resend
Frame 3.1
Frame 3.1
Resend
Resend
Frame 4.1
Frame 4.1
Frame 2.1
Frame 2.1
Frame 4.1
Frame 4.1
Frame 3.1
Frame 3.1
Slot 1
Slot 1
Resend
Resend
Slot 2
Slot 2
Slot 3
Slot 3
Slot 4
Slot 4
Slot 5
Slot 5
Slot 6
Slot 6
Text is not SVG - cannot display

工作原理:

  • 时间被划分为等长的时隙。
  • 用户在时隙的开始时发送数据包。
  • 如果一个时隙内只有一个用户发送数据包,则传输成功。
  • 如果多个用户在同一时隙发送数据包,发生冲突,相关用户等待随机时间后重传。

CSMA 协议

CSMA(Carrier Sense Multiple Access)的中文叫做 载波监听多路访问,理解 CSMA 的关键在于理解它的名称中的两个部分:载波监听 以及 多路访问:

  • 载波监听(Carrier Sense):因为 CSMA 是随机访问介质控制的一种方式,所以在发送数据前,必须确定当前通信介质中没有其他设备正在发送数据。所以载波监听可以被理解为以太网口内部芯片自带的一种功能,具体而言就是一种可以监听 信道在当前位置是否有数据传输的 的一种功能。
  • 多路访问(Multiple Access):多个设备可以访问同一个通信介质。这意味着在任何给定时间,任何设备都可以尝试发送数据。

所以 CSMA 可以理解为 通过 载波监听 避免冲突,进而实现共享介质上的 多路访问

以下图为例,A、B、C、D 分为是连接到同一共享介质上的不同设备,当 A 开始发送数据时,B、C、D 分别会在不同的时刻监测到信号,具体的时刻为 设备与 A 之间的距离 / 信号传播速度

A
B
C
D
Time
Time
传输时间
B 感知到信号
C 感知到信号
D 感知到信号
传播时延 =
不可靠的时间段

这里需要深入理解 传播时延和传输时间 这两个概念:

  • 传输时延(propogation time) = 距离 / 信号传播速度
  • 传输时间(transmission time) = 数据大小 / 数据传输速率

CSMA 的问题在于它无法处理碰撞,当一个设备监听到当前介质中无信号时,它就可以发送数据,但监听得到的结果可能是 “假结果”。因为有可能其他设备已经发送信号了,只是信号由于传播时延还没有到达当前设备。

所以假设当前设备监听得到了 “假结果”,那么此时发送数据后介质上就会发生冲突。比如假设 C 在 A 的信号到来之前检测得到假结果,然后发送帧,这个时候信道中就会出现冲突:

A
B
C
D
Time
Time
传输时间
冲突在此刻发生

那么 CSMA 如何处理冲突呢?(了解即可)

如何处理冲突

CSMA 不具备碰撞处理的功能,冲突处理是 CSMA/CD 的功能。 这意味着在 CSMA 中,设备不会主动检测到碰撞。

但是 CSMA 也具备一定冲突处理的功能,这依赖于超时和重传机制。

在 CSMA 中,发送设备在传输数据后会等待确认响应(如 ACK,Acknowledgment 确认帧)。如果发生碰撞,接收设备无法正确接收数据,因此不会发送确认帧。 发送设备在等待一段时间后没有收到确认响应,推断可能发生了数据丢失(可能由于碰撞)。

这个知识了解即可,目的是帮助大家理清 CSMA 和 CSMA/CD 的区别。下文通过一个实例说明 CSMA 的冲突处理功能:

假设有两个设备 A 和 B,它们都使用 CSMA 协议并共享同一个信道:

  1. 初始状态:信道空闲,设备 A 和 B 都准备发送数据。
  2. 监听信道:A 和 B 都监听信道,发现信道空闲。
  3. 发送数据:A 和 B 几乎同时开始发送数据,由于没有碰撞检测机制,它们不知道发生了碰撞。
  4. 碰撞发生:A 和 B 的数据在信道上发生冲突,接收设备无法解码出有效数据,因此不会发送确认帧。
  5. 等待确认:A 和 B 等待一段时间,发现没有收到确认帧,推断可能发生了碰撞。
  6. 重传尝试:A 和 B 各自等待一个随机时间(不同的随机时间),然后重新尝试发送数据。

CSMA 也 根据其在信道空闲时的行为分为三种类型,如下所示:

特征1-persistent CSMANon-persistent CSMAp-persistent CSMA
信道空闲时的行为立即开始传输数据立即开始传输数据根据概率 p 决定是否传输数据
信道忙时的行为立即开始传输数据等待一个随机时间后重新监听根据概率 p 决定是否重新监听
碰撞的可能性高(当多个设备同时监听信道)低(等待随机时间片段)中等(取决于 p 的值和竞争情况)
等待时间无等待随机等待时间片段随机等待时间片段
适用性适用于低碰撞概率,高速局域网适用于高碰撞概率,低速局域网适用于中等碰撞概率和速率的局域网

CSMA/CD 协议

CSMA/CD (CSMA with Collision Detection,载波监听多路访问/碰撞检测) 是 CSMA 的一种拓展,在了解这个知识之前,请确保你已经理解了什么是 CSMA 中的 CS(Carrier Sense 即 载波监听),以及什么是 CSMA 中的 MA(Multiple Access 即 多路访问)。

CSMA/CD 比 CSMA 多出一个 CD(Collision Detection 即 碰撞检测)的功能。 在上文中我们提到,CSMA 中监听到信道空闲可能是 “虚假的”,所以在 CSMA 发送数据后介质中也许会发生冲突,但 CSMA 只能依靠非常原始的方案处理冲突。

CSMA/CD 就高级一些,在发送数据期间,我们刚刚提到的 监测器件(Carrier,就是 CSMA 中 C 的简称)会一直监听有没有冲突发生, 如果有冲突的话,就等待一段随机的时间,然后重试以上过程,并且发送一个特殊信号告诉其他设备发生了冲突。

A
B
C
D
Time
Time
t1
t4
冲突发生的时刻
A 感知到
冲突
C 感知到
冲突
t2
t3

以上图为例,假设 A 向 D 发送一段数据,C 向 A 发送一段数据,我们可以观察到:冲突发生的时间点 和 设备检测到冲突的时间点是不同的。 当 A 和 C 检测到冲突发生时,它们会立即停止发送,并且发送信号通知其他设备该次碰撞:

A
C
t1,A 发送数据
A
C
C 检测到信道空闲,发送数据
A
C
A
C
t2,发生冲突
STOP
t3,C 检测到冲突,
停止发送
A
C
STOP
t4,A 检测到
发生冲突

流程

CSMA/CD 的工作流程如下:

  1. 准备发送:适配器从网络层获得一个分组,封装成帧,放入网络适配器缓存准备发送。
  2. 检测信道:监听信道是否空闲,若信道空闲,则开始发送该帧;若信道忙,则持续检测直至信道空闲。
  3. 在发送过程中,适配器仍然持续检测信道。这里只有如下两种可能。
    • 发送成功:在争用期内一直未检测到冲突,该帧肯定能发送成功。
    • 发送失败:在争用期内检测到冲突,此时立即停止发送,并且广播碰撞通知信号。接着适配器执行指数退避算法, 等待一段随机时间后返回到步骤 2。若重传 16 次仍不能成功,则停止重传并向上报错。
开始
监听信道
信道
发送数据
无冲突
?
发送数据
广播碰撞信号
重传次数
> 16?
指数退避
Y
N
Y
N
N
Y

限制条件

CSMA/CD 可以使用的限制条件:帧的传输时延至少要两倍于信号在总线上的传播时延

为了在一个帧的发送过程中检测到冲突,发送站必须在整个帧发送完毕之前收到冲突信号。如果一个站点在发送完整个帧后才能检测到冲突,那么冲突的数据就已经在网络上传输完毕了,这样无法避免数据的损坏。

这种机制是基于这样一个事实:冲突的信号需要在网络上传播并被发送站检测到,发送站才会知道发生了冲突。因此,如果帧的传输时延太短,发送站可能在信号冲突返回之前就已经发送完毕了帧,导致无法检测到冲突。为了确保冲突能够被检测到,必须要求帧的传输时间足够长,以便在帧发送结束前,冲突信号能够返回到发送站。

A
B
Time
Time
A
B
Time
Time
B 在这个时刻接收到最后一个比特
最小传输时长 = 2 ×最大传播时延

最小帧大小 = 带宽 ×最小传输时长
A 在这个时刻传输结束
B 在 A 发送的信号刚到达的前一瞬间
开始发送数据
A 必须还在传输数据,也就是说数据传输还没有结束,
才能在这个时刻检测到冲突
一般的冲突场景
碰撞的边界情况
冲突在这个时刻发生

CSMA/CA 协议

CSMA/CD 适用于以太网(使用有线连接的局域网),但在无线局域网(WLAN,Wireless LAN)中无法直接使用 CSMA/CD,主要有以下原因:

  1. 无线设备不能同时“听”和“说”:无线收发器在发送数据时,无法同时监听信道来判断是否发生碰撞。
  2. 信道干扰比有线环境严重:无线信号受环境干扰更大,误判空闲或碰撞的概率更高。
  3. 隐藏节点问题(隐蔽站):假设 A 和 C 两台无线设备都想给 B 发送数据,但 A 和 C 彼此“看不到”,只看到 B 是空闲的。结果就是 A 和 C 同时给 B 发送,发生碰撞,但它们却以为没事。

为此,802.11 标准定义了广泛用于无线局域网的 CSMA/CA 协议,它对 CSMA/CD 协议进行修改,将冲突检测改为冲突避免(Collision Avoidance,.CA)。“冲突避免”并不是指协议可以完全避免冲突,而是指协议的设计要尽量降低冲突发生的概率。

流程

Source
Destination
Other Nodes
DIFS
SIFS
RTS
CTS
CTS
DATA
ACK
ACK
SIFS
SIFS
Delay
Access
  1. 侦听信道(Carrier Sense)
    • 设备在发送数据前通过物理侦听(检查信道电信号)和虚拟侦听(NAV,网络分配向量,记录信道占用时间)判断信道是否空闲。若信道忙碌,设备进入退避机制,等待随机时间后再次侦听,以降低碰撞风险。
  2. 发送请求(RTS,Request to Send)
    • 若信道空闲超过特定时间(DIFS,分布式帧间间隔),设备可发送RTS帧,通知其他设备其传输意图及所需时间。RTS帧是可选的,主要用于较大数据包或高干扰环境。
  3. 清除发送请求(CTS,Clear to Send)
    • 接收设备在确认信道空闲后(等待SIFS,短帧间间隔),回复CTS帧,确认传输许可并通知附近设备保持沉默。CTS帧增强了信道保护,减少隐藏节点问题。
  4. 数据传输
    • 发送设备收到CTS帧后(等待SIFS),开始传输数据帧。其他设备通过NAV设置避免干扰,确保信道专用于当前传输。
  5. 确认帧(ACK,Acknowledgment)
    • 接收设备成功接收数据后(等待SIFS),发送ACK帧确认。若发送端未收到ACK(可能因碰撞或干扰),启动重传机制,重新执行上述步骤。

根据以上过程我们可以观察到 CSMA/CA 的一些关键特点:

  • 碰撞避免:CSMA/CA通过侦听、RTS/CTS、退避机制预测和确认机制并避免碰撞,而非像CSMA/CD(以太网)那样检测碰撞后处理,适合无线网络因其难以实时检测碰撞。
  • 隐藏节点问题:两设备因距离远无法互相侦听,可能同时发送数据导致碰撞。RTS/CTS 机制 通过通知附近设备解决此问题。

IFS

由于无线信道的可靠程度不如有线网络,所以 802.11 标准使用 停等方案,即站点每通过无线局域网发送完一帧,就要在收到对方的确认帧后才能继续发送下一帧。

为了尽量避免冲突,802.11 标准规定,所有站完成发送后,必须等待一段很短的时间(继续监听)才能发送下一帧。这段时间称为帧间间隔(InterFrame Space,IFS)。帧间间隔的长短取决于该站要发送的帧的类型,这些类型用于优先级管理,确保关键帧

802.11 标准使用了下列三种 IFS:

  • SIFS(Short IFS):当设备发送一个数据帧后,它会等待 SIFS 时间,以便快速发送另一个数据帧或发送 ACK(确认)帧作为响应。
  • DIFS(Distributed IFS):当设备想要发送数据时,它首先侦听信道,如果信道被其他设备占用,则等待一个 DIFS 的时间,然后再次侦听信道。
  • PIFS(Point Coordination IFS):中心协调器使用 PIFS 来在其他设备竞争前抢占信道。

在 CSMA/CA 中,网路分配向量(NAV)是用来告诉其他节点预计要占 用无线媒体多长时间的一种机制。

在发送 RTS(请求发送)和 CTS(清除发送)帧时,发送节点会 在帧头中包含一个持续时间字段,这个字段表示从发送当前帧到接收到最后一个 ACK 帧所需的时 间。

其他节点在收到 RTS 或 CTS 帧时,会根据帧中声明的 预计占用时间,在自己的 NAV 计时器上设定一个倒计时。 在 NAV 倒计时期间,设备会 认为信道被占用,即使它侦听到的无线信号很弱或根本没检测到数据,也不会尝试发送,以避免干扰正在通信的设备。

简单来说,NAV就像设备内部的一个“占用表”,告诉自己:别人正在用,等一会再发。

5 - 局域网和广域网

了解局域网和广域网的协议字段,可能在选择题中考察。

局域网

局域网(Local Area Network,LAN)是一种覆盖范围较小、用于连接同一物理地点(如家庭、办公室、学校或企业内)的计算机和其他设备的计算机网络。

特性

局域网的特性主要由三个要素决定:拓扑结构传输介质介质访问控制方式,其中介质访问控制方式是最关键的因素,它决定了局域网的主要技术特性。

常见的局域网 拓扑结构 主要包括以下四类:

  • 星形结构
  • 环形结构
  • 总线形结构
  • 星形与总线形结合的复合型结构
星形结构
总线形结构
环形结构

传输介质 方面,局域网可以采用铜缆、双绞线和光纤等多种介质,其中双绞线是当前的主流传输介质。

局域网常用的 介质访问控制方法 包括 CSMA/CD 协议、令牌总线协议和令牌环协议。 其中,CSMA/CD 协议和令牌总线协议主要应用于总线形局域网,而令牌环协议则主要用于环形局域网。

实现

局域网主要包含三种实现:

  • 以太网(目前使用范围最广)。逻辑拓扑是总线形结构,物理拓扑是星形结构。
  • 令牌环(Token Ring,IEEE802.5)。逻辑拓扑是环形结构,物理拓扑是星形结构。
  • FDDI(光纤分布数字接口,IEE802.8)。逻辑拓扑是环形结构,物理拓扑是双环结构。

以太网

在实际的局域网应用中,由于以太网占据垄断地位,所以基本上成为了局域网的代名词, 需要对局域网的概念有深入了解。

传输介质

以太网常用的传输介质有 4 种:粗缆、细缆、双绞线和光纤,这里需要熟练掌握它们的英文名, 常在选择题中出现:

参数10BASE510BASE210BASE-T10BASE-FL
传输媒体粗缆细缆双绞线光纤对
编码曼彻斯特编码曼彻斯特编码曼彻斯特编码曼彻斯特编码
拓扑结构总线形总线形星形点对点
网络适配器早期以太网早期以太网现代以太网现代以太网

注意上述传输介质的英文名称其实是挺有讲究的:

首先是前缀的数字,代表的是传输介质的速率,10 代表 10 Mbps,100 代表 100 Mbps,注意这里是 Mbps 而不是 MB/s。

其次是中间的 base 一次,代表基带传输(Baseband),基带与宽带(broadband)相对应。基带表示直接传输原始数字信号,不调制;宽带代表使用模拟调制技术传输多个频道信号,常见于有线电视等。

最后是后缀的英文字母,代表的传输介质的类型:

  • 注意字母 Ttwisted pair 的首字母,含义是双绞线
  • FLFiber optic 的缩写,含义是光纤
帧格式
IP 数据报
负载
FCS
类型
目的 MAC 地址
目的 MAC 地址
6B
6B
2B
4B
46 ~ 1500
10101011
101010101010 ··· 101010101010
7B
1B
以太网 MAC 帧
8B
前同步码
帧开始
定界符
IP 层
MAC 层
物理层

如上图所示,以太网帧格式从逻辑上可以分为物理层控制字段、帧首部、数据负载、差错校验字段这四个部分,每个字段的具体说明如下所示:

  • 物理层控制字段
    • 前导码(Preamble):7B
      • 由 7 字节的交替的 1 和 0 位组成,用于同步接收方的时钟。
    • 帧开始分隔符(Start of Frame Delimiter, SFD):1B
      • 通常为 10101011,标志帧的开始。
  • 帧首部: 固定为 14B
    1. 目的地址(Destination MAC Address):6B
      • 指定帧的接收者的物理 MAC 地址。
    2. 源地址(Source MAC Address):6B
      • 指定帧发送者的物理 MAC 地址。
    3. 类型/长度字段(Type/Length):2B
      • 如果值大于或等于 0x0600(1536),则表示帧携带的数据的类型(例如 IPv4、IPv6、ARP 等)。
      • 如果值小于或等于 0x05DC(1500),则表示数据字段的长度。
  • 负载
    • 数据和填充(Data and Padding): 范围为 46-1500B
      • 携带帧的有效载荷,即要传输的数据。
      • 如果数据少于 46 字节,则需要填充,确保数据字段的最小长度为 46 字节。
  • 差错校验字段
    • 帧校验序列(Frame Check Sequence, FCS):4 字节:
      • 一个循环冗余校验(CRC)值,用于错误检测。接收方计算帧的 CRC,并与这个字段进行比较,以确定帧是否在传输过程中被损坏。

注意

为什么 前导码 和 帧开始定界符 不包括在以太网帧的最小和最大大小计算中?

需要注意的是,Preamble 和 SFD 确实是以太网标准规定的格式的一部分,但它们属于 物理层 的内容,而非 数据链路层 中的以太网帧内容。

以太网分为 物理层数据链路层。物理层负责比特级的传输和同步,而数据链路层负责处理数据的封装、地址标识和错误检测。

以太网帧的最大和最小大小为多少?

以太网帧的最小和最大大小(不包括前导码和帧开始定界符)有明确的规定,目的是确保帧的有效性并避免冲突。

其中最小大小为 64B,最大大小为 1518B。 最小帧大小的要求是为了确保冲突检测机制(如 CSMA/CD)能够正常工作。 最大帧大小也称为 标准帧 或 最大传输单元(MTU),它限制了每个帧可以承载的数据量,以确保设备处理负载不会过大。

以太网帧数据部分的最小大小为 46B,最大大小为 1500B。

以太网快速填充: 当 IP 数据包的大小 小于 46 时(以太网设备会读取 IP 的首部的长度字段以得知),以太网设备会自动在其末尾填充 0,是其大小为 46 字节。

无线局域网

帧格式

802.11 帧共有三种类型,即数据帧、控制帧和管理帧。数据帧的格式如图 3.28 所示。

帧控制
持续期
地址1
地址2
地址3
序号控制
地址4
帧主体
FCS
协议版本
2
2
6
6

6
2
4
0 - 2312
2
MAC
尾部
MAC 首部
类型
2
子类型
4
去往
AP
来自
AP
更多
分片
重试
功率
管理
更多
数据
1
1
WEP
顺序
1
1
1
1
1
1
字节

802.11 数据帧由以下三部分组成:

  • MAC 首部,共 30 字节。帧的复杂性都在 MAC 首部。
  • 帧主体,即帧的数据部分,不超过 2312 字节。
  • 帧检验序列 FCS 是 MAC 尾部,共 4 字节。

可以观察到,802.11 帧首部中字段很多,但是其实主要考察的就是个别字段。

其中最重要的是 4 个地址字段(都是 MAC 地址)。这里仅讨论前三个地址(地址 4 用于自组网络)。 这三个地址的内容取决于帧控制字段中的 “去往 AP” 和 “来自 AP” 这两个字段的数值,如下表所示:

去往 AP来自 AP地址 1地址 2地址 3地址 4
01接收地址 = 目的地址发送地址 = AP 地址源地址——
10接收地址 = AP 地址发送地址 = 源地址目的地址——

💡核心记忆点:

  • 地址 1:谁接收这帧(无线信号的接收者)
  • 地址 2:谁发的这帧(无线信号的发送者)
  • 地址 3:通信的最终目标或源(真实的目的地或来源)

VLAN

VLAN(Virtual Local Area Network)虚拟局域网,是通过逻辑划分的方式,把一个物理局域网拆分成多个独立的子网。

打个比方:一家公司只有一个办公室(一个交换机),但希望让财务部、技术部和人事部各自的数据隔离,互不干扰。VLAN 就像是在这一个办公室里,用“看不见的墙”把它们隔开,互相听不到对方说话。

⚙️ 那么 VLAN 是如何实现的呢?

VLAN 是通过 交换机 和 VLAN 标签(Tag) 实现的。简单来说:

  • 普通交换机:看网线在哪个口(port)来转发数据。
  • 支持 VLAN 的交换机:会在数据包中加上 VLAN 标签,按“部门”来转发。

802.3c 标准定义了支持 VLAN 的以太网帧格式的扩展。它在以太网帧中插入一个 4 字节的 标识符(插在源地址字段和类型字段之间),称为 VLAN 标签,用来指明发送该帧的计算机属于 哪个虚拟局域网。插入 VLAN 标签的帧称为 802.1Q 帧,如下图所示。

目的地址
源地址
VLAN 标签
类型
数据
FCS
6
6
4
2
46 ~ 1500
4
MAC 首部
字节
以太网
MAC 帧
标签类型
标签控制信息
4 位
VID(12位)
1001 0001 0000 0000
2 字节
2 字节

其中 VID(VLAN ID)为 12 位,一个 VLAN 交换机最多支持 4096 个 VLAN。


📦 VLAN 示例: 假设有三台电脑:

  • PC1:财务部,接在 VLAN 10
  • PC2:技术部,接在 VLAN 20
  • PC3:人事部,接在 VLAN 30

它们都连在一台交换机上,如果没有 VLAN,三者可以互相通信。如果配置了 VLAN:

  • PC1 发的广播,只有 VLAN 10 内的设备能收到。
  • PC2 和 PC3 不会收到 PC1 的数据,除非通过路由器(或者三层交换机)跨 VLAN 通信。

广域网

PPP 协议

PPP(Point-to-Point Protocol)是一种数据链路层协议,用于在两个点对点连接的网络之间传输数据。PPP 最初是为拨号连接设计的,但它后来被广泛用于建立各种类型的点对点连接,包括 DSL(数字用户线路)、ISDN(综合业务数字网)和串口连接等。

6 - 数据链路层设备

掌握网桥和交换机的工作原理和功能,可能在选择题中考察,也会大题中作为知识点进行考察。

网桥

E1 — MAC1
E1 — MAC2
E2 — MAC3
E2 — MAC4
E1 — MAC1...
E1
E1
E2
E2
Bridge
Bridge
Hub
Hub
Hub
Hub
PC1
PC1
PC2
PC2
PC3
PC3
PC4
PC4
MAC1
MAC1
MAC2
MAC2
MAC3
MAC3
MAC4
MAC4
Text is not SVG - cannot display
  • 工作原理:网桥根据目的MAC地址来决定是否将数据帧从一个接口转发到另一个接口。当一个数据帧进入网桥时,它会检查数据帧的目的MAC地址,然后将其转发到适当的接口,以便数据帧到达目标设备。网桥还可以学习MAC地址,并维护一个MAC地址表,以便更智能地转发数据帧。
  • 功能:网桥主要用于连接两个或多个局域网段,使它们能够在同一网络中通信。网桥帮助减少了网络中的碰撞域(collision domain),提高了网络性能。

在过去,网桥是用来连接不同的物理媒体类型,例如以太网和令牌环。然而,现代交换机已经取代了许多网桥的功能,因为交换机通常更智能、更高效。

交换机

  • 工作原理:交换机使用MAC地址表来确定将数据帧从哪个接口转发到哪个接口。当数据帧到达交换机时,交换机会查找MAC地址表以查找目标设备的位置,并将数据帧仅发送到目标设备所连接的接口,而不是广播到整个网络。
  • 功能:交换机提供了更快的数据帧传输速度和更低的碰撞域,因为它只将数据帧传输到需要的接口,而不是广播到整个网络。这提高了网络性能和带宽利用率。
Switch A
PC1
PC3
Switch B
PC4
PC5
PC2
1111.1111.1111
4444.4444.4444
2222.2222.2222
3333.3333.3333
5555.5555.5555
MAC Address
Port
1111.1111.1111
F0
2222.2222.2222
F1
3333.3333.3333
F2
4444.4444.4444
G0
5555.5555.5555
G0
F0
G0
F1
F2
G0
F0
F1
Switch A
MAC Address
Port
1111.1111.1111
G0
2222.2222.2222
G0
3333.3333.3333
G0
4444.4444.4444
F0
5555.5555.5555
F1
Switch B

交换机学习转发表的过程:

  1. 启动时初始化:当交换机首次启动时,它的转发表通常为空。此时,交换机不知道任何设备的位置。
  2. 数据帧到达:当数据帧从一个端口进入交换机时,交换机需要决定将数据帧发送到哪个端口。这时候,交换机会进行以下步骤:
    • 目标MAC地址检查:交换机会查看数据帧中的目标MAC地址,这个地址用于确定数据帧的目的地。每个网络设备都有唯一的MAC地址。
    • 转发表查询:交换机会检查转发表,看是否已经学习到了目标MAC地址的条目。
  3. 转发表条目的状态:
    • 如果交换表中没有关于目标MAC地址的记录,那么交换机会认为这是一个未知目标,它会将数据帧广播到所有其他端口,以寻找目标设备。这称为广播帧。
    • 如果交换表中已经有了关于目标MAC地址的记录,交换机就会使用该记录中的信息来确定数据帧应该发送到哪个端口。
  4. 学习新的MAC地址:当数据帧首次进入交换机并且交换机不知道目标MAC地址的位置时,交换机会学习该MAC地址的位置并将其添加到转发表中。学习过程如下:
    • 交换机将源MAC地址与接收数据帧的端口关联起来,以记录该MAC地址位于哪个端口。
    • 交换机将目标MAC地址与接收数据帧的端口关联起来,以记录该MAC地址位于哪个端口。
    • 交换机为这对MAC地址和端口创建一个转发表项,以便将来可以更快地转发数据帧。
  5. 更新转发表:转发表不断更新,以反映网络中设备的移动和更改。交换机会定期检查已知设备的活跃性,并根据需要更新转发表中的信息。如果某个设备不再活跃或从网络中断开连接,交换机将删除与其相关的转发表项。