TCP协议的三次握手与四次握手

本文详细介绍了TCP协议中连接建立的三次握手过程与连接断开的四次握手过程。三次握手确保了双方都能正常收发数据,而四次握手则确保了连接的正确关闭。

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

    之前的项目里用到了TCP进行网络通讯,这里把TCP的建立连接与断开的机制总结一下。

    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,位于IP层之上,应用层之下的中间层。http协议同样是基于TCP协议进行的实现。


    建立连接——三次握手

    1)客户端发送带有SYN标志的报文到服务器,申请建立连接。

    2)服务器接收到SYN标志报文后,向客户端回复一个带ACK标志和SYN标志的报文。其中ACK标志表示同意建立连接,SYN表示再次询问客户端是否准备建立连接。(由于网络通讯并不一定非常稳定,可能会有较长时间的延迟,服务器回复的SYN报文可以认为是服务器确定客户端是否还在等待建立连接的作用)

    3)最后客户端回复一个带ACK标志的TCP报文,表示客户端仍在等待建立连接,并没有因为超时等原因而关闭,服务端接收到确认报文,即开启一次连接。


    断开连接——四次握手

    1)A发送带FIN标志的报文给B,表示申请关闭连接。此时发起者A进入FIN-WAIT-1状态。

    2)B接收到FIN报文后,首先会回复一个ACK报文,A在接收到ACK后会关闭向A发送数据的连接,但还会接收B发送的数据。此时A进入FIN-WAIT-2状态,TCP是单向关闭的。

    3)当B发送完关闭之前需要发送的其他数据之后,最后会向A发送一个FIN标志的报文,表示B也准备进行关闭。此时B的状态为LAST-ACK,等待A进行确认。

    4)A收到FIN后,向B回复ACK,A进入TIME-WAIT状态。等待2MSL时间后,A关闭,进入CLOSE状态。


    MSL:Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。

 这里2MSL及等待2倍的报文最大生存时间,等待2MSL时间是怕第4步中的ACK报文B没有收到,而如果B没有收到最后的ACK报文,则会重发第3步中的FIN报文,A在再次接收到FIN报文后可以再回复一次ACK报文。TIME_WAIT状态时两端的端口不能使用,要等到2MSL时间结束才可继续使用。


 参考文章:这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值