TCP细节探究:TCP超时/丢失重传

三:TCP超时/丢失重传

Nagle算法要求一条TCP连接上最多只有一个未被确认的报文,发送方发送一个TCP报文,接收方确认该报文,发送方再发送下一个报文,若发送方在一定时间内未收到确认,则再重发报文。相对来说Nagle算法相对简单且不容易出错,但却降低了网络的吞吐量,也增加了网络流量。

在实际的TCP实现中,接收方往往一次确认一批的TCP报文,且确认报文与接收方发往发送方的报文一同回复,以减少网络流量,从另一方面说也就允许发送方在前一报文未确认时,可以继续发送下一个报文,虽然这种实现提高了吞吐量,但却带来了另一个问题,即发送文如何确认报文被接收方正确接收?

TCP有两种方式来保证报文被正确接收:

1:发送端在一定时期内未收到报文确认,报文重发

2:接收端检测到某一报文丢失,重复发送ACK报文(3个以上),以促使发送端重发丢失报文。比如接收端检测到收到一乱序的报文,会向发送端发送一ACK报文来确认前一个正确接收的报文,接下来接收端收到的每一个报文都会将其缓存且重复回复ACK报文来正确序号的最后一个报文,直到发送端重发丢失报文,然后将缓存中的报文一并确认

这就是快速重传机制。

 

通常,发送端会重传接收方未收到的报文,但不会重传已经被接收方收到但并未确认的包,然后接收方将收到的报文排序后进行一并确认,

如上图,由于某种原因,发送端发给接收端的数据包序号1025,丢失了序号为1的包(250839

此时接收端对序号1进行了确认,发送端重发了序号1,此时接收端已经有了2484个字节,序号1中有1024个字节,序号1025中的1460个字节,接收端这时回复一个确认2485AC包。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值