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

本文介绍了TCP的重传机制,包括超时重传、快速重传、SACK和D-SACK,以及滑动窗口原理和流量控制策略,如窗口关闭和糊涂窗口综合征。此外,还探讨了拥塞控制的慢启动、拥塞避免、拥塞发生和快速恢复算法。
摘要由CSDN通过智能技术生成

本篇文章诶学习 程序员乔戈里 的一篇微信推文的学习笔记,非原创,侵删。

TCP

TCP通过序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。

一、重传机制

​ 当TCP针对数据包丢失的情况,会用重传机制解决。

​ 以下四种是常见的重传机制。

1、 超时重传

​ 发送数据后,设定一个定时器,当超过指定时间后,没有收到对方的 ACK 确认应答报文后,就会重发该数据。

超时重传的原因:

  • 数据包丢失
  • 确认应答丢失

注:可以这样想,超时重传发生了,那么应该是一段时间内没收到ACK了,这时,丢弃的包一般是大量的;如果只是某个ACK丢了,大有后面的 D-SACK 来解决哦。

超时时间(RTO Retransmission Timeout)应该设置为多少呢?

​ 略大于RTT(Round-Trip Time 往返时延)

  • 太大的话,重发就很慢,丢了老半天才重发,没有效率,性能差
  • 太小的话,导致没有丢就重发,增加网络拥塞(负担),导致更多的超时,导致更多的重发。

在这里插入图片描述

2、 快速重传(Fast Retransmit)

​ 不以时间为驱动,以数据驱动重传。

​ 什么意思呢?

当发送端收到了三个相同的ACK,就说明之前的SEQ还没有收到,就会在定时器过期之前,重传丢失的SEQ。

注:快速重传发生了,一般是某一个包丢失了,导致连续收到的三个 ACK 都是一样的。

3、 SACK

​ SACK(selective ACknowledge 选择性确认) 。

​ 该方式需要在TCP头部 [选项] 字段里加一个 SACK 的东西。它可以将缓存的地图发给发送方。

​ 发送方收到后就可以知道哪些数据丢失,哪些需要重传。

注:如果要支持 SCAK,必须双方都支持。

​ 在Linux下,可以通过 net.ipv4.tcp_sack 参数打开这个功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值