TCP四次握手(关闭连接)

TCP连接的关闭需要经过四次挥手过程。客户端或服务器可以先发起关闭请求,发送FIN标志,等待对方确认。在全双工的TCP连接中,每个方向都需要独立关闭。挥手包括客户端的FIN,服务器的ACK,服务器的FIN,以及客户端的ACK确认。挥手过程中涉及多种状态,如FIN_WAIT_1, FIN_WAIT_2, TIME_WAIT等,确保连接彻底关闭。" 119611297,11093133,Apache APISIX在趣链科技BaaS平台的应用实践,"['Apache APISIX', '网关', '后端', '区块链', '服务治理']

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


客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

第一次挥手:
TCP客户端发送一个FIN,用来关闭客户端到服务器的数据传输。
第二次挥手:
服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。
第三次挥手:
服务器关闭客户端的连接,发送一个FIN给客户端。
第四次挥手:
客户端发回ACK报文确认,并将确认序号设置为收到序号加1。

几种状态:
FIN_WAIT_1:即主动方发送FIN包后,进入的状态,等待对方返回ACK报文。
FIN_WAIT_2:即收到对方的ACK包了,但是对方还有数据包发过来,所以要等下关闭连接。
TIME_WAIT:表示收到对方的FIN包后,并发出了ACK报文后,在等待2MSL切回CLOSEED可用状态期间的状态。
CLOSING:这个状态比较特殊,比较少见,即在发送FIN报文后,没有收到对方的ACK包,却先收到对方的FIN包,最典型的例子就是双方同时在关闭FIN报文。
CLOSE_WAIT:表示等待关闭。即如果你没有数据需要发送,那就是要关闭此连接,即发送FIN报文。
LAST_ACK:被动方发送FIN报文后,最后等待ACK报文。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值