Skip to content
Notes
GitHub

第 3 章 数据链路层

数据链路 = 物理线路 + 通信协议 + 实现协议的硬件软件

3.1. 数据链路层的功能

在物理岑规提供服务的基础上向网络层提供服务,主要作用是加强物理层传输原始比特流的功能,将物理层提供多少可能出错的物理链接改造为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。

3.1.1. 为网络层提供服务

1. 无确认的无连接服务

源机器发送数据帧时不需建立链路连接,目的机器收到数据帧时不需发回确认。对丢失的帧,数据链路层不负责重发而交给上层处理。适用于实时通信或误码率较低的通信信道。

2. 有确认的无连接服务

源机器发送数据帧时不需建立链路连接,但目的机器收到数据帧必须发回确认,源机器在所规定的时间内未收到确定信号就重传丢失的帧,以提高传输的可靠性。

3. 有确认的面向连接的服务

分三个阶段:建立数据链路、传输帧、释放数据链路。目的机器对收到的每一帧都要给出确认,源机器收到确认后才发送下一帧,可靠性最高。

3.1.2. 链路管理

数据链路层连接的建立、维持和释放过程称为链路管理,主要用于面向连接的服务。

链路两端的结点要进行通信,必须首先确认对方是否已处于就绪状态,并交换一些必要的信息以对帧需要初始化,然后才能建立连接,在传输过程中则要能维持连接,传输完毕后释放连接。

3.1.3. 帧定界、帧同步、透明传输

两台主机之间传输信息时,必须将网络层的分组封装成,以帧的格式进行传送。

帧长等于数据部分的长度加上首部和尾部的长度。首部和尾部中含有很多控制信息,它们的一个重要作用是确定帧的界限,即帧定界。

帧同步指的是接收方应能从接收到的二进制比特流中区分帧的起始和终止。

在 HDLC 协议中,用标识位 F(01111110) 来标识帧的开始和结束。通信过程中,检测到帧标识位 F 即认为是帧的开始,然后一旦检测到帧标识位 F 即表示帧的结束。为提高帧的传输效率,应当使帧的数据部分长度尽可能大于首部和尾部的长度,但每种数据链路层协议都规定了数据部分的长度上限——最大传送单元(MTU)

标志地址控制信息帧校验序列标志
FACIFCSF
011111108 位8 位N 位(可变)16 位01111110

如果在数据中恰好出现与帧定界符相同的比特组合(会误认为“传输结束”而丢弃后面的数据),那么就要采取有效的措施解决这个问题,即透明传输。透明传输就是不管锁传数据是什么样的比特组合,都应当能在链路上传送。

3.1.4. 流量控制

由于收发双方各自的工作速率和缓存空间的差异,可能出现发送方的发送能力大于接收方的接受能力的现象,来不及接收的帧会被后面来的帧“淹没”,造成帧的丢失而出错。流量控制实际就是限制发送方的数据流量,使其发送速率不超过接收方的接收能力。

这个过程需要通过某种反馈机制使发送方知道接收方是否能跟上自己。

流量控制并不是数据链路层特有的功能,许多高层协议中也有此功能,只不过控制的对象不同。对于数据链路层来说,控制的是相邻两结点之间数据链路上的流量。对于传输层,控制的是从源端到目的端之间的流量。

3.1.5. 差错控制

由于信道噪声等原因,帧在传输过程中可能会出现错误。用以使发送方确定接收方是否正确收到由其发送的数据分方法称为差错控制。通常错误可分为位错和帧错。

位错是指帧中某些位出现了差错,常用 CRC 码发现位错,自动重传请求(ARQ)方式重传出错的帧。(发现错误则丢弃帧,发送方超时重传该数据帧)

帧错指帧的丢失、重复或失序等错误。在数据链路层引入定时器和编号机制能保证每一帧最终都能有且仅有一次正确交付给目标结点。

3.2. 组帧

数据链路层之所以要把比特组合成帧为单位传输,是为了在出错时只重发出错的帧,不必重发全部数据,提高效率。为了使接收方能正确接收并检查所传输的帧,发送方必须依据一定的规则把网络层递交的分组封装成帧(称为组帧)。

组帧主要解决帧定界、帧同步、透明传输等问题。

3.2.1. 字符计数法

指在帧头部使用一个计数字段来标明帧内字符数。目的结点的数据链路层收到字节计数值时,就知道后面跟随的字节数,从而可以确定帧结束的位置。

最大问题在于如果计数字段出错,即失去了边界划分的依据,接收方就无法判断所传输帧的结束位和下一帧的开始位。

3.2.2. 字符填充的首尾定界符法

使用特定字符来界定一帧的开始和结束。为使信息位中出现的特殊字符不被误判为帧的首尾界定符,可在特殊字符前面填充一个转义字符来加以区分,以实现数据的透明传输。接收方收到转义字符后,就知道其后面紧跟的是数据信息,而不是控制信息。

3.2.3. 零比特填充的首尾标志法

零比特填充法允许数据帧包含任意个数的比特,也允许每个字符的编码包含任意个数的比特。它使用一个特定的比特模式,即 01111110 来标志一帧的开始和结束。

为了不使信息位中出现比特流 01111110 被误判为帧的首尾标志,发送方的数据链路层在信息位中遇到 5 个连续的 1 将会自动在其后插入一个 0;接收方接收时则会逆向操作,以复原信息。

3.2.4. 违规编码法

在物理层进行比特编码时,通常采用违规编码法。例如,曼彻斯特编码方法将数据比特 1 编码成 “高-低” 电平对,0 则反之,而 “高-高” 电平对和 “低-低” 电平对在数据比特中是违规的。可以借助这些违规编码序列来定界帧的起始和终止。

常用比特填充法违规编码法

3.3. 差错控制

实际通信链路否不是理想的,比特传输可能会出现差错。10 或者 01 称为比特差错。

通常利用编码技术进行差错控制,主要有两类:自动重传请求 ARQ 和前向纠错 FEC 。 ARQ 方式中接收端检测到差错则通知发送端重发,直到接收到正确的码字为止。 FEC 方式中,接收端不但能发现差错,而且能确定比特串的错误位置,从而加以纠正。因此差错控制又可分为检错码和纠错码。

3.3.1. 检错编码

都采用冗余编码技术,核心思想是在有效数据被发送前,先按某种关系附加一定的冗余位,构成一个符合某一规则的码字后再发送。当要发送的有效数据变化时,相应的冗余位也随之变化,使得码字遵从不变的规则。接收端根据收到的码字是否仍符合原规则来判错。

1. 奇偶校验码

  • 奇校验:所有位异或后再异或上一个 1
  • 偶校验:所有位异或

只能检测奇数个的出错情况,但并不知道哪些位错了,也不能发现偶数个错的情况

2. 循环冗余码 CRC

一个 k\displaystyle{ k } 位帧可视为从 X{k1}\displaystyle{ X ^{ \left\lbrace k - 1 \right\rbrace } }X{0}\displaystyle{ X ^{ \left\lbrace 0 \right\rbrace } }k1\displaystyle{ k - 1 } 次多项式的系数序列,这个多项式的阶数为 k1\displaystyle{ k - 1 },高位是 X{k1}\displaystyle{ X ^{ \left\lbrace k - 1 \right\rbrace } } 项的系数。

  • 1110011=X{6}+X{5}+X{4}+X+1\displaystyle{ 1110011 = X ^{ \left\lbrace 6 \right\rbrace } + X ^{ \left\lbrace 5 \right\rbrace } + X ^{ \left\lbrace 4 \right\rbrace } + X + 1 }
  • X{5}+X{4}+X{2}+X=110110\displaystyle{ X ^{ \left\lbrace 5 \right\rbrace } + X ^{ \left\lbrace 4 \right\rbrace } + X ^{ \left\lbrace 2 \right\rbrace } + X = 110110 }

给定一个 m\displaystyle{ m } bit 的帧或报文,发送器生成一个 r\displaystyle{ r } bit 的序列,称为帧检测序列 FCS 。这样所形成的帧将由 m+r\displaystyle{ m + r } 比特组成。收发双方事先商定一个多项式 G(x)\displaystyle{ G \left( x \right) } (最高位和最低位必须是 1),使这个带检验码的帧刚好能被预先确定的多项式 G(x)\displaystyle{ G \left( x \right) } 整除。接收方用同样的多项式去除收到的帧,如果无余数,则认为无差错。

假设一个帧有 m\displaystyle{ m } 位,对应多项式为 M(x)\displaystyle{ M \left( x \right) } ,计算步骤如下:

  • 加 0 。假设 G(x)\displaystyle{ G \left( x \right) } 的阶为 r\displaystyle{ r },在帧的低位端加上 r\displaystyle{ r } 个 0
  • 模 2 除。利用模 2 除法,用 G(x)\displaystyle{ G \left( x \right) } 对应的数据串去除上一步中计算出的数据串,得到的余数为冗余码(r\displaystyle{ r },前导 0 不可省略)
G(x)=1101\displaystyle{ G \left( x \right) = 1101 },待传送数据 M=101,001\displaystyle{ M = 101 , 001 },求实际发送的数据

被除数 M(x)23=101,001,000M(x)\cdot 2^{3}=101,001,000M(x)23÷G(x)=110101001M(x)\cdot 2^{3} \div G(x)=110101 \cdots 001

110,101
---------
1101 | 101,001,000
110 1
------
11 10
11 01
------
111 0
110 1
------
1 100
1 101
------
1
110,101
---------
1101 | 101,001,000
110 1
------
11 10
11 01
------
111 0
110 1
------
1 100
1 101
------
1

余数取 3 位,即 001\displaystyle{ 001 },实际发送的数据为 101,001,001\displaystyle{ 101 , 001 , 001 }

通过循环冗余码的检错技术,数据链路层做到了对帧的无差错接受。

3.3.2. 纠错编码

最常见纠错码是海明码,在有效信息位中加入几个校验位形成海明码,并把海明码的每个二进制位分配到几个奇偶校验组中。当某位出错后,就会引起有关的几个校验位值的变化。不但可以发现错位,而且能指出错位的位置,为自动纠错提供依据。

1. 确定海明码的位数

n\displaystyle{ n } 为有效信息的位数, k\displaystyle{ k } 为校验位的位数,则满足

n+k2k1n+k \leqslant 2^{k}-1

若要检测两位错,则需要在增加 1 位校验位,即 k+1\displaystyle{ k + 1 } 位。

海明码位数 n+k=7231n+k=7 \leqslant 2^{3}-1 成立,则 n,k\displaystyle{ n , k } 有效。设信息位为 D{4}D{3}D{2}D{1}\displaystyle{ D _{ \left\lbrace 4 \right\rbrace } D _{ \left\lbrace 3 \right\rbrace } D _{ \left\lbrace 2 \right\rbrace } D _{ \left\lbrace 1 \right\rbrace } } (1010) 共 4 位,校验位为 P{3}P{2}P{1}\displaystyle{ P _{ \left\lbrace 3 \right\rbrace } P _{ \left\lbrace 2 \right\rbrace } P _{ \left\lbrace 1 \right\rbrace } } 共三位,对应海明码为 H{7}H{6}H{5}H{4}H{3}H{3}H{2}H{1}\displaystyle{ H _{ \left\lbrace 7 \right\rbrace } H _{ \left\lbrace 6 \right\rbrace } H _{ \left\lbrace 5 \right\rbrace } H _{ \left\lbrace 4 \right\rbrace } H _{ \left\lbrace 3 \right\rbrace } H _{ \left\lbrace 3 \right\rbrace } H _{ \left\lbrace 2 \right\rbrace } H _{ \left\lbrace 1 \right\rbrace } }

2. 确定校验位的分布

规定校验位 Pi\displaystyle{ P _{ i } } 在海明位号为 2{i1}\displaystyle{ 2 ^{ \left\lbrace i - 1 \right\rbrace } } 的位置上,其余各位为信息位,有

  • P{1}\displaystyle{ P _{ \left\lbrace 1 \right\rbrace } } 海明位号为 2{0}=1\displaystyle{ 2 ^{ \left\lbrace 0 \right\rbrace } = 1 },即 H{1}=P{1}\displaystyle{ H _{ \left\lbrace 1 \right\rbrace } = P _{ \left\lbrace 1 \right\rbrace } }
  • P{2}\displaystyle{ P _{ \left\lbrace 2 \right\rbrace } } 海明位号为 2{1}=2\displaystyle{ 2 ^{ \left\lbrace 1 \right\rbrace } = 2 },即 H{2}=P{2}\displaystyle{ H _{ \left\lbrace 2 \right\rbrace } = P _{ \left\lbrace 2 \right\rbrace } }
  • P{3}\displaystyle{ P _{ \left\lbrace 3 \right\rbrace } } 海明位号为 2{2}=4\displaystyle{ 2 ^{ \left\lbrace 2 \right\rbrace } = 4 },即 H{4}=P{3}\displaystyle{ H _{ \left\lbrace 4 \right\rbrace } = P _{ \left\lbrace 3 \right\rbrace } }

分布如下

H{7}\displaystyle{ H _{ \left\lbrace 7 \right\rbrace } }H{6}\displaystyle{ H _{ \left\lbrace 6 \right\rbrace } }H{5}\displaystyle{ H _{ \left\lbrace 5 \right\rbrace } }H{4}\displaystyle{ H _{ \left\lbrace 4 \right\rbrace } }H{3}\displaystyle{ H _{ \left\lbrace 3 \right\rbrace } }H{2}\displaystyle{ H _{ \left\lbrace 2 \right\rbrace } }H{1}\displaystyle{ H _{ \left\lbrace 1 \right\rbrace } }
D{4}\displaystyle{ D _{ \left\lbrace 4 \right\rbrace } }D{3}\displaystyle{ D _{ \left\lbrace 3 \right\rbrace } }D{2}\displaystyle{ D _{ \left\lbrace 2 \right\rbrace } }P{3}\displaystyle{ P _{ \left\lbrace 3 \right\rbrace } }D{1}\displaystyle{ D _{ \left\lbrace 1 \right\rbrace } }P{2}\displaystyle{ P _{ \left\lbrace 2 \right\rbrace } }P{1}\displaystyle{ P _{ \left\lbrace 1 \right\rbrace } }

3. 分组以形成校验关系

每个数据位用多个校验位进行校验。满足:被校验数据位的海明位号等于校验该数据位的各校验位海明位号之和。校验位不需要再被校验。

  • D{1}\displaystyle{ D _{ \left\lbrace 1 \right\rbrace } } 放在 H{3}\displaystyle{ H _{ \left\lbrace 3 \right\rbrace } } 上,由 P{2}P{1}\displaystyle{ P _{ \left\lbrace 2 \right\rbrace } P _{ \left\lbrace 1 \right\rbrace } }H{2}H{1}\displaystyle{ H _{ \left\lbrace 2 \right\rbrace } H _{ \left\lbrace 1 \right\rbrace } } 校验
  • D{2}\displaystyle{ D _{ \left\lbrace 2 \right\rbrace } } 放在 H{5}\displaystyle{ H _{ \left\lbrace 5 \right\rbrace } } 上,由 P{3}P{1}\displaystyle{ P _{ \left\lbrace 3 \right\rbrace } P _{ \left\lbrace 1 \right\rbrace } }H{4}H{1}\displaystyle{ H _{ \left\lbrace 4 \right\rbrace } H _{ \left\lbrace 1 \right\rbrace } } 校验
  • D{3}\displaystyle{ D _{ \left\lbrace 3 \right\rbrace } } 放在 H{6}\displaystyle{ H _{ \left\lbrace 6 \right\rbrace } } 上,由 P{3}P{2}\displaystyle{ P _{ \left\lbrace 3 \right\rbrace } P _{ \left\lbrace 2 \right\rbrace } }H{4}H{2}\displaystyle{ H _{ \left\lbrace 4 \right\rbrace } H _{ \left\lbrace 2 \right\rbrace } } 校验
  • D{4}\displaystyle{ D _{ \left\lbrace 4 \right\rbrace } } 放在 H{7}\displaystyle{ H _{ \left\lbrace 7 \right\rbrace } } 上,由 P{3}P{2}P{1}\displaystyle{ P _{ \left\lbrace 3 \right\rbrace } P _{ \left\lbrace 2 \right\rbrace } P _{ \left\lbrace 1 \right\rbrace } }H{4}H{2}H{1}\displaystyle{ H _{ \left\lbrace 4 \right\rbrace } H _{ \left\lbrace 2 \right\rbrace } H _{ \left\lbrace 1 \right\rbrace } } 校验

4. 校验位取值

校验位 Pi\displaystyle{ P _{ i } } 的值为第 i\displaystyle{ i } 组(由该校验位校验的数据位)所有位异或

  • P1=D1D2D4=011=0P_{1}=D_{1} \oplus D_{2} \oplus D_{4} = 0 \oplus 1 \oplus 1 = 0
  • P2=D1D3D4=001=0P_{2} = D_{1} \oplus D_{3} \oplus D_{4} = 0 \oplus 0 \oplus 1 = 0
  • P3=D2D3D4=101=0P_{3} = D_{2} \oplus D_{3} \oplus D_{4} = 1 \oplus 0 \oplus 1 = 0

1010 海明码为 1010010

5. 校验原理

每个校验组分别利用校验位和参与形成该校验位的信息进行奇偶校验检查,构成 k\displaystyle{ k } 个校验方程、

S1=P1D1D2D4S2=P2D1D3D4S3=P3D2D3D4\begin{aligned} S_{1} & = P_{1} \oplus D_{1} \oplus D_{2} \oplus D_{4} \\ S_{2} & = P_{2} \oplus D_{1} \oplus D_{3} \oplus D_{4} \\ S_{3} & = P_{3} \oplus D_{2} \oplus D_{3} \oplus D_{4} \end{aligned}

如果 S{3}S{2}S{1}=000\displaystyle{ S _{ \left\lbrace 3 \right\rbrace } S _{ \left\lbrace 2 \right\rbrace } S _{ \left\lbrace 1 \right\rbrace } = 000 } 则无错,如果不为全 0 ,那么错误的位号就是 S{3}S{2}S{1}\displaystyle{ S _{ \left\lbrace 3 \right\rbrace } S _{ \left\lbrace 2 \right\rbrace } S _{ \left\lbrace 1 \right\rbrace } }

3.4. 流量控制与可靠传输机制

3.4.1. 流量控制、可靠传输、滑动窗口机制

流量控制涉及控制发送速率,使接收方有足够的缓冲空间来接收每个帧。常见方法:停等协议、滑动窗口协议。

1. 停止-等待流量控制基本原理

发送方每发送一帧,都要等待接收方的应答信号,之后才能发送下一帧;接收方每接收一帧,都要反馈一个应答信号,表示可接收下一帧。如果接收方不反馈应答信号,那么发送方就一直等待。每次只允许发送一帧,然后就陷入等待确认过程,传输效率低。

2. 滑动窗口流量控制基本原理

在任意时刻,发送方都维持一组连续的允许发送的帧的序号,称为发送窗口;同时接收方也维持一组连续的允许接收帧的序号,称为接收窗口

发送窗口用来对发送方进行流量控制,发送窗口的大小 WTW_{\mathrm{T}} 代表还未收到对方确认信息的情况下发送方最多还可发送多少数据帧。

在接收端设置接收窗口是为了控制可以接收哪些数据帧和不可以接收哪些数据帧。在接收端,只有收到的数据帧的序号落在接收窗口内,才允许将该数据收下,否则一律丢弃。

发送端每收到一个确认帧,发送窗口就向前滑动一个帧的位置,当发送窗口内没有可以发送的帧(全部已发送,但未确认)时,发送方停止发送,直到收到接收方的确认帧才能移动窗口,从而发送后面的帧。

特性
  • 只有接收窗口向前滑动(同时接收方发送了确认帧)时,发送窗口才有可能(只有发送方收到确认帧后才一定)向前滑动
  • 从滑动窗口的概念上看,停等协议、后退 N\displaystyle{ N } 帧协议和选择重传协议只在发送窗口大小与接收窗口大小上有差别
    • 停等协议:发送窗口大小 = 接收窗口大小 = 1
    • 后退 N\displaystyle{ N } 帧协议:发送窗口 > 1 ,接收窗口 = 1
    • 选择重传协议: 发送窗口 > 1 ,接收窗口 > 1
  • 接收窗口大小为 1 时,可保证帧的有序接收
  • 数据链路层的滑动窗口协议中,窗口的大小在传输过程中是固定的

3. 可靠传输机制

数据链路层的可靠传输常用确认和超时重传两种机制完成。

  • 确认是一种无数据的控制帧。有些情况下为了提高传输效率,将确认捎带在一个回复帧中,称为捎带确认。
  • 超时重传是指发送端在发送某个数据帧后就开启一个计时器,在一定时间内如果没有得到发送方的数据帧确认帧,就重发该数据帧,直到发送成功为止。

自动重传请求 ARQ 通过接收方请求发送方重传出错的数据帧来恢复出错的帧,是通信中用于处理信道所带来差错的方法之一。传统自动重传请求分 3 种:

  • 停止-等待 ARQ
  • 后退 N\displaystyle{ N } 帧 ARQ
  • 选择性重传 ARQ

后两种是滑动窗口协议与请求重发技术的结合,由于窗口尺寸开到足够大时,帧在线路上可以连续流动,因此称为连续 ARQ 协议

3.4.2. 单帧滑动与停等协议

在停等协议中,源站发送单个帧后必须等待确认,在目的站的回答到达源站之前,源站不能发送其他的数据帧。停等协议相当于双方的滑动窗口大小均为 1 。

在停等协议中,除数据帧丢失外,还可能出现以下两种差错:

  • 到达目的站的帧可能已经遭到破坏,接收站利用差错检测技术,简单将帧丢弃。源站装备计时器,发送一帧后等待确认,如果在计时器计满时仍未收到确认帧,则重发。
  • 数据帧正确但确认帧被破坏,接收方已经收到正确的数据帧,但发送方无法收到确认帧,因此发送方发现超时,重发该数据帧。接收方收到同样的数据会丢弃该帧,并重传一个该帧对应的确认帧。

为了超时重发和判定重复帧的需要,双方都须设置一个帧缓冲区。发送端在发完数据帧时,必须在其发送缓存中保留此数据帧的副本,这样在出现差错时进行重传。只有收到对方的 ACK 时,才会删除该副本。

public/netty/jw0301fdsdf.png

3.4.3. 多帧滑动窗口与后退 N\displaystyle{ N } 帧协议(GBN)

在 GBN 式 ARQ 中,发送方无须在收到上一帧的 ACK 之后才能开始发送下一帧,而是可以连续发送帧。当接收方检测出失序的信息帧后,要求发送方重发最后一个正确接受的信息帧之后的所有未被确认的帧;或者当发送方发送了 N\displaystyle{ N } 个帧后,若发现该 N\displaystyle{ N } 个帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重传该出错帧及随后的 N\displaystyle{ N } 个帧。接收方只允许按照顺序接收帧

后退 N\displaystyle{ N } 帧协议的窗口为 1 ,可以保证按序接收数据帧。若采用 n\displaystyle{ n } 比特对帧编号,则其发送窗口尺寸应满足 1WT2n11 \leqslant W_{\mathrm{T}} \leqslant 2^{n} -1

GBN 协议一方面因连续发送数据帧而提高了信道利用率,另一方面在重传时必须被原来已经传送正确的数据帧重传,因此效率降低。若信道的传输质量很差导致误码率高时, GBN 不一定优于停等协议。

public/netty/jw035e6tryh.png

3.4.4. 多帧滑动窗口与选择重传协议 SR

为进一步提高信道利用率,可设法只重传出现差错或计时器超时的数据帧,这样必须加大接收窗口,以便先收下发送序号不连续但仍处在接收窗口的那些数据帧。等到所缺序号的数据帧收到后再一并送交主机。这样即选择重传 ARQ 协议

  • 每个发送缓冲区对应一个计时器,当计时器超时,则该缓冲区的帧会重传。
  • 接收方怀疑帧出错,就会发送一个否定帧 NAK 给发送方,要求发送方对 NAK 中指定的帧进行重传。

接收窗口 WRW_{\mathrm{R}} 和发送窗口 WTW_{\mathrm{T}} 均大于 1 ,一次可以发送多个帧。选择重传协议中,接收窗口和发送窗口大小相同,且最大值都为序号范围的一半,若采用 n\displaystyle{ n } 比特对帧编号,则需要满足 WTmax=WRmax=2n1W_{\mathrm{Tmax}}=W_{\mathrm{Rmax}}=2^{n-1}

如果不满足该条件,即窗口大小大于序号范围的一半,当一个或多个确认帧丢失,发送方就会超时重传之前的数据帧,但接收方无法分辨是新的数据帧还是重传的数据帧。

  • 发送窗口大小 + 接受窗口大小 2n\leqslant 2^{n}
  • 接受窗口大小 \leqslant 发送窗口大小

public/network/jw03gfjhn9.png

SR 协议可以避免重复传送那些本已正确到达接收端的数据帧,但在接收端要设置具有相当容量的缓冲区来暂存那些未按序正确收到的帧。接收端不能接收窗口之外的序号的帧,因此所需缓冲区的数目等于窗口的大小。

信道的效率

也称信道利用率。从时间角度的定义:信道效率是对发送当而言的,是指发送方在一个发送周期的时间内,有效发送数据所需要的时间站通整个发送周期的比率。

例如,发送方从开始发送数据到收到第一个确认帧为止,成为一个发送周期,设为 T\displaystyle{ T },发送方在这个周期内共发送 L\displaystyle{ L } 比特的数据,发送方的数据传输速率为 C\displaystyle{ C },则发送方用于发送有效数据的时间为 LC\displaystyle{ \frac{ L }{ C } },在这种情况下,信道利用率为 LCT\displaystyle{ \frac{ \frac{ L }{ C } }{ T } }.

信道吞吐率 = 信道利用率 × 发送方的发送速率

3.5. 介质访问控制

主要任务:为使用介质的每个结点隔离来自同一信道上其他结点所传送的信号,以协调活动结点的传输。

用来决定广播信道中信道分配的协议属于数据链路层的一个子层,称为介质访问控制 (MAC) 子层

在总线上,A, B, C, D, E 共享广播信道,假设 A 要与 C 发生通信, B 要与 D 发生通信,由于共用一条信道,如果不佳控制,那么两队结点间的通信可能会因为相互干扰而失败。MAC 的内容上,采取一定的措施,使得两对结点之间的通信不会发生互相干扰的情况。

常见方法:

  • 信道划分介质访问控制:静态
  • 随机访问介质访问控制:动态
  • 轮询访问介质访问控制:动态

3.5.1. 信道划分介质访问控制

将使用介质的每一个设备与来自同一通信信道上的其他设备的通信隔离,把时域和频域资源合理的分配给网络上的设备。

多路复用技术:当传输介质的带宽超过传输单个信道所需带宽时,人们就通过在一条介质上同时携带多个传输信号的方法来提高传输系统的利用率。

多路复用技术可以把多个输入通道的信息整合到一个复用通道中,在接收端把收到的信息分离出来并传送到对应的输出通道。

1. 频分多路复用 FDM

将多路基带信号调制到不同频率载波上,再叠加形成一个符合信号的多路复用技术。在物理信道的可用带宽超过单个原始信号所需带宽的情况下,可将该物理信道的总带宽分割成若干与传输单个信号带宽相同(或略宽)的子信道,每个子信道传输一种信号。

每个子信道分配的带宽可不相同,但它们的总和必须不超过信道的总带宽。实际应用中,为防止子信道之间的干扰,相邻信道之间需要加入“保护频带”。

public/network/jw024323vdcbd.png

2. 时分多路复用 TDM

将一条物理信道按时间分成若干时间片,轮流地分配给多个信号使用。每个时间片由复用的一个信号占用。利用每个信号在时间上的交叉,可以在一条物理信道上传输多个信号。

就某个时刻来看,时分多路复用信道上传送的仅是某一对设备之间的信号;就某段时间而言,传送的是按时间分割的多路复用信道。

3. 波分多路复用 WDM

即光的频分多路复用,在一根光纤中传输多种不同波长的光信号,由于波长不同,各路光信号互不干扰,最后采用波长分解复用器将各路波长分解出来。

4. 码分多路复用 CDM

采用不同的编码来区分各路原始信号的一种复用方式。它既共享信道的频率,又共享时间。

更常用的名词是码分多址 CDMA ,其原理是每个比特时间再划分成 m\displaystyle{ m } 个短的时间槽,称为码片,通常 m=64\displaystyle{ m = 64 } 或 128 。

m=8\displaystyle{ m = 8 },每个站点被指派一个唯一的 m\displaystyle{ m } 位码片序列。发送 1 时,站点发送它的码片序列;发送 0 时,站点发送该码片的反码。当两个或多个站点同时发送时,各路数据在信道中线性相加。为从信道中分离出各路信号,要求各个站点的码片序列相互正交

加入站点 A 的码片序列被指派为 00011011,则 A 发送 00011011 表示 1 ,发送 11100100 表示 0 。为了方便,按管理将码片中的 0 写作 -1 ,1 写作 +1 ,因此 A 站点的码片序列为 -1-1-1+1+1-1+1+1

令向量 S\mathbf{S} 表示 A 站的码片向量,T\mathbf{T} 表示 B 站的码片向量。两个不同站点的码片序列正交,即两向量点积为 0 。

ST=1mi=1mSiTi=0\mathbf{S} \cdot \mathbf{T} = \frac{1}{m} \sum\limits_{i=1}^{m}S_{i}T_{i}=0

任何一个码片向量与自身的规格化内积都为 1 ,任何一个码片向量与自身反码的向量内积为 -1

SS=1mi=1mSiSi=1mi=1mSi2=1mi=1m(±1)2=1\mathbf{S} \cdot \mathbf{S} = \frac{1}{m}\sum\limits_{i=1}^{m} S_{i}S_{i}=\frac{1}{m}\sum\limits_{i=1}^{m} S_{i}^{2}=\frac{1}{m}\sum\limits_{i=1}^{m}(\pm 1)^{2}=1

令向量 T=(11+11+1+1+11)\mathbf{T}=(-1-1+1-1+1+1+1-1)

  • A1C:(111+1+11+1+1)A \xrightarrow{1} C:(-1-1-1+1+1-1+1+1)
  • B0C:(+1+11+1111+1)B \xrightarrow{0} C:(+1+1-1+1-1-1-1+1)

向量线性叠加得到 ST=(0,0,2,2,0,2,0,2)\mathbf{S}-\mathbf{T}=(0,0,-2,2,0,-2,0,2)

C 站点对收到的消息与 S\mathbf{S} 点积得到 A 发来的消息,与 T\mathbf{T} 点积得到 B 发来的消息。

3.5.2. 随机访问介质访问控制

不采用集中控制方式解决发送信息的次序问题,所有用户能根据自己的意愿随机地发送信息,占用信道全部速率。

在总线形网络中,当有两个或多个用户同时发送信息时,就会产生帧冲突,导致所有冲突用户的发送帧均失败。为解决随机接入发生的碰撞,每个用户需要按照一定的规则反复重传它的帧,直到无碰撞通过。

常用协议有 ALOHA 协议、 CSMA 协议、 CSMA/CD 协议、 CSMA/CA 协议等,核心思想都是:胜利者通过争用获得信道,从而获得信息的发送权。因此随机访问介质访问控制协议又称争用型协议。

各结点之间的通信既不共享空间,也不共享时间,实质上将广播信道转化为点到点信道。

1. ALOHA 协议

纯 ALOHA 协议

当网络中的任意一个站点需要发送数据时,可以不进行任何检测就发送数据。如果在一段时间内未收到确认,那么该站点就认为传输过程中发生了冲突。发啊送站点需要等待一段时间后再发送数据,直至发送成功。

时隙 ALOHA 协议

把所有各站在时间上同步起来,将时间划分为一段段等长的时隙 Slot ,规定只能在每个时隙开始才能发送一个帧。从而避免了用户发送数据的随意性,减少了数据产生冲突的可能,提高了信道的利用率。

在一个时隙中有两个或以上的帧到达时,在下一个时隙将产生碰撞。

比纯 ALOHA 的吞吐量大了 1 倍。

2. CSMA 协议

若每个站点在发送前都先侦听一下共用信道,发现信道空闲后再发送,则会大大降低冲突可能。 即载波侦听多路访问协议。

1-坚持 CSMA

基本思想:一个结点要发送数据时,首先侦听信道,如果信道空闲,立即发送;如果信道忙,那么等待,同时继续侦听直到信道空闲;如果发生冲突,那么随机等待一段时间后,再重新开始侦听信道。

侦听到忙,继续坚持侦听;侦听到空闲,发送的概率为 1 ,即立即发送

传播延迟对 1-坚持 CSMA 协议的性能影响较大。结点 A 开始发送数据时,结点 B 正好也有数据要发送,但 A 发出的数据信号还未到达 B ,但 B 侦听到空闲,立即发送,会导致冲突。

非坚持 CSMA

基本思想:一个结点要发送数据时,首先侦听信道,如果信道空闲,立即发送;如果信道忙,那么放弃侦听,随机等待一段时间后,再重复上述过程。

降低了多个结点等待信道空闲后同时发送数据导致冲突的概率,但也增加数据在网络中的平均延迟。

p\displaystyle{ p }-坚持 CSMA

基本思想:一个结点要发送数据,首先侦听信道,如果忙,则持续侦听,直至空闲;如果信道空闲,则以概率 p\displaystyle{ p } 发送数据,以概率 1p\displaystyle{ 1 - p } 推迟到下一个时隙;如果下一个时隙信道仍然空闲,仍以 p\displaystyle{ p } 概率发送,1p\displaystyle{ 1 - p } 概率推迟到下一个时隙。

3. CSMA/CD 协议

常用于以太网

载波侦听多路访问/碰撞检测

  • 载波侦听:发送前先侦听,若有其他站点正在发送数据,则暂时不发送,等待信道空闲再发送。
  • 碰撞检测:边发边听,以便判断自己在发送数据时其他站点是否也在发送数据
先听后发,边听边发,冲突停发,随机重发
  1. 适配器从网络层活的一个分组,封装成以太网帧,放入适配器的缓存,准备发送
  2. 如果适配器侦听到信道空闲,那么它就开始发送该帧。如果适配器侦听到信道忙,那么持续侦听直至信道上没有信号能量,然后开始发送该帧
  3. 在发送过程中,适配器持续检测信道,若一直未检测到碰撞,则顺利地把这个帧发送完毕。若检测到碰撞,则中止数据的发送,并发送一个拥塞信号,让所有用户知道
  4. 在中止发送后,适配器就执行指数退避算法,等待一段随机时间后返回到步骤 2

电磁波在总线上传播速率有限,当某个时刻发送站点检测到信道空闲时,此时信道并不一定是空闲的。

public/network/jw025346yfdg.png

t=0\displaystyle{ t = 0 } 时 A 发送数据,t=τδt=\tau-\delta 时 B 不知道信道繁忙而发送数据,双方都不知道。t=τt=\tau 时 B 检测到碰撞,停止发送。 t=2τδt=2 \tau -\delta 时, A 检测到碰撞,也停止发送。显然 CSMA/CD 中的站点不可能同时进行发送和接收,因此采用 CSMA/CD 协议的以太网只能进行半双工通信。

站 A 在发送帧后最多 2τ2\tau 时间内可以知道发送的帧有没有碰撞,因此把以太网端到端往返时间 2τ2\tau 称为争用期(或冲突窗口碰撞窗口)。每个站在自己发送数据之后的一小段时间内,存在发生碰撞的可能性,只有经过争用期这段时间还未检测到碰撞时,才能确定这次发送不会发生碰撞。

为了确保发送站在发送数据的同时能检测到可能存在的碰撞,需要在发送完帧之前就能收到自己发送出去的数据,即帧的传输时延至少要两倍于信号在总线中的传播时延,所以 CSMA/CD 总线网中的所有数据帧都必须要大于一个最小帧长。任何站点收到帧小于最小帧长时,就把它当作无效帧立即丢弃。

最小帧长 = 总线传播时延 × 数据传输速率 × 2

以太网

以太网规定取 51.2μs51.2 \mu s 为争用期的长度。对于 10Mb/s10 \text{Mb/s} 的以太网,在争用期内可以发送 512 bit 即 64 B 。在以太网发送数据,如果前 64 B 没有发生冲突,那么后续数据也不会发生冲突(表示已经成功抢占信道)。

如果发生冲突,那么一定在前 64 B 中,由于一旦检测到冲突就立即停止发送,所以小于 64 B 的都是无效帧

如果想要发送小于最小帧长的帧,则需要在 MAC 子层中于数据字段后面加入一个整数字节的填充字段,以保证以太网的 MAC 帧长度不小于 64 B

CSMA/CD 采用二进制指数退避算法来解决碰撞问题。

  1. 确定基本退避时间,一般取争用期 2τ2\tau
  2. 定义参数 k\displaystyle{ k },等于重传次数,但 k\displaystyle{ k } 不超过 10,即 k=min[k=\min[ 重传次数 ,10]\displaystyle{ , 10 ] }
  3. 从离散的整数集合 [0,1,,2k1][0,1,\cdots,2^{k}-1] 中随机选取一个数 r\displaystyle{ r },重传所需要的退避时间就是 2rτ2r\tau
  4. 当重传 16 次仍然不成功,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧并向高层报错

4. CSMA/CA 协议

用于无线局域网环境

CSMA/CD 无法直接用于无线局域网环境,因为
  • 接收信号的强度往往远小于发送信号的强度,且在无线介质上的信号强度的动态变化范围很大,因此若要实现碰撞检测,则硬件上的花费过大
  • 在无线通信中,并非所有的站点都能听见对方,即存在“隐蔽站”问题

802.11 标准定义了广泛应用于无线局域网的 CSMA/CA 协议,碰撞检测改成了碰撞避免,即尽可能降低碰撞发生的概率。

由于无线信道的通信质量远不如有限信道,802.11 使用链路层确认/重传(ARQ)方案,即站点每通过无线局域网发送完一帧,就要在收到对方的确认帧后才能继续发送下一帧。

为避免碰撞,所有的站完成发送后,必须再等待一段很短的时间(继续监听)才能发送下一帧。这段时间称为帧间间隔 IFS 。帧间间隔的长短取决于该站要发送的帧的类型。 802.11 使用了 3 种 IFS

  • SIFS 最短
  • PIFS 点协调 IFS
  • DIFS 分布式协调 IFS

信道从忙态到空闲态时,任何一个站要发送数据帧,不仅要等一个帧间间隔,还要进入争用窗口,计算随机退避时间以便再次试图接入信道,因此降低了碰撞发生的概率。当且仅当检测到信道空闲且这个数据帧是要发送的第一个数据帧时,才不使用退避算法,其他所有情况都使用退避算法。

  1. 在发送第一个帧前检测到信道忙
  2. 每次重传
  3. 每次成功发送后要发送下一帧
算法归纳如下
  1. 若站点最初有数据要发送(不是发送不成功再重传),且检测到信道空闲,在等待 DIFS 后,就发送整个数据帧
  2. 否则,站点执行 CSMA/CA 退避算法,选取一个随机回退值,一旦检测到信道忙,退避计时器就保持不变。只要信道空闲,就进行倒计时。
  3. 当退避算法计时器减到 0 (这时信道只可能是空闲的),站点就发送整个帧并等待确认
  4. 发送站若收到确认,就知道已发送的帧被目的站正确接收。这时如果要发送第二帧,就要从步骤 2 开始

若发送站在在规定时间内没有收到确认帧 ACK(由重传计时器控制),就必须重传该帧,再次采用 CSMA/CA 协议争用该信道,直到收到确认,或经过若干次重传失败后放弃发送。

处理隐蔽站问题:RTS 和 CTS

A 和 B 都在 AP 的覆盖范围内,但 A 和 B 较远,彼此听不到对方。当 A 和 B 检测到信道空闲时,都向 AP 发送数据,导致碰撞,这就是隐蔽站问题。

public/network/jw-ap-dfdf.svg

为避免该问题, 802.11 允许发送站对信道进行预约。源站要发送数据之前先广播一个很短的请求发送 RTS 控制帧,包括源地址、目的地址和这次通信(含相应的确认帧)所储蓄时间,该帧能被其他范围内包括 AP 在内的所有站点听到。若信道空闲,则 AP 广播一个允许发送 CTS 控制帧,它包括这次通信所需持续时间(从 RTS 拷贝),该帧也能被其范围内包括 A 和 B 在内的所有站点听到。 B 和其他站听到 CTS 后,在 CTS 帧中指明的时间内将抑制发送。

CTS 的两个目的:

  • 给源站明确的发送许可
  • 指示其他站点在预约期内不要发送
CSMA/CD 和 CSMA/CA 的区别
  • CSMA/CD 可以检测冲突,但无法避免;CSMA/CA 发送数据的同时不能检测信道上有无冲突,本结点中没有冲突不意味着接收结点没有冲突,只能尽量避免
  • 传输介质不同。CSMA/CD 用于总线形以太网,CSMA/CA 用于无线局域网 802.11a/b/g/n
  • 检测方式不同。CSMA/CD 通过电缆中电压变化来检测;CSMA/CA 采用能量检测、载波检测、能量载波混合检测三种检测信道空闲的方式

3.5.3. 轮询访问:令牌传递协议

用户不能随机地发送信息,而要通过一个集中控制的监控站,以循环方式轮询每个结点,再决定信道的分配。当某个结点使用信道时,其他结点都不能使用信道。典型的轮询访问介质访问控制协议是令牌传递协议,主要用在令牌环局域网中。

在令牌传递协议中,一个令牌 Token 沿着环形总线在各结点计算机间一次传递。令牌是一个特殊的 MAC 控制帧,本身并不包含信息,仅控制信道的使用,确保统一时刻只有一个站点独占信道。当环上的一个站点希望传送帧时,必须等待令牌。一旦收到令牌,站点便可启动发送帧。帧中包含目的地址,以表示哪个站点应接收此帧。站点只有取得令牌后才能发送数据帧,因此不会发生碰撞。站点在发送完一帧后,应释放令牌,以便让其他站使用。由于令牌在网环上是按顺序依次传递,因此对所有入网的计算机,访问权的公平的。

令牌环网中令牌和数据的传递过程
  1. 网络空闲时,环路中只有令牌帧在循环传递。
  2. 令牌传递到有数据要发送的站点时,该站点就修改令牌的一个标志位,并在令牌中附加自己需要传输的数据,将令牌编程一个数据帧,然后将这个数据帧发送出去。
  3. 数据帧沿着环路传输,接收到的站点一边转发数据,一边查看帧的目的地址。如果目的地址和自己的地址相同,那么接收站就复制该数据帧以便进一步处理。
  4. 数据帧沿着环路传输,直到到达该帧的源站点,源站点收到自己发出去的真后便不再转发。同时,通过检验返回的帧来查看数据传输过程中是否出错,有错则重传。
  5. 源站点传送完数据后,重新产生一个令牌,并传递给下一个站点,以交出信道控制权。

令牌传递网络中,传输介质的物理拓扑不必是一个环,但是为了把对介质访问的许可从一个设备传递到另一个设备,令牌在设备间的传递通路逻辑上必须是一个环

轮询介质访问控制非常适合负载很高的广播信道,即多个结点在同一时刻发送数据概率很大的信道。如果用随机访问,那么冲突概率会很大,而轮询则能很好缓解这一问题。

即使是广播信道也可通过介质访问控制机制使广播信道逻辑上变为点对点的信道,所以说数据链路层研究的是“点到点”之间的通信。

3.6. 局域网

3.6.1. 局域网的基本概念和体系结构

局域网是指在一个较小的地理范围内,将各种计算机、外部设备和数据库系统等通过双绞线、同轴电缆等连接介质互相连接起来,组成资源和信息共享的计算机互联网络。

主要特点
  1. 为一个单位所拥有,且地理范围和站点数目均有限
  2. 所有站点共享较高的总带宽(即较高的数据传输速率)
  3. 较低的时延和较低的误码率
  4. 各站为平等关系而非主从关系
  5. 能进行广播和组播

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

常见局域网拓扑结构主要有 4 类
  • 星形
  • 环形
  • 总线型
  • 星形和总线形结合的符合型结构

局域网可以使用双绞线、铜缆、光纤等多种传输介质,其中双绞线为主流传输介质。

局域网的介质访问控制方法主要有 CSMA/CD令牌总线令牌环,其中前两种方法主要用于总线形局域网,令牌环主要用于环形局域网。

三种特殊的局域网拓扑实现
  • 以太网:逻辑拓扑是总线形结构,物理拓扑是星形或拓展星形结构。
  • 令牌环 Token Ring, IEEE 802.5 :逻辑拓扑是环形,物理拓扑是星形
  • FDDI 光纤分布数字接口,IEEE 802.8 :逻辑拓扑是环形结构,物理拓扑是双环结构

IEEE 802 标准定义的局域网参考模型只对应于 OSI 参考模型的数据链路层和物理层,并将数据链路层拆分为两个子层:逻辑链路控制 (LLC) 子层媒体接入控制 (MAC) 子层

与接入传输媒体有关的内容都放在 MAC 子层,它向上屏蔽对物理层访问的各种差异,提供对物理层的统一访问接口,主要包括:组帧和拆卸帧、比特传输差错检测、透明传输。

LLC 子层与传输媒体无关,它向网络层提供无确认无连接、面向连接、带确认无连接、高速传送 4 种不同的连接服务类型。

public/network/jwfdg03.png

3.6.2. 以太网与 IEEE 802.3

IEEE 802.3 标准是一种基带总线的局域网标准,它描述物理层和数据链路层的 MAC 子层的实现方法。

以太网逻辑上采用总线形拓扑结构,以太网中的所有计算机共享一条总线,信息以广播方式发送。为了保证数据通信的方便性和可靠性,以太网简化了通信流程并使用 CSMA/CD 方式对总线进行访问控制。

以太网采用两项措施以简化通信

  1. 采用无连接的工作方式,不对发送的数据帧编号,也不要求接收方发送确认,即以太网尽最大努力交付数据,提供的是不可靠的服务,对差错校正则由高层完成。
  2. 发送的数据都使用曼彻斯特编码的信号,每个码元中间出现一次电压转换,接收端利用这种电压转换方便地把同部信号提取出来。

1. 以太网的传输介质与网卡

常用传输介质有 4 种:粗缆、细缆、双绞线、光纤。

参数10BASE510BASE210BASE-T10BASE-FL
传输媒体基带同轴电缆(粗缆)基带同轴电缆(细缆)非屏蔽双绞线光纤对 (850nm)
编码曼彻斯特编码曼彻斯特编码曼彻斯特编码曼彻斯特编码
拓扑结构总线形总线形星形点对点
最大段长500m185m100m2000m
最多结点数目1003022

计算机与外界局域网的连接是通过主机箱内插入的一块网络接口板(又称网络适配器或网络接口卡)实现的。网卡上装有处理器和存储器,是工作在数据链路层的网络组件。网卡和局域网的通信是通过电缆或双绞线以串行的方式进行的。而网卡和计算机的通信则是通过计算机主板上的 I/O 总线并行方式进行的。因此,网卡的重要功能就是进行数据的串并转换。网卡不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码解码、数据缓存功能等。

全世界每块网卡在出厂时都有一个唯一的代码,称为介质访问控制 (MAC) 地址,这个地址用于控制主机在网络上的数据通信。数据链路层设备(网桥、交换机等)都使用各个网卡的 MAC 地址。另外,网卡控制着数据对介质的访问,因此网卡也工作在物理层,因为它只关注比特,而不关注任何地址信息和高层协议信息。

2. 以太网的 MAC 帧

每块网卡中的 MAC 地址也称物理地址,地址长 6 字节,高 24 位为厂商代码,低 24 字节为厂商自行分配的网卡序列号。严格来讲,局域网的“地址”应是每个站的“名字”或标识符。

由于总线上使用的是广播信道,因此网卡从网络上每收到一个 MAC 帧,首先要用硬件检查 MAC 帧中的 MAC 地址。如果是发往本站的帧,那么收下,否则丢弃。

以太网 MAC 帧格式有两种标准: DIX Ethernet V2 标准IEEE 802.3 标准。在此介绍最常用的以太网 V2 的 MAC 帧格式(即前者)。

前导码:使接收端与发送端时钟同步。在帧前插入的 8 个字节可再分为两个字段:前 7 字节为前同步码,用来快速实现 MAC 帧的比特同步;后 1 字节为帧开始定界符,表示后面的信息就是 MAC 帧。

public/network/jw03gfdfgh.svg

  • 数据 46~1500 字节,包含高层协议消息。由于 CSMA/CD 算法的限制,以太网帧必须满足最小的长度要求 64 字节,数据较少时必须加以填充。
  • 校验码 4 字节,采用 32位循环荣誉码,不但要检验 MAC 帧的数据部分,还要检验目的地址、源地址、类型字段,但不校验前导码。
  • 类型指出数据域中携带的数据应交给哪个协议实体处理。

802.3 帧格式与 V2 格式的不同之处在于用长度域替代了 DIX 帧中的类型域,指出数据域的长度。

3. 高速以太网

速率达到或超过 100 Mb/s 的以太网称为高速以太网。

100BASE-T 以太网

100BASE-T 以太网是在双绞线上传送 100 Mb/s 基带信号的星形拓扑结构以太网,使用 CSMA/CD 协议。这种以太网支持全双工、半双工,可在全双工下工作而无冲突发生。因此在全双工下不使用 CSMA/CD 协议。

保持最短帧长不变,但一个网段的最大电缆长度减小到 100 m ,帧间间隔从原来的 9.6 μs 改为 0.96 μs

吉比特以太网

即千兆以太网,允许在 1Gb/s 速率下用全双工和半双工方式工作。半双工下使用 CSMA/CD 协议。与 10BASE-T 和 100BASE-T 技术向后兼容。

10 吉比特以太网

与前面帧格式完全相同。10 吉比特以太网还保留了 802.3 标准规定的以太网最小和最大帧长,便于升级。只使用光纤作为传输媒体。只工作在全双工,没有争用问题,不使用 CSMA/CD 协议。

3.6.3. IEEE 802.11 无线局域网

1. 组成

无线局域网分为两大类:有固定基础设施的无线局域网无固定基础设施的移动自组织网络

有固定基础设施的无线局域网

802.11 使用星形拓扑,其中心为接入点 AP ,在 MAC 层使用 CSMA/CA 协议。使用 802.11 系列协议的局域网又称为 Wi-Fi

802.11 标准规定无线局域网的最小构件是基本服务集 BSS 。一个基本服务集包括一个接入点和若干移动站。各站在本 BSS 内之间的通信,或与本 BSS 外部站的通信,都必须通过本 BSS 的 AP 。

安装 AP 时,必须为该 AP 分配一个不超过 32 字节的服务集标识符 SSID 和一个信道。 SSID 是指使用该 AP 的无线局域网的名字。一个基本服务集覆盖的地理范围称为一个基本服务区 BSA ,无线局域网的基本服务区范围直径一般不超过 100 m 。

一个基本服务集可以是孤立的,也可通过 AP 连接到一个分配系统 DS ,然后再连接到另一个基本服务集,就构成了一个扩展服务集 ESS 。 ESS 还可以通过一种称为 Portal 的设备为无线用户提高到有限链接的以太网接入。 Portal 的作用相当于一个网桥。

public/network/jw036547vb.png

无固定基础设施的移动自组织网络

又称自组网络 ad hoc network 。自组网络没有 AP ,而是由一些平等状态的移动站相互通信组成的临时网络。各点之间地位平等,中间结点都为转发结点,因此都具有路由器功能。

自组网络把移动性扩展到无线领域中的自治系统,具有自己特定的路由选择协议,并且可以不和因特网相连。

2. 802.11 局域网的 MAC 帧

共有三种类型:数据帧、控制帧、管理帧

三大部分
  • MAC 首部,共 30 直接。帧的复杂性都在 MAC 帧首部
  • 帧主体,即数据部分,不超过 2312 字节。比以太网的最大长度大很多
  • 帧检验序列 FCS 作为尾部, 4 字节

public/network/jw0380211.png

首部最重要的是 4 个地址字段,上述地址都是 MAC 地址。第 4 个用于自组网络,仅讨论前三个。

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

public/network/jw03456dfgs.png

两个 AP 通过有线连接到路由器,现在路由器要向 A 站发送数据。路由器是网络层设备,看不见链路层的接入点 AP ,只认识 A 的 IP 地址。而 AP 是链路层设备,只认识 MAC 地址,不认识 IP 地址。

  1. 路由器从 IP 数据报获知 A 的 IP 地址,并使用 ARP 获取站 A 的 MAC 地址。获取站 A 的 MAC 地址后,路由器接口 R1 将该 IP 数据报封装成 802.3 帧(以太网帧只有两个地址),该帧的源地址字段是 R1 的 MAC 地址,目的地址字段是 A 的 MAC 地址
  2. AP 收到该 802.3 帧,将其转换为 802.11 帧,在帧控制字段中,“去往 AP = 0”而“来自 AP=1”;地址 1 是 A 的 MAC 地址,地址 2 是 AP 的 MAC 地址,地址 3 是 R1 的 MAC 地址。这样, A 可以确定(从地址 3 )将数据报发送到子网中的路由器接口的 MAC 地址。

而对于站 A 向路由器接口 R1 发送数据

  1. A 生成一个 802.11 帧,在帧控制字段中,“去往 AP = 1”,“来自 AP = 0”;地址 1 是 AP 的 MAC 地址,地址 2 是 A 的 MAC 地址,地址 3 是 R1 的 MAC 地址。
  2. AP 收到 802.11 帧后,将其转换为 802.3 帧,该帧的源地址字段是 A 的 MAC 地址,目的地址字段是 R1 的 MAC 地址。

地址 3 在 BSS 和有线局域网互联中起着关键作用,它允许 AP 在构建以太网帧时能够确定目的的 MAC 地址。

3.6.4. VLAN 基本概念与基本原理

以太网是一个广播域,当一个以太网包含的计算机太多时,往往会导致

  • 出现大量的广播帧,特别是经常使用的 ARP 和 DHCP 协议
  • 一个单位的不同部门共享一个局域网,对信息保密和安全不利

通过虚拟局域网 Virtual LAN 可以把一个较大的局域网分割成一些较小的与地理位置无关的逻辑上的 VLAN ,而每个 VLAN 是一个较小的广播域。

802.3ac 标准定义了支持 VLAN 的以太网帧格式的扩展。在以太网帧中插入一个 4 字节的标识符,称为 VLAN 标签,用来指明发送该帧的计算机数据哪一个虚拟局域网。插入 VLAN 标签的帧称为 802.1Q 帧,此时以太网的最大帧长变成了 1522 字节。

public/network/jw0354yg4.png

3.7. 广域网

3.7.1. 基本概念

是指覆盖范围很广(远超一个城市的范围)的长距离网络。广域网是因特网的核心部分,其任务是长距离运送主机所发送的数据。连接广域网各结点交换机的链路都是高速链路,可以是长达几千千米的光缆线路,也可以是长达几万千米的点对点卫星线路。广域网首要考虑的问题是通信容量必须足够大,一遍支持日益增长的通信量。

广域网不等于互联网,互联网可以连接不同类型的网络,通常使用路由器来连接。局域网可以通过广域网与另一个相隔很远的局域网通信。

广域网由一些结点交换机(注意不是路由器,结点交换机在单个网络中转发分组,路由器在多个网络构成的互联网中转发分组)及链接这些交换机的链路组成。结点交换机的功能是将分组存储并转发。结点之间都是点到点连接,但为了提高网络的可靠性,通常一个结点交换机往往与多个结点交换机相连。

局域网使用的协议主要在数据链路层(还有少量在物理层),而广域网使用的协议主要在网络层。

区别广域网局域网
覆盖范围很广,通常跨区域很小,通常在一个区域内
连接方式结点之间都是点到点连接,但为了提高网络的可靠性,一个结点往往链接多个结点交换机普遍采用多点接入技术
OSI 参考模型层次物理层、数据链路层、网络层物理层、数据链路层
着重点强调资源共享强调数据传输

联系与相似点

  1. 广域网和局域网都是互联网的重要组成构件,从互联网的角度上看,二者平等
  2. 连接到一个广域网或局域网上的主机在该网内进行通信时,只需要使用其网络的物理地址

广域网中的一个重要问题就是路由选择和分组转发。路由选择协议负责搜索分组从某个节点到目的节点的最佳传输路由,一遍构造路由表,然后从路由表再构造出转发分组的转发表。分组是通过转发表进行转发的。

3.7.2. PPP 协议

PPP 是使用串行线路通信的面向字节的协议,该协议应用在直接连接两个结点的链路上。设计的目的主要是用来通过拨号或专线方式建立点对点链接发送数据,使其称为各种主机、网桥和路由器之间简单连接的一种共同的解决方案。

PPP 是在 SLIP 的基础上发展而来的,既可在异步线路上传输,又可在同步线路上使用;不仅用于 Modem 链路,也用于租用的路由器到路由器的线路。

三个组成部分
  1. 链路控制协议 LCP 。一种扩展链路控制协议,用于检录、配置、测试、管理数据链路。
  2. 网络控制协议 NCP 。 PPP 允许同时采用多种网络层协议,每个不同的网络层协议要用一个相应的 NCP 来配置,为网络层协议建立和配置逻辑连接。
  3. 一个将 IP 数据报封装到串行链路的方法。 IP 数据报在 PPP 帧中就是其信息部分,这个信息部分的长度受 MTU 限制。

public/netty/jw03fdg43pq.png

  • F: 标志字段,规定为 0x7E
  • A: 地址字段,规定为 0xFF
  • C: 控制字段,规定为 0x03
  • 信息字段长度 0~1500 B ,由于是点对点,无需采用 CSMA/CD 协议,无最短帧。依然需要采取一些措施来实现透明传输。

public/network/jw03ppp.png

Caution
  1. PPP 提供差错检测但不提供纠错功能,只保证无差错接收(CRC 校验),是不可靠的传输协议,不使用序号和确认机制
  2. 仅支持点对点链路通信,不支持多点线路
  3. 只支持全双工
  4. 两端可以允许不同的网络层协议,但仍可以使用同一个 PPP 通信
  5. 面向字节,当出现字段与标志字段一致的比特组合,有两种处理方法:异步线路中采用字节填充法;同步线路中采用硬件完成比特填充。

3.7.3. * HDLC 协议

面向比特,不依赖于任何一种字符编码集;数据报文可透明传输,用于实现透明传输的 “0 比特插入法” 易于硬件实现;全双工通信;所有帧采用 CRC 校验,对信息帧进行顺序编号,方式漏收或重发,可靠性高;传输功能与处理功能分离,灵活性高。

public/network/jw03hdlc.png

3.8. 数据链路层设备

* 3.8.1. 网桥

两个或多个以太网通过网桥连接后,就成为一个覆盖范围更大的以太网,原来的每个以太网就称为一个网段。网桥工作在链路层的 MAC 子层,可以使以太网各网段称为隔离开的冲突域。

3.8.2. 局域网交换机

1. 原理和特点

局域网交换机,又称以太网交换机,本质上说,以太网交换机是一个多端口的网桥,工作在数据链路层。交换机能经济地将网络 分成小的冲突域,为每个工作站提供更高的带宽。

原理是:检测从以太网端口来的数据帧的源和目的地的 MAC 地址,然后与系统内部的动态查找表比较,若数据帧的源 MAC 不在查找表中,则将该地址加入查找表,并将数据帧发送给相应的目的端口。

以太网交换机对工作站是透明的,因此管理开销小,简化了网络节点增加、移动、网络变化的操作。利用以太网交换机可以实现 VLAN ,可以隔离冲突域也可以隔离广播域。

对于传统 10 Mb/s 的共享 式以太网,若共有 N\displaystyle{ N } 各用户,每个用户占有的平均带宽只有总带宽的 1N\displaystyle{ \frac{ 1 }{ N } }。使用以太网交换机时,虽然每个端口到主机的带宽还是 10 Mb/s ,但由于一个用户在通信时是独占而不是和其他用户共享传输媒介的带宽,因此拥有 N\displaystyle{ N } 个端口的交换机总容量为 N×10N\times 10 Mb/s 。

特点
  1. 每个端口都直接与单台主机相连,并且一般都工作在全双工
  2. 能同时连通多对端口,使每对互相通信的主机都能像独占通信媒体那样,无碰撞传输数据
  3. 是一种即插即用设备,内部的帧的转发表是通过自学习算法逐渐建立起来的
  4. 由于使用专用的交换结构芯片,交换速率高
  5. 独占传输媒体的带宽

以太网交换机主要采用两种交换方式:

  1. 直通式交换机,只检查帧的目的地址,使得帧在接受后几乎能马上被传出去。速度快,但缺乏智能性和安全性,不支持具有不同速率的端口的交换。
  2. 存储转发式交换机,先将接收到的帧缓存到高速缓存器中,并检查数据是否正确,确认无误后通过查找表转换成输出端口将该帧发送出去。如果发现帧错,则丢弃。可靠性高,支持不同速率端口之间转换,延迟较大。

2. 自学习功能

决定一个帧是应该转发到某个接口还是将其丢弃称为过滤。决定一个帧应该被移动到哪个接口称为转发。交换机的过滤和转发借助于交换表完成。交换表的一个表项至少包含:一个 MAC 地址;连通该 MAC 地址的交换机接口。

public/network/jw03jhjsw.png

交换机所连的主机会随时变化,这就需要更新交换表中的表项。交换表中每个表项都设有一定的有效时间,过期的表项会自动删除。