计算机网络学习笔记 ---- TCP重传机制、滑动窗口、流量控制、拥塞控制

1 重传机制

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

常见的重传机制:

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

1.1 超时重传

TCP会在数据包丢失确认应答丢失两种情况发生超时重传:

RTT(Round-Trip Time 往返时延):数据发送时刻到接收到确认的时刻的差值,也就是包的往返时间

超时重传时间是以 RTO (Retransmission Timeout 超时重传时间)表示。
在这里插入图片描述

当超时时间 RTO 较大时,重发就慢,丢了老半天才重发,没有效率,性能差;
当超时时间 RTO 较小时,会导致可能并没有丢就重发,于是重发的就快,会增加网络拥塞,导致更多的超时,更多的超时导致更多的重发。

超时重传时间 RTO 的值应该略大于报文往返 RTT 的值。
在这里插入图片描述
每当遇到一次超时重传的时候,都会将下一次超时时间间隔设为先前值的两倍。两次超时,就说明网络环境差,不宜频繁反复发送。

1.2 快速重传

不以时间为驱动,而是以数据驱动重传

在这里插入图片描述
在上图,发送方发出了 1,2,3,4,5 份数据:

· 第一份 Seq1 先送到了,于是就 Ack 回 2;
· 结果 Seq2 因为某些原因没收到,Seq3 到达了,于是还是 Ack 回 2;
· 后面的 Seq4 和 Seq5 都到了,但还是 Ack 回 2,因为 Seq2 还是没有收到;
· 发送端收到了三个 Ack = 2 的确认,知道了 Seq2 还没有收到,就会在定时器过期之前,重传丢失的 Seq2。
· 最后,收到了 Seq2,此时因为 Seq3,Seq4,Seq5 都收到了,于是 Ack 回 6 。

快速重传的工作方式是当收到三个相同的 ACK 报文时,会在定时器过期之前,重传丢失的报文段。

但会存在 重传一个or所有 的问题。

1.3 SACK

SACK( Selective Acknowledgment), 选择性确认。

这种方式需要在 TCP 头部「选项」字段里加一个 SACK 的东西,
它可以将已收到的数据的信息发送给「发送方」,这样发送方就可以知道哪些数据收到了,哪些数据没收到,
知道了这些信息,就可以只重传丢失的数据。

如果要支持 SACK,必须双方都要支持。在 Linux 下,可以通过 net.ipv4.tcp_sack 参数打开这个功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Swing_zzZ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值