TCP的四次挥手与TCP状态转换

文章目录

四次挥手场景

TCP客户端与服务器断开连接的时候,在程序中使用close()函数,会使用TCP协议四次挥手。

客户端和服务端都可以主动发起。

因TCP连接时候是双向的,所以断开的时候也是双向的。

步骤

三次挥手可以吗?可以是可以,和状态有关。

四次挥手是用于客户端和服务器断开连接的时候,可以由客户端或者服务器任一方主动发起断开请求。

第一次挥手主动方发起,如客户端发起断开连接请求,服务器同意请求但还有数据发送的时候,可以继续发送,当服务器想断开连接的时候进行第三次挥手,发送断开连接请求,然后客户端应答。

三次握手为什么是三次不是四次?

三次握手由客户端主动发起,客户端请求连接的时候,服务器若不同意直接拒绝,若同意说明肯定也要请求和客户端建立连接,所以同意和请求连接一起传输,进行第二次握手,然后客户端同意服务器请求进行第三次握手。

TCP状态转换


等2MSL目的是确保另一方收到同意断开请求,被动方发送FIN后没有收到ACK会重传FIN,直到收到ACK。

握手与挥手/状态 Client Server
LISTEN
第一次握手 SYN_SENT --> LISTEN->SYN_RCVD
第二次握手 SYN_SENT->ESTABLISHED <-- SYN_RCVD
第三次握手 ESTABLISHED --> SYN_RCVD->ESTABLISHED
数据传输
第一次挥手 ->FIN_WAIT_1 --> CLOSE_WAIT
第二次挥手 FIN_WAIT_1->FIN_WAIT_2 <-- CLOSE_WAIT
第三次挥手 TIME_WAIT <-- CLOSE_WAIT->LAST_ACK
第四次挥手 TIME_WAIT --> LAST_ACK

注意:

  • 连接三次握手主动发起方需要是客户端。
  • 断开连接请求的四次挥手主动发起方可以是客户端或者服务器的任一方。
相关推荐
記億揺晃着的那天7 小时前
NAS 内网域名访问为什么需要浏览器授权
网络·nginx·js·nas
chunmiao30327 小时前
DeepSeek V4-Pro 正式版上线,API 8月17日起分时调价
网络·安全
迪康Defender9 小时前
AI 重构终端安全运营:智能分析中枢 AI Insight 模块架构与落地场景深度解析
运维·网络·人工智能·其他·安全·重构·架构
0x5310 小时前
Java网络编程(二)
java·服务器·网络
微硬创新10 小时前
老旧产线改造:耐达讯自动化16路4‑20mA转PROFINET的工程实践
人工智能·网络协议·自动化·信息与通信
西安景驰电子12 小时前
《PTP精确时间协议系列》第一篇:从原理到应用,全面解读IEEE 1588
linux·运维·服务器·开发语言·网络·windows·php
Bruce_Liuxiaowei12 小时前
基于微步在线威胁情报的公网 IP 攻击迹象监测:threatbook_query 脚本全解析与 BruceSec 平台整合实践
数据库·tcp/ip·安全·网络安全·智能体
ZGi.ai12 小时前
多模型回答不稳定:路由规则与评测方法
网络·人工智能·大模型评测·多模型·模型路由·zgi·模型网关
80s77713 小时前
独享住宅IP、长效代理ip是什么?有哪些作用?
网络·网络协议·tcp/ip
IPdodo_13 小时前
静态 IP、住宅 IP 和固定出口有什么区别?开发场景选型指南
服务器·网络·网络协议·tcp/ip·代理ip