【网络】TCP的三次握手,四次挥手

本文详细解析了TCP协议中建立连接的三次握手过程和终止连接的四次挥手过程,解释了为何需要三次握手和四次挥手的原因,确保数据传输的可靠性和避免资源浪费。同时阐述了在握手和挥手过程中数据包的作用,帮助理解TCP连接的生命周期。

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

TCP的三次握手

过程

在这里插入图片描述

  

        1.首先Client端发送链接请求报文

        2.Server端接收后恢复ACK(Client发送来的报文的Seq+1,用来确定Server端正确接收到了Client端的Seq)报文,并为这次链接分配资源

        3.Client端接收到了ACK(Server发送来的报文的Seq+1,用来确定Client端正确接收到了Client端的Seq)报文后也向Server端发送ACK报文,并分配资源,这样TCP链接就建立了

Q:为什么要进行三次握手

        A:第一次握手

                Client端:什么都不能确认

                Server端:确认了对方发送正常

        第二次握手

                Client端:确认了自己发送正常(通过对比ACK是不是等于自己发送的Seq+1),接受正常,对方发送,接受正常

                Server端:确认了自己发送正常,接受正常,对方发送正常

        第三次握手

                Client端:确认了自己发送正常,接收正常,对方发送正常,对方接受正常

                Server端:确认了自己发送正常,接收正常,对方发送正常,接收正常(通过比较对方发送的ACK是不是等于自己上一次发送的Seq+1)

Q:为什么要发送特定的数据包

        三次握手的另外一个目的就是确定双方都支持TCP,告知对方用TCP传输

TCP的四次挥手

过程

在这里插入图片描述

 

        1.Client端发送FIN报文,表示自己数据传输完毕,可以断开链接

        2.Server端接收到FIN报文,发送ACK报文表示自己知道Client可以断开,并发送自己要发送的数据

        3.当Server端发送完自己要发送的所有数据,发送FIN报文,告诉Client端自己所有数据都已经发送完,可以断开链接

         4.Client接收到Server的FIN报文,知道Server也可以断开链接,向Server端发送ACK报文,表示自己收到了Server的关闭请求,然后双方关闭链接

Q:为什么要四次挥手

        根本原因是,一方发送FIN只能代表自己发送完了数据,但是对方不一定发送完了数据,还允许对方把没有发完的数据发送过来

        举个例子,就相当于Client和Server端打电话,Client说完自己要说的话,告诉Server端说我没什么要说的了,Server端回答我知道了,但是Server端还有没有说完的话,这时候Client不能要求Server按照自己的节奏结束通过,应该等待Server说完自己要说的话,最后Server说,我的话也说完了,A说好的,这样通话才算结束

参考文章

我终于搞懂了TCP的三次握手和四次挥手(图片案例超详解)_辰兮要努力-优快云博客_三次握手和四次挥手 简明理解三次握手和四次挥手_紫晓暮雾的博客-优快云博客_三次挥手

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值