From 4ce60c47cfdbc8438793e6a794ca454147366fd6 Mon Sep 17 00:00:00 2001 From: Didnelpsun <2675350965@qq.com> Date: Thu, 28 Jul 2022 22:51:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Computer-Network/2-data-link-layer-ex.md | 18 +++++++ Computer-Network/2-data-link-layer.md | 66 ++++++++++++++---------- 2 files changed, 58 insertions(+), 26 deletions(-) diff --git a/Computer-Network/2-data-link-layer-ex.md b/Computer-Network/2-data-link-layer-ex.md index baee0c4..f52872d 100644 --- a/Computer-Network/2-data-link-layer-ex.md +++ b/Computer-Network/2-data-link-layer-ex.md @@ -130,6 +130,24 @@ $A.2$    $B.3$    $C.4$    一帧发送所需要的时间为$128\times8/(16\times10^3)=64ms$,而发送一帧到确认该帧一共需要$64+270\times2+64=668ms$,这个时间段内可以传输$668/64=10.4$帧,所以至少需要$4$为比特进行编号($2^4=16>10.4$)。 +**例题** 主机甲与主机乙之间使用后退$N$帧协议传输数据,甲的发送窗口尺寸为$1000$,数据帧长为$1000$字节,信道带宽为$100Mb/s$,乙每收到一个数据帧立即利用一个短帧(忽略其传输延迟)进行确认,若甲、乙之间的单向传播时延是$50ms$,则甲可以达到的最大平均数据传输速率约为()。 + +$A.10Mb/s$ + +$B.20Mb/s$ + +$C.80Mb/s$ + +$D.100Mb/s$ + +解:首先是求最大的平均数据传输速率。已知题目中已经给出了一个速度$100Mb/s$,这是带宽即最大传输速度。实际的最大传输速率不会超过这个速度。 + +首先要计算出一个帧在收到确认帧的整个发送周期。首先$1000$字节,信道带宽为$100Mb/s$,即发送时延为$1000\times8=8000bit\div100Mb/s=0.00008s$,所以一共需要$50ms\times2+0.00008s=0.10008s$,即一个帧完成传输需要$0.10008s$$。 + +此时这个周期内由于使用后退$N$帧协议,所以可以传输$0.10008s\times100Mb/s=10008000b$个数据,即$10008000\div8000=1251$组,即这个时间段能发送$1251$个帧,但是实际上发送窗口为$1000$即最多只能发送$1000$个帧,达不到$100Mb/s$的带宽满值。 + +实际能达到的速率为$1000\times1000\times8\div0.10008s\approx80MB/s$。 + **例题** 假定卫星信道的数据率为$100kb/s$,卫星信道的单程传播时延为$250ms$,每个数据帧的长度均为$2000$位,并且不考虑误码、确认帧长、头部和处理时间等开销,为达到传输的最大效率,试问帧的顺序号应为多少位,此时信道利用率是多少。 解:首先卫星信道的单程传播时延为$250ms$,所以$RTT=250\times2=500ms=0.5s$。 diff --git a/Computer-Network/2-data-link-layer.md b/Computer-Network/2-data-link-layer.md index 56502bf..b72c292 100644 --- a/Computer-Network/2-data-link-layer.md +++ b/Computer-Network/2-data-link-layer.md @@ -10,24 +10,26 @@ ### 数据链路层功能 1. 为网络层提供服务:无确认无连接服务、有确认无连接服务、有确认面向连接服务。面向连接就一定会确认。 -2. 链路管理。 -3. 组帧:帧定界、帧同步、透明传输。规定了帧的数据部分的长度上限——最大传送单元($MTU$)。 -4. 流量控制。 +2. 链路管理:控制对物理传输介值访问。 +3. 组帧(定义数据格式):帧定界、帧同步、透明传输。规定了帧的数据部分的长度上限——最大传送单元($MTU$)。 +4. 流量控制:发送方的流量。 5. 差错控制。 ## 组帧 -在一段数据的前后部分添加首部和尾部,构成一个帧。接受端在收到物理层上交的比特流后就可以根据首部和尾部的标记从而识别帧的开始和结束。 +在一段数据的前后部分添加首部和尾部,构成一个帧来定界传输(由于数据链路层以上的传输单元不用直接传输所以只用添加本层首部就可以了)。接受端在收到物理层上交的比特流后就可以根据首部和尾部的标记从而识别帧的开始和结束。 不管所传数据为什么样的比特组合都能在链路上传输。因此链路层就看不见有什么方案数据传输的东西(控制信息)就是透明传输。 +那么如何组帧呢? + ### 字符计数法 -帧首部使用一个计数字段(第一个字节,八位)表明帧内字符数。 +帧首部使用一个计数字段(第一个字节,八位)表明帧内字符数。题目计算时这个计数字段也要算成一个字符。 ![字符计数][charcount] -缺点:如果在某一个帧内,标记位后面的某个字节的数据丢失,那么会影响后面的帧。 +缺点:如果在某一个帧内,标记位后面的某个字节的数据丢失,那么会影响后面所有的帧。 比如$3\,1 \,1$和$4\,2\,2\,2$,如果前面的帧丢失变成$3\,1$,那么后面的4就会被补到前面变成$3\,1\,4$导致错误。 @@ -45,7 +47,7 @@ $SOH$表示帧开始,$EOT$表示帧结束。 当帧开始符和结束符一样,且帧定界符中含有$5$个以上连续的$1$,就可以使用零填充法。 -+ 在发送端扫描整个信息字段,只要有连续的五个$1$,就立即在第五个$1$后加上一个$0$,无论后面是$1$还是$04。 ++ 在发送端扫描整个信息字段(不包括首尾定界符),只要有连续的五个$1$,就立即在第五个$1$后加上一个$0$,无论后面是$1$还是$0$。 + 在接收端收到一个帧时,先找到标志字段确定边界,再用硬件对比特流进行扫描,发现连续五个$1$时就把后面的$0$删除。 ### 违规编码法 @@ -60,18 +62,18 @@ $SOH$表示帧开始,$EOT$表示帧结束。 噪声来源: -+ 全局噪声:线路本身电气特征所产生的固有的随机噪声(热噪声);可以通过改善传感器调高信噪比来减少。 -+ 局部噪声:外界特定短暂的原因所产生的冲击噪声,是产生差错的主要原因;可以通过编码计数来解决。 ++ 全局噪声(热噪声,随机噪声):产生随机差错。线路本身电气特征所产生的固有;可以通过改善传感器调高信噪比来减少。 ++ 局部噪声(冲击噪声):产生突发差错。外界特定短暂的原因所产生,是产生差错的主要原因;可以通过编码计数来解决。 差错: -+ 位错:比特位出错,$1$变为$0$,$0$变为$1$。也称为比特差错 ++ 位错:比特位出错,$1$变为$0$,$0$变为$1$。也称为比特差错。 + 帧错:有三种情况,假如发送的是$1\,2\,3$: - 1. 丢失:$1\,2$。 - 2. 重复:$1\,2\,2\,3$。 - 3. 失序:$3\,1\,2$。 + 1. 丢失:$1\,2$:计时器超时重发。 + 2. 重复:$1\,2\,2\,3$:帧编号机制。 + 3. 失序:$3\,1\,2$:帧编号机制。 -差错控制: +为了避免位错进行校验: + 检错编码: + 奇偶校验法。 @@ -126,7 +128,7 @@ $SOH$表示帧开始,$EOT$表示帧结束。 在数据加$0$后使用模二除法除以多项式,余数就是冗余码$CRC$校验码的比特序列。 -模二除法就是异或,同$0$,异$1$。 +模二除法就是异或,同$0$,异$1$,无需进位或借位或者不够减的问题。 ![模二除法][CRC] @@ -148,7 +150,7 @@ $CRC$具有纠错能力,但是数据链路层只使用了其检错能力,错 #### 确定校验码位数r -海明不等式:$2^r\geqslant k+r+1$,其中$r$为冗余信息位,$k$位信息位。 +海明不等式:$2^r\geqslant k+r+1$,其中$r$为冗余信息位,$k$位信息位。(添加的信息位能表达所有数据状态) 假如传输的数据$D=1011 01$为$6$位,即信息位$k$为$6$,就可以一个个代入得到最小的$r$为$4$,所以海明码的校验码为$4$位,传输数据为$6+4=10$位。 @@ -163,13 +165,13 @@ $CRC$具有纠错能力,但是数据链路层只使用了其检错能力,错 数据位|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 +实际值| | | 1 | |0|1|1| |0|1 #### 求出校验码的值 需要将数据位置的十进制先用二进制表示。 -然后根据二进制中校验码$P_n$位置的1来判断其可以校验哪些位,因为第一步校验位的插入规定,$P_n$的位置使用二进制表示一定只有一个$1$,那么就要根据这个$1$所在的位置找到所有同样这个位置是$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$个数据。 @@ -197,6 +199,8 @@ $P_1$是第一位,即$0001$位,所以$1$在二进制位置的第四个地方 从而最后海明码就是$0010\quad0111\quad01$。 +如果海明码需要一个最高的全校验位,则需要将其对全部数据位和其他全部校验位进行异或为$0$得到。 + #### 检错并纠错 海明码“纠错”$d$位,需要码距为$2d+1$的编码方案;“检错”$d$位,则只需码距为$d+1$。 @@ -217,7 +221,7 @@ $P_4\oplus D_5\oplus D_6=1\oplus0\oplus1=0$。 ## 流量控制 -较高的发送速度和较低的接受能力不匹配时传输会出错。 +较高的发送速度和较低的接受能力不匹配时传输会出错。主要是控制发送方的流量。 数据链路层流量控制与传输层的流量控制的区别: @@ -229,6 +233,8 @@ $P_4\oplus D_5\oplus D_6=1\oplus0\oplus1=0$。 $ARQ$流量控制协议分为停止等待协议与滑动窗口协议,滑动窗口协议又分为两种后退$N$帧协议与选择重传协议。其实停止等待协议也是一种特殊的滑动窗口协议。 +后两种协议是滑动窗口技术和请求重复技术的结合,所以称为连续$ARQ$协议。 + 滑动窗口可以解决流量控制和可靠传输两个部分的功能。 数据链路层协议的滑动窗口在同一次发送与接受中都是固定的。 @@ -240,7 +246,7 @@ $ARQ$流量控制协议分为停止等待协议与滑动窗口协议,滑动窗 ### 停止等待协议(Stop-and-Wait) -每发送完一个帧就停止发送并等待对方确认,如果收到确认就再发送下一个帧。因为是停止等待,所以只用一位以$1$、$0$来对帧编号就可以了。虽然同样是$0$帧,但是是不同的帧。 +每发送完一个帧就停止发送并等待对方确认,如果收到确认就再发送下一个帧。因为是停止等待,所以只用一位以$1$、$0$为值来对帧编号就可以了。虽然同样是标号为$0$的帧,但是是不同的帧。 #### 无差错情况 @@ -287,6 +293,8 @@ ACK确认迟到: $GBN$会一次性将在发送窗口内的$n$个帧一个个全部发送完,然后再移动受确认的帧的个数个窗口,如果一直收不到确认信息则一直不移动发送窗口并不断依次重传。 +使用累计确认模式,如果接发送方收到当前$n$号帧的确认消息,则前面的所有帧都已经确认接收到。 + #### 帧类型 假设发送窗口一次一共有$N$个帧,且帧开始的索引值为$0$,帧的类型分为: @@ -315,7 +323,9 @@ $GBN$会一次性将在发送窗口内的$n$个帧一个个全部发送完,然 #### GBN窗口长度 -采用n个比特对帧编号,则发送窗口的尺寸$W_T$应满足$1\leqslant W_T\leqslant 2^n-1$,如果帧太大会让接收方无法确认新帧旧帧。 +采用$n$个比特对帧编号,则发送窗口的尺寸$W_T$应满足$1\leqslant W_T\leqslant 2^n-1$。 + +如果帧太大会让接收方无法区分新帧旧帧。为什么只到$2^n-1$?因为假设最坏情况下这轮从$0$开始的所有的帧都未收到确认,由于$GBN$使用累计确认,则最大编号会空留一个编号只到$2^n-2$,计算机就明白这里前面的还没有收到不会继续发送了,如果是全部用完编号会到$2^n-1$,如果此时接收方收到$0$号确认,会认为前面的全部收到这是第二轮的编号从而跳过了这轮的确认环节。 #### GBN协议特点 @@ -324,7 +334,7 @@ $GBN$会一次性将在发送窗口内的$n$个帧一个个全部发送完,然 ### 选择重传协议(SR) -累计确认会导致批量重传问题,所以SR为了实现只重传出错的帧,解决的办法就是设置单个确认而非累计确认,同时加大接收窗口,缓存乱序到达的帧。 +累计确认会导致批量重传问题,所以$SR$为了实现只重传出错的帧,解决的办法就是设置单个确认而非累计确认,同时加大接收窗口,缓存乱序到达的帧。 发送窗口中分为已经发送被确认的帧、已经发送但等待确认的帧、还能发送的帧三种,其中这三种帧不一定是连续的,而只有发送窗口的第一个帧是已经发送被确认的帧发送窗口才能移动一格或多格。 @@ -333,16 +343,19 @@ $GBN$会一次性将在发送窗口内的$n$个帧一个个全部发送完,然 #### SR发送方必须响应的事件 1. 上层调用:上层发送数据,发送方必须检查发送窗口是否已满,未满则产生帧并发送,若已满则先缓存数据,等窗口不满时再发送。 -2. 收到一个ACK:如果收到ACK对应的帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边),在窗口向前移动到具有最小序号的未确认帧处。如果窗口移动且有序号在窗口内未发送的帧,则发送这些帧。 +2. 收到一个$ACK$:如果收到$ACK$对应的帧序号在窗口内,则$SR$发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边),在窗口向前移动到具有最小序号的未确认帧处。如果窗口移动且有序号在窗口内未发送的帧,则发送这些帧。 3. 超时事件:每一个帧都具有自己的计时器,一个超时事件发生后只重传一个帧。 #### SR接收方要做的事件 -1. 确认一个正确接收的帧而不管是否按序。失序的帧将被缓存,并返回发送方一个该帧的确认帧,直到所有比其序号更小的帧都被接收为止,这时才能将这一批帧交付上层,然后向前移动接收窗口。如果收到了接收窗口前的一个接收窗口长度以内的帧,就返回一个ACK表明发送方超时重传的帧已经得到了确认。如果是其他情况就忽略该帧。 +1. 确认一个正确接收的帧而不管是否按序。失序的帧将被缓存,并返回发送方一个该帧的确认帧,直到所有比其序号更小的帧都被接收为止,这时才能将这一批帧交付上层。 +2. 然后向前移动接收窗口。 +3. 如果收到了接收窗口前的一个接收窗口长度以内的帧,就返回一个$ACK$表明发送方超时重传的帧已经得到了确认。 +4. 如果是其他情况就忽略该帧。 #### SR运行 -假如发送窗口、接收窗口尺寸为4: +假如发送窗口、接收窗口尺寸为$4$: ![SR][SR] @@ -364,6 +377,7 @@ $GBN$会一次性将在发送窗口内的$n$个帧一个个全部发送完,然 + 只用重传出错帧。 + 接收方有缓存。 + 发送窗口与接收窗口相等。 ++ 全部收到后一起上传。 ## 介质访问控制 @@ -372,7 +386,7 @@ $GBN$会一次性将在发送窗口内的$n$个帧一个个全部发送完,然 介质访问控制就是采取措施使得两对结点之间的通信不会互相干扰。分为: -+ 静态划分信道:信道划分介质访问控制MAC ++ 静态划分信道:信道划分介质访问控制$MAC$ + 频分多路复用$FDM$。 + 时分多路复用$TDM$。 + 波分多路复用$WDM$。