TCP 协议详解(三)-- TCP滑动窗口技术

前言

TCP(Transmisson Control Protocol)又叫传输控制协议作为传输层最重要的协议,对于信息的可靠传输有着重要的意义,针对这一协议的攻击也数不胜数,这里就对这一协议以及相关内容进行详细的总结,将从以下几个方面进行介绍。
本文以韩立刚老师的《计算机网络》网课为基础,感兴趣的话可以私信我要资料

1. TCP滑动窗口技术实现可靠传输

在开始讲滑动窗口技术的具体实现之前,大家有一点要搞明白,发动窗口不等于发送缓存、接受窗口也不等于接收缓存,发送窗口只是发送缓存的一部分,接受窗口也只是接收缓存的一部分,具体可以参考下图:
在这里插入图片描述
具体可以看这一篇,这个博主讲的很好。
接下来将具体的过程:
在这里插入图片描述
如图,发送方在发送数据时,一直维持一个窗口,注意:这个窗口的大小是动态变化的
在这里插入图片描述
如图,A向B发送了6个字节的数据,B向A发送了确认包,确认号为7,A收到确认包以后,1-6就要从缓存中清除,窗口要向前滑动,如图:
在这里插入图片描述
发送方已经收到确认的包从缓存中删除,接收方的数据也被应用数据读取并从缓存中删除,在整个过程中,对接收方B来说,如果因为应用程序读取速度慢等原因导致接收缓存中已收到但是未利用的数据越来越多,那么窗口的大小就会减小,减小的信息也会随TCP包传到A,A的发送窗口也会减小,如果减小到0,那么就停止发送。
在这里插入图片描述
如图是前二十个数据已经全部接收并从缓存中删除后的情形,窗口继续向前滑动。
以上是正常接收以及确认的情况
那么当中间出现丢包时怎么办呢?
这时就要用到SACK(选择性确认)了,如图:
在这里插入图片描述
接收方通过选择确认告诉发送方哪些数据丢失,那些数据已经收到等,选择确认这种可靠传输方式也称为快速选择性重传。
具体的实现方式是通过在确认TCP报文的选项的SACK中加上边界,如图:
在这里插入图片描述
这样就可以标识已经确认收到的是哪一段数据,从而发送丢失的数据。

2. 超时重传时间的选择

这里只要理解了下列的公式即可:
在这里插入图片描述
RTT是往返时间,因为网络情况无法预知,每个数据包的RTT也不可能一样,如果设定的重传时间太短,会导致重传过于频繁,浪费计算机和网络资源,如果太长,那么又会降低传送速率。因此需要这一公式来确定重传时间。
另一方面,网络是在动态变化的,重传时间需要不断更新,那么就要在旧的RTT的基础上,加权上新的RTT样本,这样才能较为准确的反映现在网络的情况,选择合适的RTT。
还有,超时重传时间应该略大于这个理论时间,仅仅等于的话,还是会导致重传过于频繁,大的多的话还是会降低传送效率,因此要略大于

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值