TCP三次握手、重传

本文详细讲解了TCP协议的三次握手过程,并通过实例说明了数据交互的细节,包括服务器如何发送数据包、客户端如何确认序列号以及如何处理丢失的数据包。在数据传输中,如果出现丢包,服务器会根据客户端的确认序列号重新发送丢失的数据。此外,还讨论了中间数据包丢失时客户端的应对策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三次握手
1、客户端向服务器发送SYN报文,SYN携带随机生成的seq序列号,假如这里生成的序列号为a。
2、服务器要给客户机回复ACK确认号和自身产生的序列号,假设这里为b;回复客户端ACK=a+1;
3、客户端收到客户端的ACK,确认无误后发送 确认消息ACK=b+1,序列号seq=a+1

数据交互过程
TCP三次握手之后就开始交互数据,服务器向客户端发送数据包。这里假设数据包大小为100:
①、服务器向客户端连续发送两个数据包,第一个数据包的序列号seq=1 ,第二个数据包的序列号为seq=1+100
②、客户端向接收后,确认序列号是否正确。向服务器回复确认消息(回复最后一个数据包)ack=1+100+1
③、服务器收到后客户端发送的确认号和自己发送的序列号对应,继续向客户端发送连续的数据包,数据包的序列号seq=1+100+1
情况一
1、服务器在向客户端发送数据包的过程中,将最后一个数据包丢失。当客户端收到后,向服务器发送的收到的最后一个报文的序列号+1。
2、服务器收到后发现客户端的发送序列号与自己发送数据包的序列号对应不对,认为是中间传输的过程中丢包。将从新发送丢失的数据包。
情况二:
服务器给客户端发送三个数据包,传输过程中中间的数据包丢失。这时候客户端呢?
1、服务器发送的三个数据包,中间的数据包丢失。对客户机来说接受后将检测序列号是否正确。
2、客户机在检测服务器发送的序列号时,发现收到的两个序列号连接不起来,客户机只会向服务器发送第一个接受的数据包。
3、服务器接收后,对比客户端发送过来的序列号,然后重新发送数据包。

这个UP主讲的挺好的,可以看看嘞【TCP协议三次握手与四次挥手-哔哩哔哩】 https://b23.tv/yl6XoZr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值