TCP四次挥手及所处状态

TCP四次挥手过程以及所处状态

  • 第一次挥手:假设客户端打算关闭连接,发送一个TCP首部FIN被置为1的FIN报文给服务端,

客户端状态变为FIN_WAIT_1。

  • 第二次挥手:服务端收到以后,向客户端发送ACK应答报文

服务端状态由ESTABLISHED变为CLOSE_WAIT,并继续处理数据,

当客户端收到服务端发送的ACK之后,状态由FIN_WAIT_1变为FIN_WAIT_2

  • 第三次挥手:等待服务端处理完数据之后,向客户端发送FIN报文

发送FIN报文后,服务端状态变为LAST_ACK

  • 第四次挥手:客户端收到FIN报文后返回一个ACK应答报文。

客户端接收到服务端发送的FIN后,状态变为TIME_WAIT,并且在等待2MSL后连接关闭。

** 服务端收到ACK报文之后,进入close状态 **此时服务器完成连接关闭。

### TCP三次握手与四次挥手的具体过程及区别 #### 三次握手建立连接的过程详解 TCP 的三次握手机制用于在网络环境中安全可靠地建立连接。以下是其具体步骤: 1. 客户端服务器发起请求,发送一个带有 `SYN` 标志位的初始数据包,并将其序列号设为 `x`【^2】。 - 此时客户端进入 `SYN_SENT` 状态。 2. 当服务器接收到该 `SYN` 数据包后,会回应一个同时携带 `SYN` 和 `ACK` 标志的数据包给客户端【^1】。 - 在此过程中,服务器分配自己的初始序列号为 `y` 并将确认应答字段设置成 `x+1` 来表示已接受到之前的同步信号。 - 随后服务器处于 `SYN_RCVD` 状态。 3. 接下来,客户端再次回复一条仅含 `ACK` 的消息至服务器处予以最终认可,其中包含对先前收到信息中的序列编号加一后的值作为回执依据(`y+1`) 【^4】。 - 至此双方均切换到了正常工作阶段——即进入了所谓的 “ESTABLISHED” 状况之下准备开展进一步交互活动了。 ```plaintext Client Server --- SYN(x) --> (State: SYN_SENT) <-- SYN(y), ACK(x+1) -- (State: SYN_RCVD) --- ACK(y+1) --> (State: ESTABLISHED) ``` --- #### 四次挥手断开连接的步骤说明 为了优雅地结束一个完整的双向通信链路,TCP采用了更为复杂的四步拆除策略称为“四次挥手”。这是因为即使在一个方向上的数据流动停止之后也可能还有来自相反路径未处理完毕的信息需要继续传递下去直到彻底完结为止的缘故所致【^3】。 1. 主动关闭的一侧(通常为客户机)发出第一个 FIN 报文段并伴随有一个随机起始位置参数 z ,随后便进入到 FIN-WAIT-1 态度之中等待对方响应; 2. 另一边一旦察觉到来自伙伴节点发来的终止意图便会立刻作出答复动作—也就是返回一个包含了相同序列数值再加上单位增量的一个新版本 ACK 记录与此同时更新自身内部记录从而转变为 CLOSE_WAIT 模式; 3. 如果被动方确实也没有更多东西要传达的话那么紧接着也会启动类似的退出程序:再额外送出第二个独立标记为 fin 的封包连同相应调整过的计数器一起寄送给前者促使后者转入 LAST_ACK 子状态以便最后核查整个环节是否顺利完成; 4. 最终当最初提议解散者验证清楚所有预期事项均已达成共识以后就可安心宣告使命达成就正式销毁关联资源回归空闲备用姿态啦! ```plaintext Client Server --- FIN(z) --> (State: FIN_WAIT_1 -> FIN_WAIT_2) <-- ACK(z+1) -- (State: CLOSE_WAIT) --- ACK(w+1) --> (State: LAST_ACK -> CLOSED) <-- FIN(v) -- (State: CLOSING/TIME_WAIT) --- ACK(v+1) --> (State: TIME_WAIT/CLOSED) ``` --- ### 具体过程的区别总结表 | 特性 | 三次握手 | 四次挥手 | |-------------------|------------------------------------|-------------------------------------| | **目的** | 建立可靠的连接 | 断开现有的连接 | | **参与角色** | 请求方和服务端共同协作 | 任一方均可主动提出 | | **所需次数/轮次** | 三 | 四 | | **主要标志位** | SYN, ACK | FIN, ACK | | **典型状态变化** | CLIENT(SYN_SENT)->SERVER(SYN_RCVD)| INIT->FIN_WAIT_x->CLOSING->TIME_WAIT| ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值