TCP重传 滑动窗口 流量控制 拥塞控制

本文详细探讨了TCP的重传机制,包括超时重传、快速重传和SACK方法,以及滑动窗口、流量控制的概念。解释了如何通过调整超时重传时间和使用快速重传来应对数据包丢失。同时,介绍了滑动窗口的原理,窗口大小的确定,以及发送和接收窗口的关系。在流量控制方面,讨论了如何避免糊涂窗口综合征和处理窗口关闭的潜在风险。最后,文章还涉及了拥塞控制,包括拥塞窗口、慢启动、拥塞避免和快速恢复算法。
摘要由CSDN通过智能技术生成

TCP重传 滑动窗口 流量控制 拥塞控制

学习资源 小林coding 2022.4.7

img

重传机制

TCP实现可靠传输的方式之一 通过序列号与确认应答

TCP 当发送端的数据到达接受主机时 接收端主机回返回一个确认应答消息

表示已收到消息

TCP针对数据包丢失的情况 会使用重传机制解决

常见的重传机制

  • 超时重传
  • 快速重传
  • SACK
  • D-SACK
超时重传

在发送数据时 设定一个定时器 超过时间没有收到对方的ACK确认 就会重发该数据

  • 数据包丢失
  • 确认应答丢失
超时时间应该设置为多少

RTT(往返时间)

RTT

RTT是数据从网络一段传送到另一端所需的时间 也就是包的往返时间

超时重传时间是以RTO(超时重传时间)表示超时时间较长与较短

  • RTO较大 重发慢 没有效率 性能差
  • RTO较小 没有丢就重发 重发快 增加网络拥塞 导致更多超市
  • RTO的值应略大于报文往返RTT的值

RTO的值是一个动态变化的值

Linux如何计算RTO

  • 需要TCP通过采样RTT的时间 然后进行加权平均 算出平滑RTT值 值是不断变化的

  • 采样RTT的波动范围

    超时重传策略:超时间隔加倍

    每当遇到一次超时重传的时候 都会下一次超时时间间隔设为先前值的两倍

    两次超时 就说明网络环境差 不适宜频繁发送

快速重传

TCP还有快速重传机制 不以时间为驱动 以数据驱动重传

快速重传机制

  • Seq2没收到 ACK回2
  • 发送端收到了三个ACK=2的确认 直到Seq2还没有收到 就会在定时器国企之前 重传丢失的Seq2
  • 问题:重传之前的一个 还是重传所有的问题
SACK方法

SACK Selective Acknowledgement 选择性确认

需要在TCP头部选项中加一个SACK字段 将缓存的地图发送给发送方

只重传丢失的数据

要支持SACK 在linux下

net.ipv4.tcp_sack

linux2.4之后默认打开

Duplicate SACK

使用SACK告诉发送方 有哪些数据被重复接受了

  • ACK丢包
    • 发现收到数据是重复的 返回SACK
  • 网络延时
    • SACK 与 ACK对比
    • SACK > ACK 说明网络延迟 收到了重复的包

D-SACK好处

  • 让发送方知道 是发出去的包丢了 还是接收方回应的ACK包丢
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值