TCP利用以字节为单位的滑动窗口来实现可靠传输

TCP利用滑动窗口机制实现可靠传输

在这里插入图片描述

  • TCP利用滑动窗口实现可靠传输,可以借助上图进行描述:
  • 因为TCP时全双工通信,所以连接双方都各自维护一个发送窗口接收窗口,本文为描述方便,只讨论一个方向的传输,因为另一个方向也是同样的情况
  • 为讨论方便,我们假设发送窗口等于TCP报文段中的接收窗口的大小,也即不考虑拥塞窗口的影响,而实际的发送窗口的大小是min{拥塞窗口,对端接收窗口}
  • TCP是以基于字节为单位的滑动窗口来实现可靠传输的
  • 那什么是可靠传输呢?
    • 可靠传输就是从A端发送到B端的数据,在协议和逻辑层面不会遗失和乱序等,例如我A端发送0~1000号数据,B端接收到并交付给应用层的数据也必须是 0~1000号数据
滑动窗口的滑动过程是什么样的呢?
  • 发送方根据接收方在TCP报文段中传达的接收窗口的大小,设置自己的发送窗口大小
  • 发送方仅能发送发送窗口内的数据,发送窗口之外的数据不允许发送;
  • 发送窗口内的已发送数据在接收到ACK响应确认之后,就可以通过移动发送窗口将其移出,并将其从缓冲区中删除;发送方也动态的调整自己的发送窗口大小
  • 接收方只能接收接收窗口内的数据,接收窗口之外的数据不能被接收;
  • 接收窗口内的已接收的数据要进行ACK确认回复;
  • TCP接收方只会对按序接收到的数据进行确认,在进行确认时,一般对最高序号进行确认,也就是所谓的累计确认
  • 对于未按序接收到数据,接收方会将数据存放于缓冲区,如上图的32、33号数据,等到发送方重传并顺利接收后,再进行累计确认;
  • 对于已经确认回复过的已接收数据,TCP将数据交付给应用进程,然后向前移动接收窗口

注意:

  • TCP要求接收方必须有累计确认捎带确认机制,这样可以减小传输开销。接收方可以在合适的时候发送确认,也可以在自己有数据要发送的时候把确认信息捎带上
  • 同一时刻,发送窗口和接收窗口一定一样大吗
    • 不一定,因为发送窗口还和拥塞窗口有关,另外就算忽略网络拥塞的影响,因为网络传输需要时间,也就会产生时间滞后,且该时间不确定,所以并不完全同步

如果本文对您有用,可以点赞、收藏本文哦,下次用到时就好找多了
如果能关注作者就太好了,作者将持续学习,持续输出,持续分享!谢谢鼓励!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

咖啡与乌龙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值