数据链路层——为网络层提供服务,信道控制
数据链路层在物理层基础上向网络层提供服务,主要作用是将提供的可能出错的物理连接改造为逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。
为网络层提供服务:
- 无确认的无连接服务。适用于实时通信或误码率较低的通信信道,如以太网。
- 有确认的无连接服务。无线通信。
- 有确认有连接的服务。
一、成帧
1.1 帧定界、帧同步、透明传输
帧定界:确定帧的界限,需要给帧加上首部和尾部。
帧同步:接收方从接收到的二进制比特流中区分出帧的起始与中止。每种数据链路层协议都规定了帧的数据部分的长度上限——最大传输单元(MTU)。
透明传输:不管所传数据是怎样的比特组合,都能够在链路上传送。
1.2 成帧
字符计数法
字符填充
比特填充:使用01111110表示开始和结束。在数据中出现连续的5个“1”时,自动在其后插入一个“0”
违规编码:例如在曼彻斯特编码中“低-低”电平是无违规的的,采用违规序列来界定帧的起始和中止。局域网IEEE802采用违规编码。
二、差错控制
主要有两类:自动重传(ARQ)和前向纠错(FEC)
2.1 检错
奇偶校验:奇数或偶数个“1”,只能检查出奇数个的错误
循环冗余码(CRC):
多项式 G ( x ) = 1101 ( 即 r = 3 ) G(x)=1101(即r=3) G(x)=1101(即r=3)
待传数据 M ( x ) = 101001 ( 即 m = 6 ) M(x)=101001(即m=6) M(x)=101001(即m=6),表示成多项式为 X 5 + X 3 + 1 X^5+X^3+1 X5+X3+1
余数 R = 001 R=001 R=001
发送出去的数据为 101001 001 101001\ 001 101001 001
- 循环冗余码有纠错功能,但数据链路层只是用了检错功能。
2.2 纠错
海明码:海明码只能纠错一位
-
海明码的位数: n + k < 2 k − 1 n+k<2^k-1 n+k<2k−1
-
校验位:低1、2、4…位
H 7 H 6 H 5 H 4 H 3 H 2 H 1 D 4 D 5 D 2 P 3 D 1 P 2 P 1 H_7\ H_6\ H_5\ H_4\ H_3\ H_2\ H_1\\ D_4\ D_5\ D_2\ P_3\ D_1\ P_2\ P_1 H7 H6 H5 H4 H3 H2 H1D4 D5 D2 P3 D1 P2 P1 -
校验位取值:
D11 D10 D9 D8 D7 D6 D5 P8 D4 D3 D2 P4 D1 P2 P1 √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ -
纠错:
若
S
3
S
2
S
1
=
000
S_3S_2S_1=000
S3S2S1=000无错,若
=
001
,
H
1
=001,H1
=001,H1有错
101
0
‾
0
10
‾
1
1
0
0
‾
10
0
1
‾
101
0
‾
101\underline{0}0\underline{10}\\ 1~~1~~0~~\underline0\\ 10~~~~0\underline1~~\\ 101\underline0~~~~~~
10100101 1 0 010 01 1010
三、流量控制与可靠传输机制
流量控制:
- 对数据链路层来说,控制的是相邻两节点之间的数据链路上的流量;运输层控制的是端到端之间的流量。
- 方法:停止-等待协议、滑动窗口
可靠传输:
-
确认机制
捎带确认:确认捎带在回复帧中
-
超时重传:发送数据后启动计时器。
传统重传机制:停止-等待ARQ、后退N帧ARQ、选择重传ARQ
3.1 滑动窗口
发送窗口:
接收窗口:
特性:
-
接收窗口向前滑动时,发送窗口才有可能向前滑动。
-
停止-等待协议、后退N帧、选择重传的区别:
-
接收窗口大小为1时,可以保证有序接收。
-
与传输层滑动窗口协议的区别:窗口大小是固定的。
3.2 停止-等待协议(单帧滑动窗口)
发送方每发送一帧,都要等待应答后才能发送下一帧。
可能出现以下两种差错:
- 发送帧出错,接收方丢弃,计时器超时,一直重传
- 确认帧出错。发送的帧交替用0和1标识,连续出现相同的确认帧表示收到重复帧。
发送方和接收方都必须设置缓冲区。
停止-等待协议信道利用率很低。
3.3 后退N帧协议(GBN)
源站:连续发送数据帧,并为每个帧设置超时计时器
接收端:按顺序接收数据帧,接收窗口大小为1。
若采用n比特对帧编号,发送窗口尺寸 1 ≤ W T ≤ 2 n − 1 1\le W_T\le 2^n-1 1≤WT≤2n−1
信道传输质量很差导致误码率较大时,后退N帧不一定优于停-等式协议。
3.4 选择重传协议(SR)
加大接收窗口,接收所有在接收窗口的数据帧,等到缺失的数据帧全部收到再一块发送。
源站:为每个发送缓冲区设置一个计时器,超时重传。
接收端:出错时发送否定帧NAK,发送方对NAK指定的帧重传。
1.为保证接收方窗口向前移动后,新窗口序号和旧窗口序号没有重叠部分,发送窗口 W T W_T WT,接收窗口 W R W_R WR,满足 W T + W R ≤ 2 n W_T+W_R\le2^n WT+WR≤2n,且 W R ≤ W T W_R\le W_T WR≤WT。
2.假定采用累计确认,那么 W R ≤ 2 ( n − 1 ) W_R\le 2^{(n-1)} WR≤2(n−1),接收窗口最大时, W T m a x = W R m a x = 2 ( n − 1 ) W_{Tmax}=W_{Rmax}=2^{(n-1)} WTmax=WRmax=2(n−1)。
3.一般情况下,在SR中
W
T
=
W
R
W_T=W_R
WT=WR
3.5 信道利用率和信道吞吐率
信 道 利 用 率 = 发 送 有 效 数 据 的 时 间 / 发 送 周 期 = ( 周 期 内 发 送 的 有 效 比 特 / 发 送 速 率 ) / 发 送 周 期 = ( L / C ) / T 信道利用率=发送有效数据的时间/发送周期=(周期内发送的有效比特/发送速率)/发送周期=(L/C)/T 信道利用率=发送有效数据的时间/发送周期=(周期内发送的有效比特/发送速率)/发送周期=(L/C)/T
信 道 吞 吐 率 = 信 道 利 用 率 × 发 送 速 率 信道吞吐率=信道利用率\times发送速率 信道吞吐率=信道利用率×发送速率
四、介质访问控制子层(MAC子层)
作用:决定广播信道中的信道分配。
介质访问控制:采取一定措施使两对节点之间通信不会互相干扰。
方法:
- 信道划分介质访问控制(静态)
- 随机访问介质访问控制(动态)
- 轮询访问介质访问控制(动态)
在介质访问子层广播信道逻辑上变成点对点的信道,所以说数据链路层研究的是“点到点”之间的通信。
4.1 信道划分(多路复用)
信道复用把时域和频域合理分配给网络上的设备。
多路复用:在同一条介质上同时携带多个传输信号。逻辑上分为几条用于两个接待你之间通信的互不干扰的子信道,实际上就是把广播信道变成点对点信道。
频分多路复用(FDM)
- 将多路基带信号调制到不同频率载波上,再叠加成一个符合信号。
- 每个信道分配的带宽总和不超过信道总带宽。
时分多路复用(TDM)
-
将物理信道按时间分成时间片,轮流使用
-
统计时分多路复用(STDM):不固定分配时隙,按需动态分配。
-
例如:线路传输速率8000bps,4个用户平均速率都为2000bps。TDM时每个用户最高速率为2000bps,STDM时每个用户最高速率为8000bps。
波分多路复用(WDM)
- 光的频分多路复用
码分多路复用(CDM)
-
既共享频率,又共享时间
-
码分多址(CDMA):每个比特时间划分成m个时间片,每个站点指派一个唯一的m位码片序列。发送1时,发送码片序列;发送0时,发送码片序列的反码。
-
两个不同站(A、B)的码片(S、T)序列正交,即规格化内积为0:
S ⋅ T = 1 m ∑ i = 1 m S i T i = 0 S·T=\frac{1}{m}\sum_{i=1}^mS_iT_i=0 S⋅T=m1i=1∑mSiTi=0 -
码片自身规格化内积为1:
S ⋅ S = 1 m ∑ i = 1 m S i S i = 1 S·S=\frac{1}{m}\sum_{i=1}^mS_iS_i=1 S⋅S=m1i=1∑mSiSi=1 -
求发送的数据:
发 送 的 向 量 : ( 1 ) S + ( − 1 ) T = S − T 接 收 的 A : A = S ⋅ ( S − T ) 接 收 的 B : B = T ⋅ ( S − T ) 发送的向量:(1)S+(-1)T=S-T\\ 接收的A:A=S·(S-T)\\ 接收的B:B=T·(S-T) 发送的向量:(1)S+(−1)T=S−T接收的A:A=S⋅(S−T)接收的B:B=T⋅(S−T)
-
4.2 随机访问(ALOHA、CSMA)
-
碰撞/冲突:再总线形网络中,两个或多个用户同时发送信息,会产生帧的冲突
-
核心思想:通过争用获得信道,因此随机访问介质控制协议又称争用型协议。所有用户能够随意发送信息,占用信道全部速率。
-
纯ALOHA
- 不进行任何检测
- 重传策略:等待随机时间然后再重传,直到重传成功
- 吞吐量:
- 网络负载( T 0 T_0 T0时间内发送成功和重传的帧数)G
- 吞吐量( T 0 T_0 T0时间内发送成功的帧数)S
- S = G e − 2 G S=Ge^{-2G} S=Ge−2G
-
时隙ALOHA
- 只能在每个时隙开始才能发送帧
- 优点:减少冲突,提高信道利用率
- S = G e − G S=Ge^{-G} S=Ge−G
-
CSMA
- 载波监听多路访问,比ALOHA多了一个载波侦听装置
- 1-坚持:侦听到信道空闲后,立即发送数据。传播延迟对1-坚持影响较大。
- 非坚持:信道忙则等待随机事件后再继续监听。信道利用率提高,延迟增加。
- p-坚持:信道空闲时p概率发送,1-p概率推迟到下一个时隙;信道忙持续侦听。
- 非坚持:减小冲突概率
- 持续侦听:克服非坚持延迟较长的问题。
-
CSMA/CD(总线局域网)
-
载波监听:先听后说;多址接入:竞争使用总线;碰撞检测:边说边听(半双工)
-
争用期:以太网单程端到端传播时延 τ \tau τ,主机最多经过2 τ \tau τ就可检测到是否发生碰撞。因此往返传播时延** 2 τ 2\tau 2τ为争用期**
-
最小帧长:帧长太短可能会检测不到碰撞。以太网规定最小帧长为64字节。最小帧长=争用期×数据传输速率
-
最大帧长:以太网规定最大数据载荷为1500字节
-
截断二进制指数退避算法
- 退避时间=争用期( 2 τ 2\tau 2τ)×随机数{0,1,…,( 2 k − 1 2^k-1 2k−1)},k=Min[重传次数,10]
-
信道利用率
-
发送一帧占用总线时间 T 0 + τ T_0+\tau T0+τ,帧本身发送时间为 T 0 T_0 T0
信道极限利用率 S m a x = T 0 T 0 + τ S_{max}=\frac{T_0}{T_0+\tau} Smax=T0+τT0
-
-
当重传16次仍不成功,则丢弃并报告
-
-
CSMA/CA(无线局域网)
-
载波监听;多址接入;碰撞避免
-
无线局域网不能使用CSMA/CD因为在无线网卡上检测CD对硬件要求非常,且无线电波传播具有特殊性
-
两种接入方式:
- 分布式协调功能DCF,没有中心站点,通过争用方式获取发送权
- 点协调功能PCF,使用集中接入算法(一般使用AP集中控制)
-
帧间间隔IFS
- 802.11规定所有的站点必须在持续检测信道空闲一段时间后才能发送帧
- 高优先级帧等待时间短,低优先级帧等待时间长
- 短帧间间隔SIFS(28
μ
s
\mu s
μs)
- ACK帧、CTS帧、过长的MAC帧分片后的数据帧、回答AP探寻的帧、AP发出的帧
- DCF帧间间隔FIFS(128
μ
s
\mu s
μs)
- 在DFS方式中发送数据帧和管理帧
-
退避算法
-
4.3 轮询访问(令牌传递)
- 令牌传递协议主要用于令牌局域网
- 令牌使一组特殊的比特组成的帧
- 令牌在环网上按固定顺序传递,站收到令牌后可以发送帧
- 所有站点都进行转发,直到帧回到始发站,由始发站撤销该帧
- 不会发生冲突(因为令牌只有一个)
- 适合负载很高的广播信道
五、数据链路层设备
5.1 网桥
工作在数据链路层的MAC子层,处理对象是帧,可以隔离碰撞域
-
假设每个网段数据量10Mbps,n个合起来最大吞吐量为10nMbps,单个网段最大吞吐量10Mbps
-
多个以太网通过网桥连接后形成更大的局域网
功能:
- 具备路由能力
- 具备转发能力
- 可进行协议转换。一般情况下存储转发类设备都可以实现对协议的转换
- 可以连接不同类型的局域网,把原网络的信息作为数据封装在另一种协议中
- 由足够大的缓存空间
MAC子网没有流量控制功能(流量控制需要用到编号机制,编号机制的实现在LLC子层)
网桥适用于用户数不多和通信量不大的局域网,否则有时会因传播过多的广播信息而产生网络堵塞,即所谓的广播风暴。
路径选择算法:
- 透明网桥(选择的不是最佳路由)
- 网桥按照自学习算法建立转发表
- 使用生成树算法,以确保每个源到每个目的地址都只有唯一的路径
- 源路由网桥(选择的是最佳路由)
- 源站以广播方式发送发现帧,每个网桥都转发该帧,源站选择一个最佳路由
5.2 局域网交换机
是一个多端口的网桥
可以分割冲突域,为每个工作站提供更高的带宽
利用以太网交换机可以实现虚拟局域网(VLAN),不仅可以隔离冲突域,还可以隔离广播域。
特点:
- 每个端口直接和主机相连(普通王强连接到网段),全双工
- 即插即用,转发表(记录MAC地址对应的端口号)是逐步建立起来的
- N个用户,传统10Mbps共享以太网的带宽为1/N×10Mbps,N个端口交换机的总容量为N×10Mbps
交换方式:
- 直通式,只检查目的地址
- 存储转发式,先将收到的帧存入高速缓存并检查是否正确,然后查表转发