计算机网络 (三) TCP的滑动窗口

RTT和RTO

  1. RTT : 发送一个数据包到收到对应的ACK所花费的时间
  2. RTO : 重传时间间隔

TCP的滑动窗口

窗口:窗口大小指的是无需等待确认应答就可以继续发送数据的最大值. 因为这个窗口不断向后滑动, 所以叫做滑动窗口. 
	 操作系统内核为了维护这个滑动窗口, 需要开辟发送缓冲区来记录当前还有哪些数据没有应答 
	 只有ACK确认应答过的数据, 才能从缓冲区删掉. 

TCP使用滑动窗口做流量控制和乱序重排

  1. 保证TCP的可靠性
  2. 保证TCP的流量控制特性

图片来源:https://blog.csdn.net/sinat_36629696/article/details/80740678

窗口大小指的是无需等待确认应答就可以继续发送数据的最大值.
上图的窗口大小就是4000个字节 (四个段).

发送前四个段的时候, 不需要等待任何ACK, 直接发送
收到第一个ACK确认应答后, 窗口向后移动, 继续发送第五六七八段的数据…

因为这个窗口不断向后滑动, 所以叫做滑动窗口.
操作系统内核为了维护这个滑动窗口, 需要开辟发送缓冲区来记录当前还有哪些数据没有应答
只有ACK确认应答过的数据, 才能从缓冲区删掉.

原文出处链接

出现丢包如何应答?

  1. 接收方收到数据包,但回复的ack包丢失
    在这里插入图片描述
    在滑动窗口有空闲位置的时候,没有接收到Ack确认包,继续发送,直至滑动窗口允许发送的数据包发送完毕,也未收到ack确认包,则执行重传。

    重传的时候,按照发送方接收到的Ack确认包,发送方确认接收方没有接收到的数据包,按照序号将数据包进行重传。

  2. 数据包丢失
    在这里插入图片描述

当某一段报文丢失之后, 发送端会一直收到 1001 这样的ACK, 就像是在提醒发送端 “我想要的是 1001”
如果发送端主机连续三次收到了同样一个 “1001” 这样的应答, 就会将对应的数据 1001 - 2000 重新发送
这个时候接收端收到了 1001 之后, 再次返回的ACK就是7001了
因为2001 - 7000接收端其实之前就已经收到了, 被放到了接收端操作系统内核的接收缓冲区中.

这种机制被称为 “高速重发控制” ( 也叫 “快重传” )

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值