可靠传输的实现机制1——停止等待协议SW(Stop and Wait)

目录

关于更好了解停止等待协议SW的三个情景假设

情景①——发送方发送的数据分组在传输过程中丢失

情景②——接收方发送的回应包在传输过程中丢失

情景③——关于回应包是否需要编号的解释


在开始这篇博客之前,大家来思考一下,什么是可靠传输呢?想要实现可靠传输需要解决哪些问题呢?

就好像你给你的同桌传纸条,最基本的问题,你要确保纸条会被同桌收到,两台主机之前的信息交流也是如此,要确保你发送的信息被对方收到。

那么在停止等待协议SW中,这一点是如何做到的呢?

我们先来初步了解一下SW的工作原理,基本过程如下图所示

以下图片均来自UP主——湖科大教书匠

视频链接:【计算机网络微课堂(有字幕无背景音乐版)】 https://www.bilibili.com/video/BV1c4411d7jb?p=25&share_source=copy_web&vd_source=97b6ca34a029129aad2f5e8177ba05f1

SW基本原理:

首先,发送方向接收方发送数据分组,接收方收到发送方发来的数据分组后,对其进行差错检测,若没有误码,则接受该数据分组,并给发送方发送确认分组,简称为ACK,发送方收到对应数据分组的ACK后,才能继续发送数据分组。

如果该数据分组在发送过程中产生了误码,接收方发现误码后,则丢弃该分组,并对发送方发送否认分组,简称为NAK,发送方在收到对应数组分组的NAK后,就会进行重传

由于SW的工作原理,这就导致SW有以下两个特点——

  1. 发送方在发送第一个数据分组后,必须收到对应的回应包(ACK或NAK),才能够继续发送数据分组

  2. 发送方在发送了某一数据分组时,并不能直接将该数据分组从缓存中删除,只有在收到对应数据分组的ACK后,才会将其从缓存中删除

了解了SW的工作原理与特点,我们来做几个情景假设,来更好的了解SW

关于更好了解停止等待协议SW的三个情景假设

情景①——发送方发送的数据分组在传输过程中丢失

情景描述

在这种情景下,接收方收不到该数据分组,也就无法回应对应的ACK或NAK,由于SW的等待机制,发送方会一直处于等待回应分组的状态,从而会导致发送方一直不会发送下一个数据分组,从而陷入死循环

想要解决该问题,我们就需要设定一个计时器,比如在发送方发送完一个数据分组后,启动一个计时器,如果到了设定的最长等待时间,发送方还是没有收到对应的回应包的话,就会重发该分组,这就是超时重传,一般设定的最长等待时间略大于从发送方到接收方的平均往返时间

情景②——接收方发送的回应包在传输过程中丢失

情景描述

发送方给接收方发送了某一分组,接收方的回应分组在传输过程中丢失了,发送方重传,接收方收到了,并且发送方收到了对应的回应包。

问题来了,接收方怎么判断出这两个分组是重复的呢?

相信很多同学都想到了解决办法,那就是编号

为了避免分组重复传输这种错误,必须给每个分组带上序号

问题来了,请大家思考一下,我们需要几个比特位来实现这个编号呢?

其实只需要一个比特位就够了,由于SW的停止等待机制导致发送方一次只能发送一个分组,所以只要前一个分组和后一个分组的序号不一样就可以了,所以只用一个比特位来编号就可以了

比如第一个分组序号是0,第二个是1,第三个是0,这样接收方就能够判断收到的数据分组是否是重复的

情景③——关于回应包是否需要编号的解释

有些反应比较快的同学会想到,你这发送的数据分组需要编号,对应的回应包不需要编号吗?

确实是需要的,接下来我们来看这样一个情景,有点绕,需要大家稍微思考一下,大家看懂了下面的文字和图片就能够理解为什么回应包需要编号了

情景描述——

  1. 发送方发送数据分组DATA0,接收方接收到了并发送了回应包ACK0
  2. 但是由于网络堵塞导致ACK0迟到了,ACK0到达的时间超过了计时器设定的最长等待时间
  3. 发送方先重传了DATA0,在收到ACK0后发送方发送了DATA1
  4. 接收方接收到重传的DATA0并丢弃,同时对重传的DATA0也发送了回应包ACK0
  5. 发送方收到了重传的DATA0的ACK0

问题来了,发送方怎么判断这个ACK0是重传数据分组DATA0的回应包还是DATA1的回应包呢?

我们来进一步思考一下,如果不对回应包进行编号的话,接下来可能会发生什么情况呢?

情景拓展:

  1. 如果不对其进行编号的话,发送方就会认为这个ACK0是DATA1的回应包,并传送下一个数据分组DATA2
  2. 如果DATA2在传输过程中丢失了,结果发送方收到了真正的DATA1的回应包
  3. 发送方就会认为DATA2已经被接收方接收到了,并发送DATA3
  4. 实际上接收方并没有接收到DATA2,这样就少了一个数据,导致了数据的不完整

这也就是回应包也需要编号的原因,同样,只需要一个比特位就够了,原因同上所述

以上就是对停止等待协议SW的一些思考和解释

快一个月没好好写一篇博客了,今天也算是弥补了一些我的愧疚感

今天的学习记录到此结束啦,咱们下篇文章见,ByeBye!

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要实现b'sw1\xe4\xb8\x8esw2\xe4\xb9\x8b\xe9\x97\xb4\xe7\x9a\x84\xe6\x8e\xa5\xe5\x8f\xa3\xe5\xae\x9e\xe7\x8e\xb0\xe9\x93\xbe\xe8\xb7\xaf聚合,需要使用链路聚合技术,即将两个物理接口捆绑成一个逻辑接口,从而提高带宽和可靠性。这需要在两个交换机上都进行配置,包括选择合适的聚合方式、协议以及参数等。 ### 回答2: 在网络拓扑结构中,当两个交换机(sw1、sw2)之间的链路需要提高带宽和可靠性时,可以采用链路聚合技术来实现。链路聚合是将多个物理链路绑定为一个虚拟链路,通过合并多条物理链路的带宽来增加链路带宽或提高链路的可靠性。 在实现链路聚合时,需要用到Link Aggregation Control Protocol(LACP)协议,该协议是一种用于合并多个物理链路的通用协议。在LACP协议中,每个物理链路有一个端口ID,通过端口ID与对端交换机的端口ID进行匹配来实现链路聚合。 在sw1和sw2之间实现链路聚合时,需要将两个交换机的端口配置成聚合组,并使用相同的聚合组ID,以便进行链路聚合。交换机之间的链路聚合可以是静态链路聚合或动态链路聚合,静态链路聚合是手动配置的,而动态链路聚合是由LACP协议自动协商和配置的。 交换机之间的链路聚合可以实现负载均衡和故障转移,当其中一个物理链路出现故障时,数据流量会自动切换到其他物理链路,保证网络的连通性;当所有物理链路都正常时,数据流量会通过多个物理链路进行负载均衡,提高数据传输速度和带宽利用率。 总之,链路聚合技术可以提高网络链路的可靠性和带宽利用率,适用于需要大带宽和高可靠性的数据中心和企业网络。 ### 回答3: SW1和SW2之间的接口实现链路聚合可以提高网络的带宽和链路可靠性,实现更高效的网络通信。链路聚合可以将多个物理链路合成单个逻辑链路,提供更高带宽和更好的冗余保护。 链路聚合有两种模式:静态链路聚合和动态链路聚合。静态链路聚合需要在交换机上手动配置,而动态链路聚合则通过协议自动实现。 当SW1和SW2之间的多个物理链路合并为单个逻辑链路时,需要确保这些链路的速度、半双工或全双工模式、带宽等参数相同,以避免数据传输时发生混乱。 可以使用以下步骤实现SW1和SW2之间的接口链路聚合: 1. 在SW1和SW2之间选择多个适配的物理接口,确保它们被连接并已启用。 2. 配置交换机上的链路聚合协议,使其支持链路聚合功能。在Cisco交换机上,可以使用EtherChannel协议来实现链路聚合。 3. 将这些物理接口分配给同一个逻辑接口。对于静态链路聚合,需要手动分配;而对于动态链路聚合,则可以使用协议完成分配。 4. 配置链路聚合组的参数,如模式、负载分布等,以确保链路聚合的可靠性和效率。 5. 测试链路聚合的配置,以确保数据能够顺畅地通过链路聚合。 总之,SW1与SW2之间的链路聚合可以提高网络的性能和可靠性,实现更高效的数据传输和冗余保护,从而优化网络的效率和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_才疏学浅_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值