【计算机网络】期末考试预习复习|上

devtools/2024/12/22 16:56:38/

作业讲解

物理层作业

        共有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的内积:

  1. 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。

  2. 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。

  3. 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没有发送数据。

  4. 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协议中,如果一个确认分组丢失,发送方不会立即知道需要重传。但是,如果发送方在超时时间内没有收到任何确认,它会重传最后一个发送的数据分组以及所有随后的分组。这是因为发送方假设所有未确认的分组都丢失了。

现在,让我们通过一个例子来说明这个过程:

  1. 发送方发送E1、E2、E3。
  2. 接收方收到E1、E2、E3,并发送累积确认B3(表示E1、E2、E3都已正确收到)。
  3. 发送方在发送E4之前,没有收到B3的确认,因此它认为E3可能丢失了。
  4. 发送方在超时后重传E3,然后继续发送E4、E5。
  5. 接收方收到E3后,再次发送累积确认B3,表示E1到E3都已正确收到。
  6. 发送方收到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) 协议中,发送方可以发送多个数据帧而不需要等待确认,直到达到窗口大小的限制。接收方会发送累积确认,这意味着一个确认帧会确认所有之前的数据帧。如果接收方没有收到按序的数据帧,它会丢弃所有后续的数据帧,直到收到丢失的数据帧。

根据图片中的描述,我们可以考虑以下情况:

  1. 窗口大小为4:发送方可以连续发送4个数据帧而不需要等待确认。

  2. 发送方发送1, 2, 3, 4号帧:接收方全部正确接收,但返回的确认帧全部丢失。

  3. 发送方超时重传1, 2, 3, 4号帧:由于没有收到确认,发送方会认为接收方没有收到这些帧,因此会重传。

  4. 接收方丢弃重传的帧:接收方正在等待5号帧,因此会丢弃所有重传的1, 2, 3, 4号帧,因为它认为这些帧已经被正确接收。

  5. 发送方持续重传:如果接收方不对4号帧进行再确认,发送方会一直重传1, 2, 3, 4号帧,因为发送方没有收到任何确认。

  6. 发送方发送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个帧而不需要等待确认。

现在,我们考虑一种情况,其中序号重用可能导致协议不能正确工作:

  1. 发送方发送窗口内的帧:发送方发送了序号为0到7的帧,即帧0, 帧1, ..., 帧7。

  2. 接收方的接收窗口:接收方的接收窗口内的序号为0,这意味着接收方正在等待帧0。

  3. 确认帧丢失:如果所有从帧0到帧7的确认帧都丢失,发送方将不知道接收方已经收到了哪些帧。

  4. 序号重用:在发送完帧7之后,发送方的下一个帧将再次使用序号0,即帧8(在3位二进制中,帧8的序号与帧0相同)。

  5. 接收方收到帧0:如果接收方收到了帧8(序号0),它将无法判断这是一个新的帧(帧8)还是一个重传的帧(帧0)。这是因为接收方的接收窗口内的序号仍然是0,它正在等待帧0。

  6. 混乱发生:如果接收方错误地将帧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%。

这段内容讨论的是在卫星信道中,为了达到最大传输效率,需要确定数据帧的序号位数以及信道的最高利用率。下面是详细的计算过程:

  1. 确定RTT(Round Trip Time,往返时延): RTT=2×单程延迟=2×250ms=0.5s

  2. 计算单个帧的发送时间: 发送时间=帧长数据率=2000b100kbps=20×10^{-3}s

  3. 确定理想情况下的窗口大小: 理想情况下,当一个帧发送完毕后,接收方的确认信息应该在下一个帧发送前到达,以实现连续发送。因此,窗口大小 x应该满足: \frac{2000bit \times x}{100kb/s}=发送时间+RTT=20×10−3s+0.5s=0.52s100kb/s2000bit×x​=发送时间+RTT=20×10^{-3}s+0.5s=0.52s 解这个方程得到: x=\frac{0.52s \times 100kb/s}{2000bit}​=26

  4. 确定帧的序号位数: 由于窗口大小 x=26,而 2^{5}=32,所以需要5位来表示帧的序号(因为 2^{4}=16 不足以表示到26)。

  5. 信道最高利用率: 当窗口大小为26时,可以不间断地发送帧,因此发送率可以保持在100kbps,信道利用率为100%。

  6. 后退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

我们按照转义规则还原原始数据:

  1. 7D5E:7D后面跟着5E,表示原始数据中的7E。
  2. FE:直接保留,因为它不是转义序列的一部分。
  3. 27:直接保留,因为它不是转义序列的一部分。
  4. 7D5D:7D后面跟着5D,表示原始数据中的7D。
  5. 7D5D:同上,表示原始数据中的7D。
  6. 65:直接保留,因为它不是转义序列的一部分。
  7. 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,直到第五个1,后面插入一个0:

    • 011011111111000
  2. 继续检查,直到没有更多的5个连续1:

    • 011011111101111100

填充后的比特流:011011111101111100

接收端的零比特删除过程:

收到的比特流:0001110111110111110110

  1. 从开始检查,每当遇到5个连续的1后面跟着一个0,就删除这个0:

    • 0001110111110111110110(没有5个连续的1,所以不需要删除)
  2. 继续检查,直到没有更多的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,载波监听多路访问/冲突检测)协议下,网络中的设备能够在发送数据帧时检测到可能发生的冲突。以下是对这一过程的详细解释:

  1. 冲突检测的必要性:在以太网中,多个设备可能同时尝试发送数据,这可能导致数据帧在传输介质上发生冲突。CSMA/CD协议允许设备在发送数据时监听网络,以检测是否有其他设备也在发送数据。

  2. 最小帧长的定义:最小帧长是指以太网帧的最小允许长度。这个长度足够长,以便在帧发送完成之前,发送设备能够检测到任何可能的冲突。

  3. 冲突传播时间:在网络中,信号传播需要时间。如果两个设备A和B同时发送数据,它们之间的信号可能会在某个点发生冲突。这个冲突信号需要时间传播到发送设备的接收器。

  4. 检测冲突的时间:为了检测到冲突,发送设备必须在发送数据的同时监听网络。如果帧太短,发送设备可能在冲突信号到达之前就已经完成了发送,从而无法检测到冲突。

  5. 最小帧长的作用:最小帧长确保了即使在最坏的情况下(即冲突信号在帧发送的最后时刻到达),发送设备也有足够的时间来检测到冲突。这样,发送设备就可以停止发送,并在一段时间后重新尝试发送。

  6. 图示说明:在图中,A站和B站的信号在某个点发生碰撞。如果A站的帧太短,那么在t时刻,A站的接收器可能还没有接收到来自B站的冲突信号,因此无法检测到冲突。但是,由于A站和B站的信号碰撞,其他设备可能无法正确接收A站的数据。

  7. 计算过程:最小帧长可以通过以下公式计算:

    最小帧长=传播延迟×网络带宽最小帧长=传播延迟×网络带宽

    其中,传播延迟是指信号在网络中传播所需的时间,网络带宽是指网络能够传输数据的最大速率。

通过确保帧的长度满足最小帧长的要求,以太网能够更有效地管理冲突,提高网络的可靠性和效率。

以太网帧长度问题(3.27)

        假定总线长度为1 km,数据率为1 Gbit/s。设信号在总线上的传播速率为200000 km/s。求能够使用CSMA/CD协议的最短帧长。

只有发送时延大于该往返时延,才能保证检测出所有可能的碰撞。

解答:端到端往返时延为(2 km) / (200000 km/s) = 10\mus,因此最短帧长为(1 Gbit/s)× (10\mus) = 10000 bit,即1250字节。

在这个问题中,我们需要计算在使用CSMA/CD协议的以太网中,能够检测到所有可能的碰撞的最短帧长。这涉及到计算端到端的往返时延(Round-Trip Time, RTT)和基于此时延的数据帧长度。

步骤和计算过程:

  1. 计算往返时延(RTT)

    • 总线长度为1 km,信号在总线上的传播速率为200,000 km/s。
    • 往返时延(RTT)是信号从一端传播到另一端再返回的时间,因此需要考虑两倍的总线长度。
    • RTT=\frac{2 \times 1km}{200,000km/s}​=10μs
  2. 计算最短帧长

    • 数据率为1 Gbit/s,即每秒可以传输1,000,000,000位(bit)。
    • 为了确保帧在发送完毕之前能够检测到可能的碰撞,帧的发送时间必须大于RTT。
    • 最短帧长=数据率×RTT=1 Gbit/s×10μs=10,000 bit
  3. 转换为字节

    • 1字节(Byte)等于8位(bit)。
    • 最短帧长(字节)=\frac{10,000bit}{8}=1,250 字节

结论:

为了保证在使用CSMA/CD协议的以太网中能够检测到所有可能的碰撞,最短帧长应为1,250字节。这个长度确保了即使在最坏的情况下,即信号在网络中传播的最远端发生碰撞,发送设备也有足够的时间来检测到这个碰撞并采取措施。

交换机转发表问题3-41

发送的帧

S1MAC地址表

S2MAC地址表

S1的处理

(转发/丢弃/无)

S2的处理

(转发/丢弃/无)

地址

接口

地址

接口

AD

A

1

A

4

从接口2, 3, 4转发

从接口1, 2, 3转发

EF

E

4

E

2

从接口1, 2, 3转发

从接口1, 3, 4转发

DA

D

4

D

1

从接口1转发

从接口4转发

FE

-

-

F

3

没有收到该帧

从接口2转发

在网络中,交换机通过学习源MAC地址和它到达的端口来构建一个MAC地址表。这个表帮助交换机决定如何转发接收到的帧。以下是对图片中每个发送帧的处理过程的详细解释:

  1. 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上。
  2. E→F

    • 发送帧从设备E到设备F。
    • 在 S1​ 中,MAC地址E关联的端口是4。
    • 在 S2中,MAC地址E关联的端口是2。
    • S1将帧转发到端口1, 2, 3,因为E在端口4上。
    • S2 将帧转发到端口1, 3, 4,因为E在端口2上。
  3. D→A

    • 发送帧从设备D到设备A。
    • 在 S1 中,MAC地址D关联的端口是4。
    • 在 S2​ 中,MAC地址D关联的端口是1。
    • S1将帧转发到端口1,因为D在端口4上。
    • S2 将帧转发到端口4,因为D在端口1上。
  4. 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地址表的建立和数据帧的转发机制。

  1. MAC地址表的建立:以太网交换机使用自学习算法来建立MAC地址表。这意味着当交换机接收到一个数据帧时,它会检查帧中的源MAC地址,并将其与接收该帧的端口关联起来,然后更新到MAC地址表中。这样,交换机就可以知道哪个MAC地址连接在哪个端口上。

  2. 不发送数据的站点:如果一个站点(设备)从不发送数据,只接收数据,那么它的MAC地址不会出现在交换机的MAC地址表中,因为交换机没有机会学习到这个站点的MAC地址。

  3. 向不发送数据的站点发送数据帧:当需要向这样的站点发送数据帧时,交换机面临一个问题,因为它不知道这个站点连接在哪个端口上。在这种情况下,交换机会采取广播的方式,将数据帧发送到除了接收该帧的端口之外的所有端口。这称为泛洪(flooding)。

  4. 泛洪过程:泛洪是一种简单的转发策略,当交换机不知道目的MAC地址对应的端口时,它会将数据帧发送到所有其他端口。这样做的目的是确保数据帧能够到达目的站点,即使交换机的MAC地址表中没有该站点的记录。

  5. 计算过程:在这个问题中,没有具体的计算过程,因为交换机的转发决策是基于MAC地址表的查找和泛洪策略,而不是基于数学计算。

总结来说,如果一个站点从不发送数据,那么它的MAC地址不会出现在交换机的MAC地址表中。当需要向这样的站点发送数据时,交换机会通过泛洪的方式将数据帧发送到所有端口,以确保数据能够到达目的地。这是一种确保网络连通性的机制,尽管它可能会在网络中产生额外的流量。

无线局域网问题(3-48)

        为什么在无线局域网上发送数据帧后要对方必须发回确认帧,以太网就不需要对方发回确认帧?

由于无线局域网的MAC协议不进行碰撞检测,而且无线信道易受干扰,导致大量帧因为碰撞或其他干扰不能被目的站正确接收,因此在无线局域网上发送数据帧后要对方必须发回确认帧,若超时收不到确认,则进行重传。

以太网有线网络中,可以很容易实现碰撞检测,当信号碰撞时能及时检测到并进行重传。而如果信号不碰撞,在有线网络中误码率是非常低的,因此没有必要实现可靠数据传输。

无线局域网(WLAN)和以太网在数据传输确认机制上存在差异。以下是详细的解释:

  1. 无线局域网的MAC协议

    • 无线局域网使用的MAC协议(例如802.11系列协议)不进行碰撞检测。这是因为无线信道的特性使得碰撞检测变得复杂且不可靠。
    • 无线信道容易受到干扰,如其他无线设备的信号、物理障碍物等,这可能导致数据帧在传输过程中丢失或损坏。
  2. 确认帧的重要性

    • 在无线局域网中,发送方在发送数据帧后,需要接收方发回确认帧(ACK)。这是为了确保数据帧已经被正确接收。
    • 如果发送方在一定时间内没有收到确认帧,它会假设数据帧没有被正确接收,然后进行重传。
  3. 以太网的碰撞检测

    • 以太网(有线网络)使用CSMA/CD(载波监听多路访问/碰撞检测)协议。这种协议允许网络设备在发送数据之前监听信道,如果检测到碰撞,就会停止发送并等待一段时间后重试。
    • 由于以太网的物理特性,碰撞检测相对容易实现,而且有线网络的误码率非常低。
  4. 可靠数据传输的实现

    • 在有线网络中,由于误码率低,通常不需要实现复杂的可靠数据传输机制,如确认帧和重传。
    • 然而,在无线网络中,由于信道的不稳定性,实现可靠数据传输是必要的,这通常通过确认帧和重传来完成。

总结来说,无线局域网需要接收方发回确认帧是因为无线信道的不稳定性导致的高误码率和无法进行有效的碰撞检测。而以太网由于其有线特性,可以实现碰撞检测,并且误码率低,因此不需要接收方发回确认帧。这种差异反映了两种网络技术在设计和实现上的不同考虑。


http://www.ppmy.cn/devtools/144425.html

相关文章

linux------vim命令

一、基本模式切换 普通模式&#xff08;Normal Mode&#xff09; 当你打开Vim时&#xff0c;默认进入普通模式。在这个模式下&#xff0c;可以使用各种命令来移动光标、删除文本、复制粘贴等操作。例如&#xff0c;使用h、j、k、l来移动光标。h是向左移动一个字符&#xff0c;j…

React 事件机制和原生 DOM 事件流有什么区别

发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【宝藏入口】。 React 的事件机制与原生 DOM 事件流在设计和实现上有一些显著的区别。了解这些区别有助于我们更好地理解 React 是如何管理事件的…

未来趋势系列 篇五:自主可控科技题材解析和股票梳理

文章目录 系列文章自主可控科技题材分析国产算力信创(信息技术应用创新)华为鸿蒙军工信息化半导体芯片卫星互联网工业软件股票梳理系列文章 未来趋势系列 篇一:AI题材解析和股票梳理 未来趋势系列 篇一(加更):AI医疗题材解析和股票梳理 未来趋势系列 篇二:HBM题材解析和…

本地maven项目打包部署到maven远程私库

目的&#xff1a;在自己的maven项目中&#xff0c;要把当前maven项目部署到maven私库&#xff0c;供其他人引入依赖使用。 首先要确保你当前能访问到你的私库&#xff0c;能拉私库的maven依赖即可。 maven部署命令&#xff1a; mvn deploy:deploy-file -Dmaven.test.skiptrue -…

Flink优化----数据倾斜

目录 判断是否存在数据倾斜 数据倾斜的解决 keyBy 后的聚合操作存在数据倾斜 为什么不能直接用二次聚合来处理 使用 LocalKeyBy 的思想 DataStream API 自定义实现的案例 keyBy 之前发生数据倾斜 keyBy 后的窗口聚合操作存在数据倾斜 实现思路 提交原始案例 提交两阶…

【原生js案例】ajax的简易封装实现后端数据交互

ajax是前端与后端数据库进行交互的最基础的工具&#xff0c;第三方的工具库比如jquery,axios都有对ajax进行第二次的封装&#xff0c;fecth是浏览器原生自带的功能&#xff0c;但是它与ajax还是有区别的&#xff0c;总结如下&#xff1a; ajax与fetch对比 实现效果 代码实现 …

深入解析PCIe地址空间与寄存器机制:从地址映射到TLP生成的完整流程

往期内容 本文章相关专栏往期内容&#xff0c;PCI/PCIe子系统专栏&#xff1a; 嵌入式系统的内存访问和总线通信机制解析、PCI/PCIe引入 深入解析非桥PCI设备的访问和配置方法 PCI桥设备的访问方法、软件角度讲解PCIe设备的硬件结构 深入解析PCIe设备事务层与配置过程 PCIe的三…

Sentinel 学习笔记3-责任链与工作流程

本文属于sentinel学习笔记系列。网上看到吴就业老师的专栏&#xff0c;原文地址如下&#xff1a; https://blog.csdn.net/baidu_28523317/category_10400605.html 上一篇梳理了概念与核心类&#xff1a;Sentinel 学习笔记2- 概念与核心类介绍-CSDN博客 补一个点&#xff1a;…