TCP 如何保证有效性

本文详细介绍了TCP/IP通信中的关键机制,包括数据包校验的步骤,确保数据传输的准确性;确认应答与序列号如何协同工作,实现可靠传输并防止数据丢失;超时重传策略,保障数据包在传输延迟后的重新发送;以及流量控制机制,通过滑动窗口调整发送速率,避免接收方缓冲区溢出。这些机制确保了TCP通信的高效与稳定。
摘要由CSDN通过智能技术生成

一. 数据包校验:
在这里插入图片描述
1、首先将检验和置零;
2、然后将TCP伪首部部分,TCP首部部分,数据部分都划分成16位的一个个16进制数
3、将这些数逐个相加,记得溢出的部分加到最低位上,这是循环加法:
0xc0a8+ 0x0166+……+0x0402=0x9b49
4、最后将得到的结果取反,则可以得到检验和位0x64b6

发送方:原码相加 ,并将高位叠加到低位,取反 ,得到反码求和结果,放入校验和
接收方:将所有原码 相加,高位叠加, 如全为1,则正确

发送的数据包的二进制相加然后取反,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段,这时 TCP 发送数据端超时后会重发数据;

二. 确认应答+序列号

序列号:TCP传输时将每个字节的数据都进行了编号,这就是序列号。

确认应答:TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答,也就是发送ACK报文。这个ACK报文当中带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。

序列号的作用不仅仅是应答的作用,有了序列号能够将接收到的数据根据序列号排序,并且去掉重复序列号的数据。

应答机制:当 TCP 收到发自 TCP 连接另一端的数据,它将发送一个确认(累积确认:对所有按序接收的数据的确认)。这个确认不是立即发送,通常将推迟几分之一秒

TCP给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。

三. 超时重传
当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。

四.流量控制

TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP使用的流量控制协议是可变大小的滑动窗口协议。

接收方有即时窗口(滑动窗口),随ACK报文发送

参考文章:
https://www.cnblogs.com/xiaokang01/p/10033267.html#_label0_3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值