4次挥手

在这里插入图片描述

### TCP 四挥手断开连接过程 #### 客户端发起终止请求 当应用层决定关闭一个已经建立的TCP连接时,客户端会发送第一个FIN(Finish)报文给服务端来表示数据传输完毕并希望关闭连接。此时,该FIN报文中除了标志位外其他部分为空[^1]。 #### 服务端接收并回应确认消息 接收到上述来自客户的FIN之后的服务端将返回一个ACK作为响应,其中acknowledgment number设置为客户发出fin序列号加一的位置;这表明它已成功收到了对方发来的结束信号,并同意开始进入半关闭状态等待进一步指示[^2]。 #### 服务端完成剩余的数据传送 如果在此之前还有未被传递到目标主机上的信息,则现在可以继续向客户机发送这些遗留下来的数据直到全部送达为止,在此期间可能会有多个带有payload的有效载荷段依抵达目的地。一旦所有的待传资料都已经被安全交付出去以后,服务器也会主动提出自己的终止申请——也就是第二个FIN包[^3]。 #### 客户端最终确认 对于由服务方提出的这一轮新的结束提议,原先充当发起者的那一侧(即最初想要切断联系的一边)应当给予肯定答复—通过回送另一个ACK回去告知其认可此操作的结果。自此之后经过一段时间延迟(TIME_WAIT),整个双向通信链路正式宣告解除[^4]。 ```python # Python伪代码展示四挥手逻辑流程 def tcp_four_way_handshake(client, server): client.send(FIN=True) # 第一挥手:Client 发送 FIN 给 Server ack_from_server = server.recv() # 接收 ACK (第二) data_remaining = True # 假设Server仍有数据要发送 while data_remaining: payload = server.send_payloads() if not payload: # 当没有更多数据时停止循环 data_remaining = False server.send(FIN=True) # 第三挥手:Server 发送 FIN 给 Client final_ack_to_server = client.recv() # 第四挥手:Client 收到后回复 ACK 并进入 TIME_WAIT 状态 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值