当前位置:
首页>
娱乐>
明星 > 【HBZ分享】TCP连接完成后又是如何保证数据的可靠性传输
【HBZ分享】TCP连接完成后又是如何保证数据的可靠性传输
时间:2025/7/9 19:57:54来源:https://blog.csdn.net/a645293829/article/details/140312012 浏览次数:0次
前提
- 发送发发送数据时,需要给出一个seq编号。
- 第一个数据包的seq编号是一个随机数, 从第二个开始,seq编号就是【第一次的seq+数据包大小】, 即接收方响应过来的期待数据包编号
ACK机制
- 接收方收到数据后,要给发送方回应一个ACK确认
- 回应的ACK需包含两部分,一部分: 期待收到下一个数据包的编号。 另一部分: 当前接收方的接收窗口剩余的容量
- 当接收方长指定时间内没收到ACK,就会重新发送。
流量控制(属于端对端控制,不算过程中发生的事情)
- 当接收方ACK发送方时,同时会返回一个win=xxx的报文,该win就表示通知发送方,我的缓冲区还能接受多大的数据
- 发送方接收到收到win后,下一次发送数据就不会超过win = xxx这个值,这样就保证了服务端不会因为接收超量的数据而丢包
- 流量控制就是控制发送方不要发送太快,可以让接收方能够及时处理
- 每次数据传递给出ACK时都会携带win。

拥塞控制
- 自适应算法,根据网络环境来发送数据
- 慢启动:
(1). 发送端会以一个较小的数据量进行试探性发送,每接收到一个,窗口值就会翻倍
(2). 如果不丢包,就会加速发送,如果丢包就是降低速率发送
快速重传
- 快速重传: 当发送方在指定时间内每收到ACK回应,就会认为发送失败了,此时会立即重新发送
- 拥塞避免: 当3次收到同样的ACK回应,即回应的ack值都一样3次,就会认为这个包发送失败了,此时会重新发送接收端期待的那个数据
- 缺点: 只会知道某次的数据发送失败了,但发送端并不知道之后的包是否要重发,如下图,发送发仅通过3次相同ACK能判定出第二次的发送失败,但第三第四次是否成功,发送方其实并不知道,所以发送方就不清楚是否要重发第三和第四次的数据包。

超时重传
- 当发送端在超时时间内没有收到ACK,则会认为失败,会发起重传
- 超时重传时间就是RTO, 一般大于RTT(往返时间)
关键字:【HBZ分享】TCP连接完成后又是如何保证数据的可靠性传输
版权声明:
本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。
我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com
责任编辑: