【计算机网络】期末考试预习复习|上
作业讲解
物理层作业
共有4个用户进行CDMA通信。这4个用户的码片序列为: A: (–1 –1 –1 +1 +1 –1 +1 +1);B: (–1 –1 +1 –1 +1 +1 +1 –1) C: (–1 +1 –1 +1 +1 +1 –1 –1);D: (–1 +1 –1 –1 –1 –1 +1 –1) 现收到码片序列:(–1 +1 –3 +1 –1 –3 +1 +1)。问是哪些用户发送了数据?发送的是1还是0?
解答:A的内积为1,B的内积为–1,C的内积为0,D的内积为1。因此,A和D发送的是1,B发送的是0,而C未发送数据。
提问:计算过程?
为了确定每个用户的发送状态,我们需要计算接收到的码片序列与每个用户码片序列的内积。
内积的计算方法是将两个序列中对应位置的元素相乘,然后将这些乘积相加。
如果内积结果为正数,通常表示发送的是1;
如果内积结果为负数,表示发送的是0;
如果内积结果为0,表示该用户没有发送数据。
接收到的码片序列为:(–1 +1 –3 +1 –1 –3 +1 +1)
我们分别计算与A、B、C、D的内积:
A的内积:
(−1)(−1)+(+1)(−1)+(−3)(−1)+(+1)(+1)+(−1)(+1)+(−3)(−1)+(+1)(+1)+(+1)(+1)=1−1+3+1−1+3+1+1=8(−1)(−1)+(+1)(−1)+(−3)(−1)+(+1)(+1)+(−1)(+1)+(−3)(−1)+(+1)(+1)+(+1)(+1)=1−1+3+1−1+3+1+1=8
内积为8,这是一个正数,表示A发送了1。
B的内积:
(−1)(−1)+(+1)(−1)+(−3)(+1)+(+1)(−1)+(−1)(+1)+(−3)(+1)+(+1)(+1)+(+1)(−1)=1−1−3−1−1−3+1−1=−8(−1)(−1)+(+1)(−1)+(−3)(+1)+(+1)(−1)+(−1)(+1)+(−3)(+1)+(+1)(+1)+(+1)(−1)=1−1−3−1−1−3+1−1=−8
内积为-8,这是一个负数,表示B发送了0。
C的内积:
(−1)(−1)+(+1)(+1)+(−3)(−1)+(+1)(+1)+(−1)(+1)+(−3)(+1)+(+1)(−1)+(+1)(−1)=1+1+3+1−1−3−1−1=0(−1)(−1)+(+1)(+1)+(−3)(−1)+(+1)(+1)+(−1)(+1)+(−3)(+1)+(+1)(−1)+(+1)(−1)=1+1+3+1−1−3−1−1=0
内积为0,表示C没有发送数据。
D的内积:
(−1)(−1)+(+1)(+1)+(−3)(−1)+(+1)(−1)+(−1)(−1)+(−3)(−1)+(+1)(+1)+(+1)(−1)=1+1+3−1+1+3+1−1=9(−1)(−1)+(+1)(+1)+(−3)(−1)+(+1)(−1)+(−1)(−1)+(−3)(−1)+(+1)(+1)+(+1)(−1)=1+1+3−1+1+3+1−1=9
内积为9,这是一个正数,表示D发送了1。
根据这些计算,我们可以得出结论:
- A和D发送的是1。
- B发送的是0。
- C未发送数据。
数据链路层作业:3-10
判断正误:“由于Go-Back-N协议采用的是累积确认,当某个确认分组丢失时,不一定会导致发送方重传”,并画图举例说明。
正确。
Go-Back-N协议是一种用于数据传输的流量控制和错误恢复协议。在这种协议中,发送方可以连续发送多个数据分组,而不需要等待每个分组的确认。接收方会发送累积确认,这意味着一个确认不仅确认了它本身收到的分组,还确认了之前的所有分组。
判断正误的陈述是:“由于Go-Back-N协议采用的是累积确认,当某个确认分组丢失时,不一定会导致发送方重传”。这个陈述是正确的。
在Go-Back-N协议中,如果一个确认分组丢失,发送方不会立即知道需要重传。但是,如果发送方在超时时间内没有收到任何确认,它会重传最后一个发送的数据分组以及所有随后的分组。这是因为发送方假设所有未确认的分组都丢失了。
现在,让我们通过一个例子来说明这个过程:
- 发送方发送E1、E2、E3。
- 接收方收到E1、E2、E3,并发送累积确认B3(表示E1、E2、E3都已正确收到)。
- 发送方在发送E4之前,没有收到B3的确认,因此它认为E3可能丢失了。
- 发送方在超时后重传E3,然后继续发送E4、E5。
- 接收方收到E3后,再次发送累积确认B3,表示E1到E3都已正确收到。
- 发送方收到B3后,知道E1到E3已经被正确接收,然后继续发送E4和E5。
在这个过程中,即使B3丢失,发送方也会在超时后重传E3。但是,如果B3在超时之前到达,发送方就不会重传E3,因为B3表明E3已经被正确接收。这就是为什么说“当某个确认分组丢失时,不一定会导致发送方重传”的原因。
在图中,我们可以看到:
- E1、E2、E3是发送方发送的数据分组。
- B1、B2、B3是接收方发送的累积确认。
- 如果B3丢失,发送方会在超时后重传E3。
- E4和E5是发送方在确认E3被接收后继续发送的数据分组。
数据链路层作业:3-11
考虑GBN协议,当收到序号不对的分组,如果接收方仅仅将它们丢弃而不对最近按序接收的分组进行确认,会出现什么错误情况。
假设窗口大小为4,发送方连续发送1, 2, 3, 4号帧,接收方全部正确接收,但返回的确认帧却全部丢失。当发送方超时重传1, 2, 3, 4号帧时,接收方会全部丢弃(接收方正等待接收5号帧),如果不对4号帧进行再确认,发送方会一直重传1, 2, 3, 4号帧。
另外,若发送方发送DATAn,接收方正确接收,但确认丢失,若发送方没有新的数据发送时,发送方会一直不停地重传DATAn。
在Go-Back-N (GBN) 协议中,发送方可以发送多个数据帧而不需要等待确认,直到达到窗口大小的限制。接收方会发送累积确认,这意味着一个确认帧会确认所有之前的数据帧。如果接收方没有收到按序的数据帧,它会丢弃所有后续的数据帧,直到收到丢失的数据帧。
根据图片中的描述,我们可以考虑以下情况:
窗口大小为4:发送方可以连续发送4个数据帧而不需要等待确认。
发送方发送1, 2, 3, 4号帧:接收方全部正确接收,但返回的确认帧全部丢失。
发送方超时重传1, 2, 3, 4号帧:由于没有收到确认,发送方会认为接收方没有收到这些帧,因此会重传。
接收方丢弃重传的帧:接收方正在等待5号帧,因此会丢弃所有重传的1, 2, 3, 4号帧,因为它认为这些帧已经被正确接收。
发送方持续重传:如果接收方不对4号帧进行再确认,发送方会一直重传1, 2, 3, 4号帧,因为发送方没有收到任何确认。
发送方发送DATAn:如果接收方正确接收了DATAn,但确认丢失,发送方会认为DATAn没有被接收,因此会一直重传DATAn,直到收到确认。
这个问题说明了GBN协议中的一个潜在问题:如果确认帧丢失,发送方可能会无限期地重传数据,即使接收方已经正确接收了数据。这种情况会导致网络资源的浪费和效率的降低。
为了避免这种情况,可以采取以下措施:
- 增加超时时间:允许更长的时间来等待确认,以减少因网络延迟导致的不必要重传。
- 使用选择性确认(SACK):允许接收方确认特定的数据帧,而不是所有数据帧。
- 使用快速重传和快速恢复:当发送方收到三个重复的确认时,它会快速重传丢失的数据帧,而不是等待超时。
在GBN协议中,如果接收方不发送确认,发送方将无法知道数据是否已经被接收,因此会重传数据,直到收到确认或者达到某个重传限制。这可能导致发送方和接收方之间的通信效率降低。
数据链路层作业:3-12
考虑在Go-Back-N协议中帧序号的长度问题,假设帧序号用3 bit,而发送窗口为8。试找出一种情况,使得在此情况下协议不能正确工作(考虑序号重用时造成的混乱,但不考虑信道失序情况)。
设想在发送方的发送窗口内的序号为0, 1, 2, 3, 4, 5, 6, 7,且全部发送出去了。而接收方的接收窗口内的序号为0。接收端若收到0号帧,则无法判断是新的0号帧还是重传的0号帧(当0到7号帧的确认帧全部丢失)。
在Go-Back-N协议中,如果帧序号使用3位二进制数,那么序号的范围是0到7,共8个不同的序号。这意味着在序号达到7之后,下一个序号将重新从0开始,这就是序号的重用。发送窗口大小为8,意味着发送方可以连续发送8个帧而不需要等待确认。
现在,我们考虑一种情况,其中序号重用可能导致协议不能正确工作:
发送方发送窗口内的帧:发送方发送了序号为0到7的帧,即帧0, 帧1, ..., 帧7。
接收方的接收窗口:接收方的接收窗口内的序号为0,这意味着接收方正在等待帧0。
确认帧丢失:如果所有从帧0到帧7的确认帧都丢失,发送方将不知道接收方已经收到了哪些帧。
序号重用:在发送完帧7之后,发送方的下一个帧将再次使用序号0,即帧8(在3位二进制中,帧8的序号与帧0相同)。
接收方收到帧0:如果接收方收到了帧8(序号0),它将无法判断这是一个新的帧(帧8)还是一个重传的帧(帧0)。这是因为接收方的接收窗口内的序号仍然是0,它正在等待帧0。
混乱发生:如果接收方错误地将帧8当作帧0来处理,那么它可能会丢弃后续的帧,因为它认为帧0已经正确接收。这将导致数据丢失和协议的混乱。
为了避免这种情况,可以采取以下措施:
- 增加序号的位数:使用更多的位数来表示序号,以减少序号重用的可能性。
- 使用累积确认和选择性确认:累积确认可以告诉发送方所有之前序号的帧都已正确接收,而选择性确认可以明确指出哪些帧需要重传。
- 设置超时重传机制:如果发送方在一定时间内没有收到确认,它会重传未确认的帧。
在这种情况下,如果接收方收到了一个序号为0的帧,而它无法确定这是新的帧还是重传的帧,它可能会错误地处理这个帧,导致协议不能正确工作。这就是序号重用可能引起的问题。
接受窗口大小问题讨论(3-13、14)
一、Go Back N协议,接受窗口大小为1;Selective Repeat协议,接受窗口大小可选(一定要和接受窗口相等吗)。多少合适? 课后习题3.13
假设发送窗口大小为Swin,接收窗口大小为Rwin,当前接收窗口为[n ~ n+Rwin-1]。只可能出现以下两种情况:
①当接收方收到的数据分组序号落在[n-Swin ~ n-1]内时,应丢弃该数据分组并应答一个ACK。出现这种情况是因为该数据分组接收方之前已正确接收并交付上层,但发送方没有收到该分组的ACK,导致发送方重传该分组,因此要补发一个ACK。
②当接收方收到的数据分组序号落在接收窗口之外且序号落在[n+Rwin ~ n+Swin-1]大于n+win-1时,只有Swin > Rwin时才会出现这种情况,由于接收方没有缓存可存储该分组应该直接丢弃该分组而不发送ACK。由于这种情况会导致发送方无效发送分组,而Swin < Rwin则会导致接收缓存浪费,因此一般Swin > = Rwin。
在讨论Go-Back-N和Selective Repeat协议中发送窗口(Swin)和接收窗口(Rwin)的大小关系时,我们需要考虑网络的效率和可靠性。以下是对这两种情况的分析:
1. Go-Back-N协议
在Go-Back-N协议中,接收窗口大小固定为1,这意味着接收方只接受按序到达的数据帧。如果数据帧的序号不在接收窗口内,接收方会丢弃该帧。发送方在发送完一个数据帧后,必须等待确认(ACK)才能继续发送下一个数据帧。如果发送方没有收到确认,它会重传最后一个发送的数据帧以及所有后续的帧。
2. Selective Repeat协议
在Selective Repeat协议中,接收窗口可以大于1,允许接收方接收乱序的数据帧并缓存它们,直到可以按序交付给上层。这提高了网络的效率,因为不是所有后续的帧都需要重传。
窗口大小的考虑
- Swin >= Rwin:这是一般推荐的做法。如果发送窗口大于接收窗口,可能会导致发送方发送的数据帧被接收方丢弃,因为接收方的缓存不足以存储这些帧。如果接收窗口大于发送窗口,可能会导致接收方的缓存空间未被充分利用。
二、可以连续发送的帧(发送窗口)最大是多少?课后习题3.14
发送延迟= (8×100)/(2×10^6)=0.4ms,传播延迟=(1000km)/(200km/ms)=50ms
1帧发送完后等待1个RTT(Round-Trip Time往返时间),然后发另一帧。
周期长度=0.4ms+50ms×2=100.4ms,1个周期内发送1帧。
实际数据速率=(8×100B/帧×1帧)/100.4ms=7968bps。
信道利用率=7968bps/(2×10^6) bps=0.3984%。
如果采用滑动窗口协议,可连续发送的帧的个数为: (周期长度)/(分组发送时间)=100.4ms/0.4ms=251。
所以: 最大吞吐率7968 bps,信道利用率0.3984%。如果采用滑动窗口协议,要想达到最高吞吐率,发送窗口最小为251。 发送窗口最小为251。
可靠性数据发送问题讨论(3-15)
假定卫星信道的数据率为100 kbps,卫星信道的单程(即从发送方通过卫星到达接收方)传输时延为250 ms,每个数据帧长均为2000 b,忽略误码、确认字长、首部和处理时间等开销,为达到传输的最大效率,帧的序号至少多少位?此时信道最高利用率是多少?
RTT=250×2ms=0.5s
1个帧的发送时间=2000b/100kbps= 20×10^−3s。
1个帧发送完后经过1个单程延迟到达接收方,再经过1个单程延迟发送方收到应答,从而可以继续发送,理想的情况是此时窗口信息刚发送完或还没有发送完。
假设窗口值等于x,令(2000bit×x)/(100kb/s)= 20×10^−3s+RTT= 20×10^−3s+0.5s=0.52s。
得x=26。
若要取得最大信道利用率,窗口值是26即可,在此条件下,可以不间断地发送帧,所以发送率保持在100kbps。
由于16<26<32,帧的顺序号应为5位。在使用后退N帧协议的情况下,最大窗口值是31,大于26,可以不间断地发送帧,此时信道利用率是100%。
这段内容讨论的是在卫星信道中,为了达到最大传输效率,需要确定数据帧的序号位数以及信道的最高利用率。下面是详细的计算过程:
确定RTT(Round Trip Time,往返时延): RTT=2×单程延迟=2×250ms=0.5s
计算单个帧的发送时间: 发送时间=帧长数据率=2000b100kbps=20×
s
确定理想情况下的窗口大小: 理想情况下,当一个帧发送完毕后,接收方的确认信息应该在下一个帧发送前到达,以实现连续发送。因此,窗口大小
应该满足:
=发送时间+RTT=20×10−3s+0.5s=0.52s100kb/s2000bit×x=发送时间+RTT=20×
s+0.5s=0.52s 解这个方程得到:
=
=26
确定帧的序号位数: 由于窗口大小
=26,而
=32,所以需要5位来表示帧的序号(因为
=16 不足以表示到26)。
信道最高利用率: 当窗口大小为26时,可以不间断地发送帧,因此发送率可以保持在100kbps,信道利用率为100%。
后退N帧协议(Go-Back-N Protocol): 在使用后退N帧协议的情况下,最大窗口值是31,这大于26,因此可以不间断地发送帧,信道利用率仍然是100%。
这个计算过程展示了如何通过确定窗口大小和帧序号位数来优化卫星信道的数据传输效率。
PPP封装成帧实例(3-18)
当PPP协议使用面向字符的异步传输方式时,一个PPP帧的数据部分(均用十六进制写出)是7D 5E FE 27 7D 5D 7D 5D 65 7D 5E。真正的数据是什么?
转义符为7D,7D 5E还原为7E,7D 5D还原为7D,
真正的数据为:7E FE 27 7D 7D 65 7E。
PPP协议中,当使用面向字符的异步传输方式时,需要对特定的控制字符进行转义,以避免它们被误认为是帧的边界或控制信息。在这种情况下,转义字符是7D,而7E是帧的边界标志,7D本身也是需要转义的字符。
转义规则如下:
- 如果数据中出现7D,那么它后面会跟着一个5E,表示原始数据中的7D。
- 如果数据中出现7E,那么它后面会跟着一个5D,表示原始数据中的7E。
给定的数据部分是:7D5EFE277D5D7D5D657D5E
我们按照转义规则还原原始数据:
- 7D5E:7D后面跟着5E,表示原始数据中的7E。
- FE:直接保留,因为它不是转义序列的一部分。
- 27:直接保留,因为它不是转义序列的一部分。
- 7D5D:7D后面跟着5D,表示原始数据中的7D。
- 7D5D:同上,表示原始数据中的7D。
- 65:直接保留,因为它不是转义序列的一部分。
- 7D5E:同第一步,表示原始数据中的7E。
因此,真正的数据为:7EFE277D7D657E。
这个过程就是将转义序列7D5E和7D5D分别还原为7E和7D,其他字符直接保留。
PPP封装成帧实例(3-19)
PPP协议使用同步传输技术传送比特串0110111111111100。试问经过零比特填充后变成怎样的比特串?若接收端收到的PPP帧的数据部分是0001110111110111110110,问删除发送端加入的零比特后变成怎样的比特串?
解答:
发送的比特流0110111111111100
填充比特后为011011111011111000
收到的比特流0001110111110111110110
删除比特后为0001110111110111110110
PPP(Point-to-Point Protocol,点对点协议)在同步传输中使用零比特填充(Zero Bit Insertion)技术来避免数据中出现长的零比特序列,这可能会被误认为是帧的边界。零比特填充的规则是:每当发送端检测到5个连续的1时,就在它们后面插入一个0。
发送端的零比特填充过程:
原始比特流:0110111111111100
从第一个1开始,数连续的1,直到第五个1,后面插入一个0:
- 011011111111000
继续检查,直到没有更多的5个连续1:
- 011011111101111100
填充后的比特流:011011111101111100
接收端的零比特删除过程:
收到的比特流:0001110111110111110110
从开始检查,每当遇到5个连续的1后面跟着一个0,就删除这个0:
- 0001110111110111110110(没有5个连续的1,所以不需要删除)
继续检查,直到没有更多的5个连续1后面跟着一个0:
- 0001110111110111110110(没有需要删除的0)
删除比特后的比特流:0001110111110111110110
注意:在这个问题中,收到的比特流并没有5个连续的1后面跟着一个0的情况,所以不需要进行零比特删除。这意味着发送端可能没有正确地进行零比特填充,或者在传输过程中出现了错误。
根据题目描述,接收端收到的数据部分是0001110111110111110110,这个数据流中没有5个连续的1后面跟着一个0的模式,所以不需要进行零比特删除。如果需要删除,那么应该是发送端在发送过程中没有正确地填充零比特。
以太网帧长度问题(3.26)
在以太网帧中,为什么有最小帧长的限制?画图举例说明。
CSMA/CD协议一个要点是当发送站正在发送时,若检测到冲突则立即中止发送,然后推后一段时间再发送。如果发送的帧太短,还没有来得及检测到冲突就已经发送完了,那么就无法进行冲突检测了。因此,所发送的帧的最短长度应当要保证在发送完毕之前,必须能够检测到可能最晚来到的冲突信号。
在以太网中,最小帧长的限制主要是为了确保在CSMA/CD(Carrier Sense Multiple Access with Collision Detection,载波监听多路访问/冲突检测)协议下,网络中的设备能够在发送数据帧时检测到可能发生的冲突。以下是对这一过程的详细解释:
冲突检测的必要性:在以太网中,多个设备可能同时尝试发送数据,这可能导致数据帧在传输介质上发生冲突。CSMA/CD协议允许设备在发送数据时监听网络,以检测是否有其他设备也在发送数据。
最小帧长的定义:最小帧长是指以太网帧的最小允许长度。这个长度足够长,以便在帧发送完成之前,发送设备能够检测到任何可能的冲突。
冲突传播时间:在网络中,信号传播需要时间。如果两个设备A和B同时发送数据,它们之间的信号可能会在某个点发生冲突。这个冲突信号需要时间传播到发送设备的接收器。
检测冲突的时间:为了检测到冲突,发送设备必须在发送数据的同时监听网络。如果帧太短,发送设备可能在冲突信号到达之前就已经完成了发送,从而无法检测到冲突。
最小帧长的作用:最小帧长确保了即使在最坏的情况下(即冲突信号在帧发送的最后时刻到达),发送设备也有足够的时间来检测到冲突。这样,发送设备就可以停止发送,并在一段时间后重新尝试发送。
图示说明:在图中,A站和B站的信号在某个点发生碰撞。如果A站的帧太短,那么在t时刻,A站的接收器可能还没有接收到来自B站的冲突信号,因此无法检测到冲突。但是,由于A站和B站的信号碰撞,其他设备可能无法正确接收A站的数据。
计算过程:最小帧长可以通过以下公式计算:
最小帧长=传播延迟×网络带宽最小帧长=传播延迟×网络带宽
其中,传播延迟是指信号在网络中传播所需的时间,网络带宽是指网络能够传输数据的最大速率。
通过确保帧的长度满足最小帧长的要求,以太网能够更有效地管理冲突,提高网络的可靠性和效率。
以太网帧长度问题(3.27)
假定总线长度为1 km,数据率为1 Gbit/s。设信号在总线上的传播速率为200000 km/s。求能够使用CSMA/CD协议的最短帧长。
只有发送时延大于该往返时延,才能保证检测出所有可能的碰撞。
解答:端到端往返时延为(2 km) / (200000 km/s) = 10s,因此最短帧长为(1 Gbit/s)× (10
s) = 10000 bit,即1250字节。
在这个问题中,我们需要计算在使用CSMA/CD协议的以太网中,能够检测到所有可能的碰撞的最短帧长。这涉及到计算端到端的往返时延(Round-Trip Time, RTT)和基于此时延的数据帧长度。
步骤和计算过程:
计算往返时延(RTT):
- 总线长度为1 km,信号在总线上的传播速率为200,000 km/s。
- 往返时延(RTT)是信号从一端传播到另一端再返回的时间,因此需要考虑两倍的总线长度。
- RTT=
=10μs
计算最短帧长:
- 数据率为1 Gbit/s,即每秒可以传输1,000,000,000位(bit)。
- 为了确保帧在发送完毕之前能够检测到可能的碰撞,帧的发送时间必须大于RTT。
- 最短帧长=数据率×RTT=1 Gbit/s×10μs=10,000 bit
转换为字节:
- 1字节(Byte)等于8位(bit)。
- 最短帧长(字节)=
=1,250 字节
结论:
为了保证在使用CSMA/CD协议的以太网中能够检测到所有可能的碰撞,最短帧长应为1,250字节。这个长度确保了即使在最坏的情况下,即信号在网络中传播的最远端发生碰撞,发送设备也有足够的时间来检测到这个碰撞并采取措施。
交换机转发表问题3-41
发送的帧 | S1的MAC地址表 | S2的MAC地址表 | S1的处理 (转发/丢弃/无) | S2的处理 (转发/丢弃/无) | ||
地址 | 接口 | 地址 | 接口 | |||
A→D | A | 1 | A | 4 | 从接口2, 3, 4转发 | 从接口1, 2, 3转发 |
E→F | E | 4 | E | 2 | 从接口1, 2, 3转发 | 从接口1, 3, 4转发 |
D→A | D | 4 | D | 1 | 从接口1转发 | 从接口4转发 |
F→E | - | - | F | 3 | 没有收到该帧 | 从接口2转发 |
在网络中,交换机通过学习源MAC地址和它到达的端口来构建一个MAC地址表。这个表帮助交换机决定如何转发接收到的帧。以下是对图片中每个发送帧的处理过程的详细解释:
A→D
- 发送帧从设备A到设备D。
- 在交换机 S1中,MAC地址A关联的端口是1。这意味着A连接在 S1 的端口1上。
- 在交换机 S2 中,MAC地址A关联的端口是4。
- S1 需要将帧转发到除了端口1之外的所有端口(2, 3, 4),因为A在端口1上,帧需要到达D。
- S2需要将帧转发到除了端口4之外的所有端口(1, 2, 3),因为A在端口4上。
E→F
- 发送帧从设备E到设备F。
- 在 S1 中,MAC地址E关联的端口是4。
- 在 S2中,MAC地址E关联的端口是2。
- S1将帧转发到端口1, 2, 3,因为E在端口4上。
- S2 将帧转发到端口1, 3, 4,因为E在端口2上。
D→A
- 发送帧从设备D到设备A。
- 在 S1 中,MAC地址D关联的端口是4。
- 在 S2 中,MAC地址D关联的端口是1。
- S1将帧转发到端口1,因为D在端口4上。
- S2 将帧转发到端口4,因为D在端口1上。
F→E
- 发送帧从设备F到设备E。
- 在 S1 中,没有F的MAC地址记录,所以 S1 不知道F的位置,因此它不会转发这个帧。
- 在 S2 中,MAC地址F关联的端口是3。
- S2 将帧转发到端口2,因为F在端口3上。
这个表格展示了交换机如何根据MAC地址表来决定帧的转发路径。如果交换机在MAC地址表中找到了目的MAC地址,它会将帧转发到相应的端口;如果没有找到,它通常会将帧广播到所有端口,除了接收帧的端口。在最后一个例子中,S1没有F的记录,所以它不会转发这个帧,而 S2会根据其MAC地址表将帧转发到端口2。
交换以太网问题(3-42)
以太网交换机中的MAC地址表是用自学习算法建立的。如果有的站点总是不发送数据而仅仅接收数据,那么在地址表中是否就没有与这样的站点相对应的项目?如果要向这个站点发送数据帧,那么交换机能够把数据帧正确转发到目的地址吗?
如果有的站点总是不发送数据而仅仅接收数据,那么在地址表中就没有与这样的站点相对应的项目。如果要向这个站点发送数据帧,交换机通过向所有接口转发把数据帧正确转发到目的地址。
这个问题涉及到以太网交换机的工作原理,特别是MAC地址表的建立和数据帧的转发机制。
MAC地址表的建立:以太网交换机使用自学习算法来建立MAC地址表。这意味着当交换机接收到一个数据帧时,它会检查帧中的源MAC地址,并将其与接收该帧的端口关联起来,然后更新到MAC地址表中。这样,交换机就可以知道哪个MAC地址连接在哪个端口上。
不发送数据的站点:如果一个站点(设备)从不发送数据,只接收数据,那么它的MAC地址不会出现在交换机的MAC地址表中,因为交换机没有机会学习到这个站点的MAC地址。
向不发送数据的站点发送数据帧:当需要向这样的站点发送数据帧时,交换机面临一个问题,因为它不知道这个站点连接在哪个端口上。在这种情况下,交换机会采取广播的方式,将数据帧发送到除了接收该帧的端口之外的所有端口。这称为泛洪(flooding)。
泛洪过程:泛洪是一种简单的转发策略,当交换机不知道目的MAC地址对应的端口时,它会将数据帧发送到所有其他端口。这样做的目的是确保数据帧能够到达目的站点,即使交换机的MAC地址表中没有该站点的记录。
计算过程:在这个问题中,没有具体的计算过程,因为交换机的转发决策是基于MAC地址表的查找和泛洪策略,而不是基于数学计算。
总结来说,如果一个站点从不发送数据,那么它的MAC地址不会出现在交换机的MAC地址表中。当需要向这样的站点发送数据时,交换机会通过泛洪的方式将数据帧发送到所有端口,以确保数据能够到达目的地。这是一种确保网络连通性的机制,尽管它可能会在网络中产生额外的流量。
无线局域网问题(3-48)
为什么在无线局域网上发送数据帧后要对方必须发回确认帧,以太网就不需要对方发回确认帧?
由于无线局域网的MAC协议不进行碰撞检测,而且无线信道易受干扰,导致大量帧因为碰撞或其他干扰不能被目的站正确接收,因此在无线局域网上发送数据帧后要对方必须发回确认帧,若超时收不到确认,则进行重传。
以太网有线网络中,可以很容易实现碰撞检测,当信号碰撞时能及时检测到并进行重传。而如果信号不碰撞,在有线网络中误码率是非常低的,因此没有必要实现可靠数据传输。
无线局域网(WLAN)和以太网在数据传输确认机制上存在差异。以下是详细的解释:
无线局域网的MAC协议:
- 无线局域网使用的MAC协议(例如802.11系列协议)不进行碰撞检测。这是因为无线信道的特性使得碰撞检测变得复杂且不可靠。
- 无线信道容易受到干扰,如其他无线设备的信号、物理障碍物等,这可能导致数据帧在传输过程中丢失或损坏。
确认帧的重要性:
- 在无线局域网中,发送方在发送数据帧后,需要接收方发回确认帧(ACK)。这是为了确保数据帧已经被正确接收。
- 如果发送方在一定时间内没有收到确认帧,它会假设数据帧没有被正确接收,然后进行重传。
以太网的碰撞检测:
- 以太网(有线网络)使用CSMA/CD(载波监听多路访问/碰撞检测)协议。这种协议允许网络设备在发送数据之前监听信道,如果检测到碰撞,就会停止发送并等待一段时间后重试。
- 由于以太网的物理特性,碰撞检测相对容易实现,而且有线网络的误码率非常低。
可靠数据传输的实现:
- 在有线网络中,由于误码率低,通常不需要实现复杂的可靠数据传输机制,如确认帧和重传。
- 然而,在无线网络中,由于信道的不稳定性,实现可靠数据传输是必要的,这通常通过确认帧和重传来完成。
总结来说,无线局域网需要接收方发回确认帧是因为无线信道的不稳定性导致的高误码率和无法进行有效的碰撞检测。而以太网由于其有线特性,可以实现碰撞检测,并且误码率低,因此不需要接收方发回确认帧。这种差异反映了两种网络技术在设计和实现上的不同考虑。
相关文章:
【计算机网络】期末考试预习复习|上
作业讲解 物理层作业 共有4个用户进行CDMA通信。这4个用户的码片序列为: A: (–1 –1 –1 1 1 –1 1 1);B: (–1 –1 1 –1 1 1 1 –1) C: (–1 1 –1 1 1 1 –1 –1);D: (–1 1 –1 –1 –1 –1 1 –1) 现收到码片序列:(–1 1 –…...

YOLOv8目标检测(四)_图片推理
YOLOv8目标检测(一)_检测流程梳理:YOLOv8目标检测(一)_检测流程梳理_yolo检测流程-CSDN博客 YOLOv8目标检测(二)_准备数据集:YOLOv8目标检测(二)_准备数据集_yolov8 数据集准备-CSDN博客 YOLOv8目标检测(三)_训练模型:YOLOv8目标检测(三)_训…...

AI工具如何深刻改变我们的工作与生活
在当今这个科技日新月异的时代,人工智能(AI)已经从科幻小说中的概念变成了我们日常生活中不可或缺的一部分。从智能家居到自动驾驶汽车,从医疗诊断到金融服务,AI正以惊人的速度重塑着我们的世界。 一、工作方式的革新…...

springboot中——Logback介绍
程序中的日志,是用来记录应用程序的运行信息、状态信息、错误信息等。 Logback基本使用 springboot的依赖自动传递了logback的依赖,所以不用再引入依赖 之后在resources文件下创建logback.xml文件,写入 <?xml version"1.0" …...

【Tomcat】第一站:理解tomcat与Socket
目录 1. Tomcat 1.1 Tomcat帮助启动http服务器。 1.2 tomcat理解: 2. 计算机网络最基本的流程 2.1 信息是怎么来的? 2.2 端口是干什么的? 3. 简单的Socket案例 服务端 客户端 启动: 3.2 在Tomcat发送信息,看…...

TQ15EG开发板教程:使用SSH登录petalinux
本例程在上一章“创建运行petalinux2019.1”基础上进行,本例程将实现使用SSH登录petalinux。 将上一章生成的BOOT.BIN与imag.ub文件放入到SD卡中启动。给开发板插入电源与串口,注意串口插入后会识别出两个串口号,都需要打开,查看串…...

Java从入门到工作4 - MySQL
一:检测数据库网络 telnet 127.0.0.1 3306 注意ip和端口后之间是空格,不需要引号 二:SQL语法 1、创建结果集 SELECT 电视机 AS typeUNION SELECT 电冰箱UNION SELECT 洗衣机UNION SELECT 空调UNION SELECT 电脑UNION SELECT 热水器UNION…...

OpenShift 4 - 多云管理(2) - 配置多集群观察功能
《OpenShift / RHEL / DevSecOps 汇总目录》 本文在 OpenShift 4.17 RHACM 2.12 环境中进行验证。 文章目录 多集群观察技术架构安装多集群观察功能监控多集群的运行状态监控多集群的应用运行在被管集群监控应用运行在管理集群监控被管集群的应用运行 参考 多集群观察技术架构…...

【鸿睿创智开发板试用】RK3568 NPU的人工智能推理测试
目录 引言 驱动移植 例程编译 修改build.sh 执行编译 运行测试 部署libc的库文件 执行测试程序 结语 引言 鸿睿创智的H01开发板是基于RK3568芯片的,瑞芯微芯片的一大特色就是提供了NPU推理的支持。本文将对其NPU推理进行测试。 驱动移植 H01的开发板已经…...

iOS swift开发系列 -- tabbar问题总结
1.单视图如何改为tabbar,以便显示2个标签页 右上角➕,输入tabbar 找到控件,然后选中,把entrypoint移动到tabbar控件 2.改成tabbar,生成两个item,配置各自视图后,启动发现报错 Thread 1: “-[p…...

四、CSS3
一、CSS3简介 1、CSS3概述 CSS3 是 CSS2 的升级版本,他在CSS2的基础上,新增了很多强大的新功能,从而解决一些实际面临的问题。 CSS在未来会按照模块化的方式去发展:https://www.w3.org/Style/CSS/current-work.html …...

Three使用WebGPU的关键TSL
Three.js 使用 WebGPU 的关键 TSL TSL: three.js shader language 介绍 three.js 材质转为webgpu的关键流程, 从而引出 TSL. 1、关键类关系 WebGPURenderer|-- library: StandardNodeLibrary|-- _nodes: Nodes|-- _objects: RenderObjects|-- createRenderObject()StandardN…...

ESP32-S3模组上跑通ES8388(30)
接前一篇文章:ESP32-S3模组上跑通ES8388(29) 二、利用ESP-ADF操作ES8388 2. 详细解析 上一回终于解析完了es8388_init函数的所有代码。本回回到调用它的地方,继续往下讲解。 我们是从ESP32-S3模组上跑通ES8388(7)-CSDN博客开始进入es8388_init函数,展开对于它的解析的…...

概率论得学习和整理24:EXCEL的各种图形,统计图形
目录 0 EXCEL的各种图形,统计图形 1 统计图形 / 直方图 / 其实叫 频度图 hist最合适(用原始数据直接作图) 1.1 什么是频度图 1.2 如何创建频度图,一般是只选中1列数据(1个数组) 1.3 如何修改频度图的宽度 1.4 hist图的一个特…...

WPF中依赖属性的底层和普通属性的底层有什么不一样
WPF中依赖属性的底层 在 WPF 中,依赖属性(Dependency Property)是 WPF 属性系统的核心,它支持功能强大的特性(如数据绑定、动画、样式等)。其底层实现是围绕 DependencyObject 类展开的。以下是 WPF 中依赖…...

【Qt】drawText字体大小问题探究
背景 软件的一个功能是: 打开图片在图片上绘制序号,序号的样式是圆圈内包含数字将带有序号的图片打印出来 实现思路也很简单,在屏幕上显示时重写paintEvent函数,利用QPainter完成图片和序号的绘制。打印时只需要将QPainter对应…...

Mapbox-GL 的源码解读的一般步骤
Mapbox-GL 是一个非常优秀的二三维地理引擎,随着智能驾驶时代的到来,应用也会越来越广泛,关于mapbox-gl和其他地理引擎的详细对比(比如CesiumJS),后续有时间会加更。地理首先理解 Mapbox-GL 的源码是一项复…...

【C++】高级分析 switch 语句的应用
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯switch 语句的基本用法语法结构核心要点实例演示正确实现 期望输出错误实现错误输出 💯if 与 switch 语句的实现比较使用 if 语句使用 switch 语句比较分析 &am…...

活动预告 | Surface 来了#11:Windows 11 AI+ PC,释放 AI 办公设备的无限潜能
课程介绍 欢迎来到 Surface 来了第 11 期节目。 今年 5 月底,微软推出了专为 AI 体验而设计的全新 Windows PC 品类:Windows 11 AI PC。 微软通过 Windows 11 AI PC,进一步强调了 NPU 在运行设备端 AI 功能的重要性。并要求符合这一品类的…...

php基础:正则表达式
1.正则表达式 正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。到目前为止,我们前面所用过的精确(文本)匹配也是一种正则表达式。 在PHP中,正则表达式一般是由正规字…...

go语言压缩[]byte数据为zlib格式的时候,耗时较多,应该怎么修改?
在Go语言中使用compress/flate包来实现Zlib格式的压缩时,如果发现压缩耗时较多,可以考虑以下几个优化方向: ### 1. 压缩级别 默认情况下,compress/flate包中的NewWriter函数使用的是默认压缩级别(BestSpeed和BestComp…...

[机器学习]AdaBoost(数学原理 + 例子解释 + 代码实战)
AdaBoost AdaBoost(Adaptive Boosting)是一种Boosting算法,它通过迭代地训练弱分类器并将它们组合成一个强分类器来提高分类性能。 AdaBoost算法的特点是它能够自适应地调整样本的权重,使那些被错误分类的样本在后续的训练中得到…...

深入了解Spring
目录 Spring基础 什么是Spring框架? Spring 包含的模块有哪些? Core Container AOP Data Access/Integration Spring Web Messaging Spring Test Spring,Spring MVC,Spring Boot 之间什么关系? Spring基础 什么是Spring框架? Sp…...

jar 包如何下载
maven官网:https://mvnrepository.com/ 点击搜索,找对应搜索结果点击...

ESlint代码规范,手动与自动修复
规范说明 规则参考 - ESLint - 插件化的 JavaScript 代码检查工具 规范说明 可看到是main.js文件报错分别是第三行第30个字符,以及第七行第一个字符 后面则是规范说明,可以根据说明查找相应的规范 一.手动修正 ctrl f 可以搜索 二.自动修正 …...

利用编程获得money?
在当今数字化时代,编程技能为人们开辟了众多赚钱途径。无论你是编程新手还是经验丰富的开发者,都能在广阔的市场中找到适合自己的盈利方式。以下是一份详细的用编程赚钱指南。 一、自由职业平台 像 Upwork、Freelancer 和 Fiverr 等知名自由职业平台&am…...

设计规规范:【App 配色】
文章目录 引言I App 配色组成色彩象征 & 联想II 知识扩展设计流程图UI设计交互设计UI交互设计引言 设计规范,保持设计一致性,提高设计效率。宏观上对内统一,管理与合作变得容易。 按类型管理颜色、文本样式、图标、组件(symbol)。 蓝湖设计规范云 https://lanhuapp.co…...

react 使用 PersistGate 白屏解决方案
我在全局添加 PersistGate 组件后报错了 报错信息如下: Uncaught Error: A component suspended while responding to synchronous input. This will cause the UI to be replaced with a loading indicator. To fix, updates that suspend should be wrapped wi…...

F5中获取客户端ip地址(client ip)
当F5设备对其原始设置上的所有IP地址使用NAT时,连接到poo成员(nodes、backend servers)的出站连接将是NAT IP地址。 pool 成员(nodes、backend servers)将无法看到真实的客户端 ip地址,因为看到的是F5上的…...

Maven(生命周期、POM、模块化、聚合、依赖管理)详解
目录 Maven构建项目的生命周期 Maven的常用命令 POM 依赖管理 依赖导入 依赖范围设置 依赖版本维护 依赖传递 依赖冲突 解决依赖冲突的方法 使用maven提供的依赖调节原则 排除依赖,排除依赖的jar包 锁定版本 项目模块化 Maven项目的继承 Maven项目…...