2.0 MiB
数据链路层
基本概念
- 结点:主机、路由器。
- 链路:网络中两个结点之间的物理通道。
- 数据链路:网络中两个结点之间的逻辑通道。
- 帧:链路层的协议数据单元。
数据链路层功能:
- 为网络层提供服务:无确认无连接服务、有确认无连接服务、有确认面向连接服务。
- 链路管理。
- 组帧。
- 流量控制。
- 差错控制。
封装成帧
在一段数据的前后部分添加首部和尾部,构成一个帧。接受端在收到物理层上交的比特流后就可以根据首部和尾部的标记从而识别帧的开始和结束。
透明传输
不管所传数据为什么样的比特组合都能在链路上传输。因此链路层就看不见有什么方案数据传输的东西(控制信息)。
字符计数法
帧首部使用一个计数字段(第一个字节,八位)表明帧内字符数。
缺点:如果在某一个帧内,标记位后面的某个字节的数据丢失,那么会影响后面的帧。
比如3 1 1 和 4 2 2 2,如果前面的帧丢失变成 3 1,那么后面的4就会被补到前面变成 3 1 4导致错误。
字符填充法
帧就是加头加尾分别标记开始结束,而如果数据内某段比特流数据正好与标记字段重复,就会导致误判断的情况。
字符填充法就是在误会的字符前添加转义字符。
零比特填充法
当帧开始符和结束符一样,且帧定界符中含有5个以上连续的1,就可以使用零填充法。
- 在发送端扫描整个信息字段,只要有连续的五个1,就立即在第五个1后加上一个0,无论后面是1还是0。
- 在接收端收到一个帧时,先找到标志字段确定边界,再用硬件对比特流进行扫描,发现连续五个1时就把后面的0删除。
违规编码法
使用帧中不会用到的编码来定帧的起始和终止。
由于字节计数法的脆弱性与字符填充实现的复杂性与不兼容性,所以基本上使用零比特填充与违规编码法。
差错控制
噪声来源:
- 全局噪声:线路本身电气特征所产生的固有的随机噪声(热噪声);可以通过改善传感器调高信噪比来减少。
- 局部噪声:外界特定短暂的原因所产生的冲击噪声,是产生差错的主要原因;可以通过编码计数来解决。
差错:
- 位错:比特位出错,1变为0,0变为1。
- 帧错:有三种情况,假如发送的是1 2 3:
- 丢失:1 2。
- 重复:1 2 2 3。
- 失序:3 1 2。
差错控制:
- 检错编码:
- 奇偶校验法。
- 循环冗余码(CRC)。
- 纠错编码:海明码。
物理层所说的编码是针对单个比特的调制,为了达成同步。
而数据链路层所说的编码是针对一组比特,通过冗余码的计数实现对一串二进制比特率的检查。
奇偶校验码
首先一串数据长度为n-1,需要在数据第一位加上一位校验码。
奇校验要选校验码1或0使得n位的总数据里的1为奇数,而偶校验要选校验码1或0使得n位的总数据里的1为偶数。
奇偶校验码对于出错的数据仍有对应的奇偶个1则无法检验出是否出错。即出错奇数个位数可以检查出来,偶数个位数不能检查出来,所以其检错能力为50%。
如字符为1100101原数据有4位1,若使用奇校验,则需要首位校验位为1让整个数据有奇数5个1,从而整个数据变为11100101。若接受方收到11000011、11001010这种数据则能校验,因为数据有偶数个1,11010011则无法校验,因为有奇数个1。
CRC循环冗余码
分为三个部分:传输数据、生成多项式、FCS帧检验序列/冗余码。
如简单来说在接受端:
| 传输数据 | 生成多项式 | 冗余码 | ||
|---|---|---|---|---|
| 5 | ÷ | 2 | =2 | 1 |
所以最终发送的数据就是传输数据+冗余码:5+1=6。
在接收端:
| 接受数据 | 生成多项式 | 冗余码 | ||
|---|---|---|---|---|
| 6 | ÷ | 2 | =3 | 0 |
余数为0,判断无错,就接受。
其中正式的计算方法如下,并给出例题:发送数据为1101 0110 11,采用CRC校验,生成多项式为10011,其最终发送数据是?
原数据加0
假设生成多项式G(x)的阶为r,则需要在原数据后面加r个0(多项式有N位,那么阶就是N-1位)。
如题目中生成多项式10011表示为多项式是$x^4+x^1+x^0$,所以阶就是4。
最后数据就是1101 0110 1100 00。
模二除法
在数据加0后使用模二除法除以多项式,余数就是冗余码CRC校验码的比特序列。
模二除法就是异或,同0,异1。
所以就得到了帧检验序列FCS为1110。
所以要发送的数据就是要发送的数据加上帧检验序列:1101 0110 1111 10。
检错过程
把接收到的每一个帧都除以相同的生成多项式,然后检查得到除数R,如果R=0,则接受,否则丢弃。
FCS的生成与接收端CRC检验都是由硬件完成,所以处理很快,因此不会延误数据的传输。
海明码
能发现双比特错,但是只能纠正单比特错。
确定校验码位数r
海明不等式:$2^r\geqslant k+r+1$,其中r为冗余信息位,k位信息位。
假如传输的数据D=1011 01为6位,即信息位k为6,就可以一个个代入得到最小的r为4,所以海明码的校验码为4位,传输数据为6+4=10位。
确定校验码和数据的位置
假设4位校验码分别为$P_1$、$P_2$、$P_3$、$P_4$,数据从左到右为$D_1$、$D_2$……$D_6$。
校验码$P_n$需要插入到原数据之中作为传输数据,且只能插入到$2^n$的位置,即1、2、4……
然后在其他位置按需填入$D_n$:
| 数据位 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 代码 | P_1 |
P_2 |
D_1 |
P_3 |
D_2 |
D_3 |
D_4 |
P_4 |
D_5 |
D_6 |
| 实际值 | 1 | 0 | 1 | 1 | 0 | 1 |
求出校验码的值
需要将数据位置的十进制先用二进制表示。
然后根据二进制中校验码$P_n$位置的1来判断其可以校验哪些位,因为第一步校验位的插入规定,$P_n$的位置使用二进制表示一定只有一个1,那么就要根据这个1所在的位置找到所有同样这个位置是1的位置所在的数据位,就是可以被校验码校验的原数据位。同一位可以被不同的校验码同时校验。
$P_1$是第一位,即0001位,所以1在二进制位置的第四个地方,找到10个位置中所有二进制位置的第四个位为1的数据位,即0011(3):$D_1$;0101(5):$D_2$;0111(7):$D_4$;1001(9):$D_5$。所以$P_1$可以校验这4个数据。
要使其能校验,就要令所有要校验的位异或等于0。
即令$P_1\oplus D_1\oplus D_2\oplus D_4\oplus D_5=0$。从而$P_1\oplus1\oplus0\oplus1\oplus0=0$,根据同0异1得到$P_1=0$。
同理$P_2$的位置用二进制表示是0010,所以它可以校验二进制位置第三位是1的所有数据位,即可以校验$D_1$、$D_3$、$D_4$、$D_6$。
即令$P_2\oplus D_1\oplus D_3\oplus D_4\oplus D_6=0$。从而$P_1\oplus1\oplus1\oplus1\oplus1=0$,根据同0异1得到$P_2=0$。
同理$P_3$的位置用二进制表示是0100,所以它可以校验二进制位置第二位是1的所有数据位,即可以校验$D_2$、$D_3$、$D_4$。
即令$P_3\oplus D_2\oplus D_3\oplus D_4=0$。从而$P_1\oplus0\oplus1\oplus1=0$,根据同0异1得到$P_3=0$。
同理$P_4$的位置用二进制表示是1000,所以它可以校验二进制位置第一位是1的所有数据位,即可以校验$D_5$、$D_6$。
即令$P_4\oplus D_5\oplus D_6=0$。从而$P_4\oplus0\oplus1=0$,根据同0异1得到$P_4=1$。
| 数据位 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 二进制 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 |
| 代码 | P_1 |
P_2 |
D_1 |
P_3 |
D_2 |
D_3 |
D_4 |
P_4 |
D_5 |
D_6 |
| 实际值 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
从而最后海明码就是0010 0111 01。
检错并纠错
已知海明码就是0010 0111 01。假如第五位出错,从而变为0010 1111 01。
令所有要校验的位进行异或运算:
$P_1\oplus D_1\oplus D_2\oplus D_4\oplus D_5=0\oplus1\oplus1\oplus1\oplus0=1$。
$P_2\oplus D_1\oplus D_3\oplus D_4\oplus D_6=0\oplus1\oplus1\oplus1\oplus1=0$。
$P_3\oplus D_2\oplus D_3\oplus D_4=0\oplus1\oplus1\oplus1=1$。
$P_4\oplus D_5\oplus D_6=1\oplus0\oplus1=0$。
从$P_1$进行的运算开始,将所有计算结果组成为1010,这个数字即表示出错的位置,即第五位出错。
流量控制
较高的发送速度和较低的接受能力不匹配时传输会出错。
数据链路层流量控制与传输层的流量控制的区别:
- 数据链路层流量控制是点到点的,而传输层的流量控制是端到端的。
- 数据链路层流量控制是相邻两个结点的,而传输层的流量控制是两个主机的。
- 数据链路层流量控制是收不下就不回复确认(确认控制帧),而传输层的流量控制是接收端发送发送端一个窗口公告。
流量控制协议分为停止等待协议与滑动窗口协议,滑动窗口协议又分为两种后退N帧协议与选择重传协议。其实停止等待协议也是一种特殊的滑动窗口协议。
滑动窗口可以解决流量控制和可靠传输两个部分的功能。
数据链路层协议的滑动窗口在同一次发送与接受中都是固定的。
| 窗口大小 | 停止等待协议 | 后退N帧协议 | 选择重传协议 |
|---|---|---|---|
| 发送 | =1 | >1 | >1 |
| 接受 | =1 | =1 | >1 |
停止等待协议(Stop-and-Wait)
每发送完一个帧就停止发送并等待对方确认,如果收到确认就再发送下一个帧。因为是停止等待,所以只用一位以1、0来对帧编号就可以了。虽然同样是0帧,但是是不同的帧。
无差错情况
ACK表示确认acknowledge。
有差错情况
帧丢失或帧出错:
- 发送完一个帧后,必须保存其副本,传输完毕才能丢失该副本。
- 数据帧与确认帧必须编号。
- 超时计时器:每次发送一个帧就启动一个计时器。
- 超时计时器设置的重传事件应该比帧传输的平均RTT更长。
ACK确认丢失:
ACK确认迟到:
信道利用率=数据帧长度÷(数据帧长度+往返时延RTT+确认帧长度)。
信道利用率=(单位时间内发送数据的比特数÷发送发发送数据传输率)÷发送周期。
当确认帧忽略时可以用下面的公式。
例题 如一个信道的数据传输速率为4kb/s,单向传播时延为30ms,若使用停止等待协议的信道最大利用率为80%,则数据帧长度至少为多少?
解析:令数据帧长度为L(kb),利用公式:信道利用率=(单位时间内发送数据的比特数÷发送发发送数据传输率)÷发送周期。
得到:0.8=\dfrac{\dfrac{L}{4}}{\dfrac{L}{4}+2\times0.03}
最后得到L=960b。
信道吞吐率=信道利用率×发送方的发送速率。
停止等待协议特点
- 简单。
- 信道利用率低。
后退N帧协议(GBN)
- 发送窗口:发送方维持一组连续的允许发送的帧的序号。
- 接受窗口:接受方维持一组连续的允许接受的帧的序号。
GBN会一次性将在发送窗口内的n个帧一个个全部发送完,然后再移动受确认的帧的个数个窗口,如果一直收不到确认信息则一直不移动发送窗口并不断依次重传。
帧类型
假设发送窗口一次一共有N个帧,且帧开始的索引值为0,帧的类型分为:
- 发完被确认的帧h:发送窗口已经发送过的且已经被接收端发送确认消息且被接受的帧个数。此时从0到h-1都是已经发送且被确认的帧,发送窗口的开始索引为h。已经移动发送窗口h次。
- 已经发送但仍等待确认的帧n:在发送窗口中已经被发送但是因为确认信息在路上所以等待确认的,此时h到h+n-1都是已经发送但仍等待确认的帧。
- 还能发送的帧:即在发送窗口中还没有被发送的帧。还能发送的帧个数为N-n个。开始的索引为h+n,结束的索引为h+N-1。
- 还不能发送的帧:在发送窗口后面的不能被发送的帧,开始的索引为h+N。
GBN发送方必须响应的事件
- 上层调用:上层发送数据,发送方必须检查发送窗口是否已满,未满则产生帧并发送,若已满则先缓存数据,等窗口不满时再发送。
- 收到一个ACK:对n号帧采取累积确认(偶尔捎带确认)的方式,标明接收方已经收到n号帧和其之前的全部帧。
- 超时事件:如果出现超时,则发送方重传所有已发送但是未被确认的帧。接收方只按顺序接受帧,对于其非期待的确认帧则丢弃。
GBN接收方要做的事件
- 如果正确收到n号帧且顺序一致,则接收方位n帧发送一个ACK,并将该帧中的数据部分上交上层。
- 其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK,向发送方表面要重传帧。接收方无需缓存任何失序帧,只用维护下一个按序接收的帧序号。
GBN运行
假如发送窗口尺寸为4:
例题 数据链路层采用了GBN协议,发送方已经发送了编号为0到7的帧,当计时器超时时,若发送方只收到了0、2、3号帧的确认,则发送方需要重新发送的帧数为()。
A. 1 B. 2 C. 3. D. 4
解析:请注意的是GBN是累计确认的,所以最后收到了3号帧的确认代表0、1、2、3号帧都确认收到了,没有收到1号的确认也无所谓,所以这时候就应该从4号帧开始重发,所以是D。
GBN窗口长度
采用n个比特对帧编号,则发送窗口的尺寸$W_T$应满足$1\leqslant W_T\leqslant 2^n-1$,如果帧太大会让接收方无法确认新帧旧帧。
GBN协议特点
- 因连续发送数据帧而提高了信道利用率。
- 在重传时必须把原来已经正确传送的数据帧重传,从而令传送速率降低。
选择重传协议(SR)
累计确认会导致批量重传问题,所以SR为了实现只重传出错的帧,解决的办法就是设置单个确认而非累计确认,同时加大接收窗口,缓存乱序到达的帧。
发送窗口中分为已经发送被确认的帧、已经发送但等待确认的帧、还能发送的帧三种,其中这三种帧不一定是连续的,而只有发送窗口的第一个帧是已经发送被确认的帧发送窗口才能移动一格或多格。
接收窗口分为希望收到但是没有收到的帧、希望收到且已收到的帧、等待接收的帧三种,其中这三种帧不一定是连续的,接收窗口中收到且确认的帧位于缓存之中,而只有接收窗口的第一个帧是希望收到且已收到的帧接收窗口才能移动一格或多格。
SR发送方必须响应的事件
- 上层调用:上层发送数据,发送方必须检查发送窗口是否已满,未满则产生帧并发送,若已满则先缓存数据,等窗口不满时再发送。
- 收到一个ACK:如果收到ACK对应的帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边),在窗口向前移动到具有最小序号的未确认帧处。如果窗口移动且有序号在窗口内未发送的帧,则发送这些帧。
- 超时事件:每一个帧都具有自己的计时器,一个超时事件发生后只重传一个帧。
SR接收方要做的事件
- 确认一个正确接收的帧而不管是否按序。失序的帧将被缓存,并返回发送方一个该帧的确认帧,直到所有比其序号更小的帧都被接收为止,这时才能将这一批帧交付上层,然后向前移动接收窗口。如果收到了接收窗口前的一个接收窗口长度以内的帧,就返回一个ACK表明发送方超时重传的帧已经得到了确认。如果是其他情况就忽略该帧。
SR运行
假如发送窗口、接收窗口尺寸为4:
SR窗口长度
发送窗口最好等于接收窗口,大于会溢出,小于意义不大。
采用n个比特对帧编号,则窗口的尺寸$W_T$应满足$W_T=2^{n-1}$。(即编号数量的一半)
如下面以0到3编号,表示使用两位编号,而滑动窗口大小为3。
所以接收方就不知道发送的0号帧是新帧还是旧帧。此时滑动窗口应该大小为2。
SR协议特点
- 对数据帧逐一确认,收到一个确认一个。
- 只用重传出错帧。
- 接收方有缓存。
- 发送窗口与接收窗口相等。
例题 数据链路层采用了SR协议,发送方已经发送了编号为0到3的帧,若发送方只收到了1号帧的确认,0、2号帧依次超时,则发送方需要重新发送的帧数为()。
A. 0 B. 1 C. 2. D. 3
解析:请注意的是SR是单独确认的,所以收到了1号帧的确认,而0,2号超时,代表这两个需要重传,所以是C。
介质访问控制
- 点对点链路:两个相邻结点通过一个链路链接,无第三者,常用于广域网。如PPP协议。
- 广播式链路:所有主机共享通信介质,常用于局域网。典型拓扑结构:总线型与星型。
介质访问控制就是采取措施使得两对结点之间的通信不会互相干扰。分为:
- 静态划分信道:信道划分介质访问控制MAC
- 频分多路复用FDM。
- 时分多路复用TDM。
- 波分多路复用WDM。
- 码分多路复用CDM。
- 动态划分信道:
- 随机访问介质访问控制(所有用户可随机发送信息,可占用全部带宽):
- ALOHA协议。
- CSMA协议。
- CSMA/CD协议。
- CSMA/CA协议。
- 轮询访问介质访问控制:
- 轮询协议。
- 令牌传递协议。
- 随机访问介质访问控制(所有用户可随机发送信息,可占用全部带宽):
信道划分介质访问控制
使用一条共享信道,但是通过多路复用技术(多格信号组合在一条物理信道上传输使得多个终端设备共享信道资源并提高信道利用率的技术)组合进行传输,提高了信道的利用率。
FDM
用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。频分复用的所有用户在同样时间占用不同的频率带宽资源。
- 充分利用传输介质带宽,系统效率较高。
- 技术较成熟,实现容易。
TDM
将时间划分为一段段等长的时分复用帧(TDM帧:在物理层传输的比特流所划分的帧,表明一个周期)。每一个时分复用的用户在每一个TDM帧中占用固定序号的时隙,所有用户轮流占用信道。
- 当用户使用率较低时会导致信道的利用率很低
- 用户的等待时间长。
统计时分复用STDM
添加了一个集中器,将不同用户分散的数据集中在一起,单位时间的数据组成一个STDM帧,再发送。
- 每一个STDM帧中的时隙数小于连接在集中器上的用户数。
- 每个用户有数据就随时发送给集中器的输缓存,然后集中器按顺序依次扫描输入缓存,把缓存中的输入数据放入STDM帧中,一个STDM帧满了就发出。
- STDM帧并不是固定分配时隙,而是按需动态分配时隙。
WDM
就是光的频分多路复用,根据同一根光纤中传输多种不断波长(频率)的光信号,根据不同的波长做用波长分解复用器分解出来。
CDM
码分多址(CDMA)是码分复用的一种方式。
- 一个比特分为多个码片/芯片,每一个站点被指定一个唯一的m位的码片序列。
- 发送1时站点发送码片序列,发送0时发送码片序列反码(一般0写作-1)。
- 如何复用:多个站点同时发送数据的时候,要求各个站点码片序列相互正交。
- 如何合并:各路数据在信道中按位线性相加。
- 如何分离:合并的数据和源站码片序列规格化内积。
ALOHA协议
纯ALOHA协议
不监听信道,不按时间槽发送,随机重发(想发就发)。
- 检测冲突:如果发送冲突,接收方就会检测到差错然后不予确认,发送方在一定时间内收不到确认就判断冲突。
- 解决冲突:超时后等待随机时间重传。
时隙ALOHA协议
把时间划分为若干个相同的时间片(时间槽),所有用户只能在时间片的开始时刻同步接入网络信道,若发生冲突则必须等到下一个时间片开始的时刻再发送。
CSMA协议
载波监听多路访问协议。发送前监听信道。当信道空闲发送帧,当信道忙推迟发送。
- CS载波监听:表示每一个站在发送数据之前都要检查一下总线上是否有其他计算机在发送数据。当几个站同时在总线上发送数据时,总线上的信号电压摆动值就增大,因为互相叠加。当一个站检测到的信号电压摆动值超过一定门限值时,就认为总线上至少两个站在同时发送数据,表明产生了碰撞。
- MA多点接入:表示许多计算机以多点接入的方式连接在一根总线上。
1-坚持CSMA
-
发送信息前监听信道。
-
当信道空闲时会直接传输,不必等待。
-
当信道忙时会一直监听,直到空闲立刻传输。
-
如果冲突(一段时间内未收到确认),则等待一个随机长的时间再监听。
-
优点:只要媒体空闲站点就立马发送,避免媒体使用率的损失。
-
缺点:若有两个或以上的站点有数据要发送,冲突就无法避免。
非坚持CSMA
-
发送信息前监听信道。
-
当信道空闲时会直接传输,不必等待。
-
当信道忙时会等待一个随机时间之后再进行监听。
-
优点:采用随机的重发延迟时间可以减少冲突发生的可能性。
-
可能存在所有站点都在延迟等待中,使得媒体空闲,降低媒体使用率。
p-坚持CSMA
-
发送信息前监听信道。
-
当信道空闲时以p概率直接传输,不必等待,概率1-p等待到下一个时间槽再传输。
-
当信道忙时会等待一个随机时间之后再进行监听。
-
优点:既能像非坚持算法减少冲突,又能像1-坚持算法那样减少媒体空闲时间。
-
缺点:无法在冲突时就发现,所以发生冲突时还是坚持发送完数据帧,从而造成浪费。
CSMA/CD协议
载波监听多点接入/碰撞检测协议。是CSMA协议的完善,不仅先监听再发送,还可以边监听边发送,当发现碰撞就立刻停止发送,就避免了CSMA协议的无法在冲突时就发现,发生冲突时还是坚持发送完数据帧造成浪费的缺点。
所以说明这个协议是使用在半双工网络上。
站点最迟两倍的总线端到端的传播时延才会知道自己发送的数据没有和别人碰撞,(争用期/冲突窗口/碰撞窗口),所以只要该站在两倍的总线端到端的传播时延时间内没有检测到碰撞,那么就可以肯定本次发送没有碰撞。
确定重传时机
采用截断二进制指数规避算法。
- 确定基本退避(推迟)时间为争用期$2\tau$。
- 定义参数k,其表示重传次数,但是k不超过10。当重传次数不超过10时,k等于重传次数,当重传次数大于10时,k就一直等于10。
- 从离散的整数集合${0,1,2,3,4\cdots,2^k-1}$之中随机取出一个数r,重传所需要的退避的时间就是r倍的基本退避时间,即$2r\tau$。
- 当重传达16次仍不能成功时,就说明网络太拥挤,认为该帧永远无法正确发出,就抛弃该帧并向高层报错。
令重传时间为t。
- 第一次重传,k=1,$r\in{0,1}$,$t\in{0,2\tau}$。
- 第二次重传,k=2,$r\in{0,1,2,3}$,$t\in{0,2\tau,4\tau,6\tau}$。
- 第三次重传,k=10,$r\in{0,1,2,3,4,5,6,7}$……
例题 在以太网的二进制回退算法中,在11次碰撞之后,站点所选取的随机数最大可能为多少?
因为11次按照规定大于10,则只会取到10,所以最大的随机数应该为$2^{10}-1=1023$。
最小帧长
如果帧太短,那么如果发生碰撞就很容易发送完才检测到发生碰撞而无法停止发送。所以就需要规定一个最小的帧长。
所以帧的传输时延至少要两倍于信号在总线中的传播时延。
即最小帧长=总线传播时延×数据传输速率×2。
注意:以太网规定的最短帧长为64B,凡是小于则被判定为无效帧。
CSMA/CA协议
载波监听多点接入/碰撞避免协议。对比CSMA/CD协议只能检测碰撞,而CSMA/CA协议可以避免碰撞。且CSMA/CD协议只能用于总线类型的以太网,而CSMA/CA可以用于无线局域网。
- 发送信息前监听信道。
- 当信道空闲时发送端发出RTS(requests to send),RTS包括发射端的地址、接收端的地址、下一份数据将持续发送的时间等信息。
- 当信道忙时会等待一个随机时间之后再进行监听。
- 接收端接收到RTS后,会响应CTS(clear to send)。
- 发送端收到CTS后,开始发送数据帧,同时预约信道,发送方告知其他站点要传输多久的数据。
- 接收端收到数据帧后,将用CRC来检验数据是否正确,正确则响应ACK帧。
- 发送方收到ACK帧后才可以进行下一个数据帧的发送,若没有则一直重传一直到规定重发次数为止(使用二进制指数退避算法确定推迟时间)。
CSMA/CA协议与CSMA/CD协议的相同点:
- 都是需要先侦听信道。
- 冲突后都会进行有限的重传。
CSMA/CA协议与CSMA/CD协议的不同点:
- 传输介质不同:CSMA/CA协议无线传输;CSMA/CD协议有线则总线型传输。
- 载波检测方式不同:CSMA/CA协议采用能量检测(ED)、载波检测(CS)和能量载波混合检测三种方式;CSMA/CD协议采用电缆电压检测。
- CSMA/CA协议避免冲突;CSMA/CD协议检测冲突。
轮询访问介质访问控制
信道划分介质访问控制协议在网络负载重时信道效率高且公平,而在负载轻时则效率低;随机访问控制协议在网络负载重时会产生冲突开销,而负载轻时效率会比较高,单个结点可以利用信道全部带宽。
也称为轮流协议。即减少产生冲突,又尽量发送时占用全部带宽。
轮询协议
主结点会轮流以发送数据帧的形式询问从属结点是否发送数据,没有被询问的从属结点无法发送数据。
问题:
- 轮询开销。
- 等待延迟。
- 单点故障。
令牌传递协议
一般使用令牌环网实现,逻辑上是环型的,但是物理上是星型的。
TCP用于转发令牌。而令牌是一个特殊格式的MAC控制帧,不包含任何信息,在令牌环上循环,控制信道使用,只有有令牌才能发送数据,确保同一个时刻只有一个结点独占信道。
每一个结点都可以在令牌持有时间内活得发送数据的权利,而不能无限制的持有令牌。
问题:
- 令牌开销。
- 等待延迟。
- 单点故障。
采用令牌传输方式的网络基本上是负载较重,通信量较大的网络。
局域网
LAN使用广播信道。
特点:
- 覆盖范围较小。
- 采用专门的传输介质(双绞线、同轴电缆)进行联网,数据传输速率较高。
- 通信延迟时间端,误码率低,可靠性高。
- 各站平等共享信道。
- 多采用分布式控制与广播式通信,可以广播与组播。
拓扑结构
星型
中心结点时控制中心,任意两个结点之间的通信最多只用两步,传输速度快,且网络结构简单,建网容易,便于控制与管理,但是可靠性低,网络共享能力差,会单点故障。
总线型
网络可靠性高,网络结点之间响应速度快,共享资源能力强,设备投入量少,成本低,安装使用方便,当某结点故障时对整个网络系统影响小。但是总线损坏也会造成巨大影响。
环型
通信设备和线路比较节省,有单点故障问题,由于线路封闭,不易于拓展,系统响应延时长,且信息传输效率较低。
树型
易于拓展,易于隔离故障,也容易单点故障。
局域网介质访问控制
- CSMA/CD:常用于总线型局域网,也用于树型网络。
- 令牌总线:常用于总线型局域网,也用于树型网络。把总线或树型网络中的各个工作站按一定的顺序如按接口地址大小排列形成一个逻辑环,只有令牌持有者才能控制总线发送信息。
- 令牌环:用于环型局域网,如令牌环网。
局域网的分类
- 以太网:是应用最为广泛的局域网。包括标准以太网(10Mbps)、快速以太网(100Mbps)、千兆以太网(1000Mbps)和10G以太网,都符合IEEE802.3系列标准规范。逻辑拓扑总线型,物理拓扑是星型或拓展星型,使用CSMA/CD。
- 令牌环网:物理星型,逻辑环型,基本上已经过时。
- FDDI网:物理双环结构,逻辑环型,使用光纤,造价高,基本上没有使用到。
- ATM网:较新的单元交换技术,用53字节固定长度的单元进行交换。
- 无线局域网:采用IEEE802.11标准。
IEEE802标准
局域网与城域网技术标准,使用的范围有以太网、令牌环、无线局域网。
- IEEE802.3:CSMA/CD与物理层技术规范。
- IEEE802.5:令牌环网Token-Ring的介质访问控制协议与物理层技术规范。
- IEEE802.8:FDDI的光纤技术规范。
- IEEE802.11 无线局域网WLAN的介质范文控制协议与物理层技术规范。
MAC子层与LLC子层
IEEE802标准将局域网的数据链路层分为逻辑链路层LLC子层与介质访问控制MAC子层。
LLC负责识别网络层协议,对其封装。LLC报头高数数据链路层一旦帧被接收时,应当对数据包做何处理。为网络层提供服务:无确认无连接、面向连接、带确认无连接、高速传送。
MAC负责数据帧的封装卸装,帧的寻址和识别,接收与发送,链路的管理,帧的差错控制等,屏蔽了不同物理链路种类的差异性。
以太网
- Ethernet是基带总线局域网规范,使用CSMA/CD技术,主要负责物理层与数据链路层的规范。
- 其特点是无连接,不可靠。
- 传输介质由粗同轴电缆到细同轴电缆再到双绞线+集线器。
- 拓扑结构逻辑上总线型,物理上星型。
以太网标准
- DIX Ethernet V2:第一个局域网产品(以太网)规约。
- IEEE802.3:IEEE指定的第一个IEEE的以太网标准,帧格式有所不同。
10BASE-T以太网
- 10表示传输速率诶10Mb/s,BASE表示传输基带信号,T代表使用双绞线。现在一般采用无屏蔽双绞线(UTP)。
- 网络拓扑物理上是星型,逻辑上是总线型,每段双绞线最长为100m。
- 采用曼彻斯特编码。
- 使用CSMA/CD介质访问机制。
适配器与MAC地址
- 计算机与外界局域网的连接通过通信适配器完成,过去通过单独网络接口卡即网卡NIC实现。
- 适配器上与处理器和存储器,包括RAM和ROM。
- ROM上有计算机硬件地址MAC地址。
- 在局域网中,硬件地址又被称为物理地址或MAC地址。
- MAC地址是全球唯一的48位二进制适配器地址,前24位代表厂家(IEEE规定),后24位由厂家指定,常用6个十六进制表示。
以太网MAC帧
如以太网标准所说一共分为两种标准,最常用的是V2的MAC格式:
- 物理层会插入前导码,包括前同步码与帧开始定界符两个部分。
- 类型表示IP数据报的类型。
- 数据最小值为46是因为以太网最小帧长为64字节,所以数据最小就是64-6-6-2-4=46字节。
- 以太网帧没有结束定界符是因为以太网采用曼彻斯特编码,如果与数据必然是电压变化的,而如果电压没有变化就代表已经结束,所以不需要结束定界符。
与IEEE802.3的区别:
- 第三个字段是长度/类型。
- 当长度/类型字段小于0x0600时,数据字段必须装入LLC子层。
高速以太网
当速率大于100Mb/s时就可以称为高速以太网。
- 100BAST-T以太网:在双绞线上传输100Mb/s基带信号的星型拓扑以太网,仍使用IEEE802.3的CSMA/CD协议。支持全双工与半双工,可以全双工方式工作下无冲突。
- 吉比特以太网:在光纤或双绞线上传送1Gb/s信号。支持全双工与半双工,可以全双工方式工作下无冲突。
- 10吉比特以太网:在光纤上传送10Gb/s信号。只支持全双工,无冲突。
无线局域网
IEEE802.11的MAC帧头格式
对于WDS(无线分布式系统):
- 地址1:RA接收端,接收端基站地址。
- 地址2:TA发送端,发送端基站地址。
- 地址3:DA目的地址,目标主机的MAC地址。
- 地址4:SA源地址,发送端的MAC地址。
BSSID(基本服务集ID)代表基站的MAC地址。
广域网
WAN的通信子网主要使用分组交换技术,达到资源共享的目的。
PPP协议
点对点协议是使用最广泛的面向字节的数据链路层协议,用户使用拨号电话接入因特网时一般使用PPP协议。
PPP协议的特点
- 简单:对于链路层的帧,无须纠错、序号、流量控制。
- 只支持全双工链路。
- 封装成帧:具有帧定界符。
- 透明传输:对于与帧定界符一样的比特组合的数据应如何处理:异步线路使用字节填充(因为按字节或字符传送),同步线路使用比特填充(因为按比特传送)。
- 多种网络层协议:可以采用多种协议。
- 多种类型链路:串行/并行,同步/异步。
- 差错检测:错就丢弃。
- 检测连接状态:链路是否正常工作。
- 最大传送单元:数据部分最大长度MTU=1500。
- 网络层地址协商:需要知道通信双方的网络层地址。
- 数据压缩协商:传输数据时需要对数据进行压缩。
- 无需支持多点线路:只用满足点对点就可以了。
PPP协议的组成
- 一个将IP数据报封装到串行链路(同步或异步)的方法。
- 链路控制协议LCP:建立并维护数据链路连接,并进行身份验证。
- 网络控制协议NCP:PPP支持多种网络层协议,每个不同的网络层协议都需要一个相应的NCP来配置,为网络层建立和配置逻辑连接。
PPP协议的工作流程与帧格式
- F:表示帧定界符,用二进制表示就是01111110。当数据内出现帧定界符就需要插入转义字符7D:0111101。
- A:表示Address,未完善。
- C:表示Control,未完善。
- 协议:表示信息部分的内容,是IP数据报、LCP数据或网络层控制数据等。
- FCS:用CRC实现的帧检验序列。
HDLC协议
高级数据链路控制协议是一个在同步网上传输数据、面向比特的数据链路层协议。
由ISO根据SDLC协议扩展开发,不属于TCP/IP族。
HDLC协议的特点
- 可以透明传输,只使用0比特填充法,易于硬件实现。
- 只支持全双工通信。
- 所有帧采用CRC检验。
- 对信息帧进行顺序编号,可以防止漏收和重收,传输可靠性高。
HDLC协议的站
- 主站:发送命令(包括数据信息)帧、接收响应帧,并负责对整个链路的控制系统的初启、流程控制、差错检测或恢复。
- 从站:接收由主站发来的命令帧,向其发送响应帧,并配合主站参与差错恢复等链路控制。
- 复合站:既能发送,又能接收命令帧和响应帧,并负责整个链路的控制。
数据操作方式
- 正常响应方式:只有经过主站同意从站才能传输数据。
- 异步平衡方式:每一个复合站都能自主传输数据。
- 异步响应方式:无需经过主站同意从站就能传输数据。
HDLC协议的帧格式
- F:表示帧定界符,用二进制表示就是01111110。当数据内出现帧定界符就需要插入转义字符7D:0111101。
- A:表示Address,当数据操作方式是正常响应方式或异步响应方式,都是表示从站的地址,而如果是异步平衡方式,则填充应答站的地址。
- C:表示Control:
- 信息帧(I):第一位是0,用于传输数据信息,或使用捎带技术对数据进行确认。
- 监督帧(S):10,用于流量控制与差错控制,执行对信息帧的确认、请求重发和请求暂停发送等功能。
- 无编号帧(U):11,用于提供对链路的建立、拆除等多种控制功能。
HDLC协议与PPP协议的联系与区别
联系:
- 都只支持全双工链路。
- 都可以实现透明传输。
- 都只检测差错而不纠正差错。
区别:
| 面向对象 | 是否拥有协议字段 | 序号或确认机制 | 是否可靠 | 透明传输技术 | |
|---|---|---|---|---|---|
| PPP协议 | 面向字节 | 2B协议字段 | 无序号或确认机制 | 不可靠 | 支持比特填充法与字符填充法 |
| HDLC协议 | 面向比特 | 没有 | 有编号和确认机制 | 可靠 | 只支持比特填充法 |
数据链路层设备
主要包含网桥与交换机。
网桥(Bridge)
当网桥收到一个帧时,不会广播此帧,而是先检测该帧的目的MAC地址,然后确定转发到哪一个接口或丢弃(过滤)。
网桥的优点
- 过滤通信量,增大吞吐量。
- 扩大了物理范围。
- 提高了可靠性。
- 可互联不同物理层、不同MAC子层和不同速率的以太网。
网桥的种类
透明网桥:指以太网上的站点并不知道所发送的帧将经过哪几个网桥,是一个即插即用的设备。通过自学习的方式来寻找和更新路径。
源路由网桥:在发送帧时,把详细的最佳路由信息(路由最少/时间最短)放在帧的首部中。源站以广播的方式向欲通信的目的站发送多个发现帧,目的站再根据每一个发现帧的路径发送响应帧,从而以枚举的方式获得最优路径。
交换机(Switch)
交换机就是多接口网桥。每一个接口都是一个冲突域。可以独占传输媒体带宽
交换机的种类
直通式交换机:查完目的地址(6B)直接转发。延迟小,可靠性低,无法支持具有不同速率的端口的交换。
存储转发式交换机:将帧放入高速缓存,并检查是否正确,正确则转发,错误则丢弃。延迟大,可靠性高,可以支持具有不同速率的端口的交换。
冲突域与广播域
- 冲突域:在以太网中,如果某个CSMA/CD网络上的两台计算机在同时通信时会发生冲突(即同一时间只能一台主机发送信息),那么这个CSMA/CD网络就是一个冲突域(collision domain)。如果以太网中各个网段以集线器连接,因为不能避免冲突,所以它们仍然是一个冲突域。(一个数据链路层设备的接口一个冲突域)
- 广播域:网络中能接收任一设备发出的广播帧的所有设备的集合。即如果一个站点发出一个广播信号,那么所有能接收到该信号的设备范围就是一个广播域。(一个网络层设备一个广播域)
- 网段:指一个计算机网络中使用同一物理层设备(传输介质、中继器、集线器等)能直接通信的一部分。
| 能否隔离冲突域 | 能否隔离广播域 | |
|---|---|---|
| 物理层设备 | 否 | 否 |
| 链路层设备 | 是 | 否 |
| 网络层设备 | 是 | 是 |