TCP协议------可靠性保证机制

本文深入探讨TCP协议的可靠性保证机制,包括确认应答、超时重传、流量控制、滑动窗口、快重传、拥塞控制、延迟应答和捎带应答等。这些机制确保了数据的正确传输、顺序到达、去重和高效传输,同时防止网络拥塞,提高了网络性能。
摘要由CSDN通过智能技术生成

        在这篇博客中介绍了连接管理机制,它是TCP协议保证可靠性的重要机制,除了该机制,还有许多实现可靠性得机制,本文中将一一进行介绍。

1. 确认应答(ACK)机制

        在TCP的协议报头中有两个字段:序列号和确认序列号。这两个字段就是来保证确认应答机制的。

        发送方A将要发送的多个数据段排好序发送给接收端B。比如说A要发送序列号为1~1000的数据段。B如果将这些数据全部正确接收了,就会给A发送一个1001的确认序列号,用于告诉A,它之前发送的1~1000已经被正确接收,下次从1001开始发送。如果B只接受到了1~500,此时就会给B发送501的确认序列号,A收到后会知道500~1000的报文丢失,就会重新发送500~1000的报文段给B。此时就保证了数据的可靠传输。

        因为TCP协议是全双工通信,双方都可以作为发送方和接收方,因此每一方都需要一个序列号和确认序列号来保证数据的可靠传输。

        设置序列号同时也可以保证发送的数据按序到达,如果多个数据段在发送过程中可能到达的先后顺序可能不同,因此可能会导致接受到的数据与发送时的顺序不一致,通过序列号可以保证数据按序到达,也能够保证数据的可靠性传输。

        如果接收端接收到重复的数据段后,也可以通过序列号来进行去重,保证可靠性。

        综上,序列号和确认序列号的作用有以下几点:

(1)保证确认应答机制;

(2)保证数据按序到达;

(3)保证去重机制。

2. 超时重传机制

        当主机A向主机B发送数据报后,一段时间内A没有收到B的确认信号,就会进行重传。造成重传的原因有两个:

(1)A向B发送的数据在传输过程中丢失,那么A再次重传数据时,就可以保证数据可靠送达;

(2)如果B接收到A的数据了,但B发给A的ACK确认信号在传输过程中丢包了,此时,A再次重传时,B就会接收到重复的数据,此时B就可以根据报文中的序列号进行去重,保证数据的可靠性传输。

        超时重传的时间如何设定呢?

        如果时间设置的太长,当数据报丢失时,就会影响重传的效率;如果时间设置的太短,当ACK包延迟时,就会重传大量的数据包。所以这个时间最好是能保证ACK一定能到达的最短时间。

        TCP协议通过动态计算这个超时重传的时间。

        在Linux中,超时重传的时间间隔是500ms的2^n倍(n = 0,1,...)。如果第一次发送数据报之后,500ms内没有收到ACK确认,则进行重传;然后在2*500ms内没有收到ACK确认,再次进行重传;再等4*500ms,还没收到确认,再次进行重传;...当重传的次数超过一定的上限后,TCP会认为此时的网络或对方的连接出现异常,会强制关闭连接。

        因此,在进行数据传输时,主机A在发送完数据报之后,会先设置一个闹钟,如果在闹钟没响之前ACK报达到,此时取消闹钟,进行后续的数据传输;如果闹钟超时了,ACK报还未到达,此时A就会重传数据,并重新设定闹钟为新的值。

3. 流量控制

        如果发送端发送数据的速度过快,导致接收端的接受缓冲区被占满了。此

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值