温岭市文章资讯

计算机网络传输协议TCP三次握手与四次挥手原理

2026-03-28 23:28:01 浏览次数:2
详细信息

这是一个关于TCP三次握手与四次挥手原理的详细解释。

核心概念:TCP与连接

TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。“面向连接”意味着在数据传输前,通信双方必须先建立一条逻辑连接,传输结束后再释放。三次握手用于建立连接,四次挥手用于释放连接

一、TCP报文头部关键字段

理解握手和挥手,需要先知道几个TCP报文头部的关键标志位:

二、三次握手(建立连接)

目的:确认双方的发送和接收能力都正常,并同步初始序列号

详细过程:

第一次握手(客户端 -> 服务器)

第二次握手(服务器 -> 客户端)

第三次握手(客户端 -> 服务器)

为什么是三次,不是两次?

主要是为了防止已失效的连接请求报文突然又传送到服务器,导致服务器资源浪费(防止“旧的重复SYN”造成连接错乱)

三、四次挥手(释放连接)

目的:双方都确认数据发送完毕,并安全地、无遗漏地关闭连接。由于TCP是全双工的(可以同时双向传输),每个方向必须单独关闭。

详细过程:

假设客户端主动发起关闭。

第一次挥手(客户端 -> 服务器)

第二次挥手(服务器 -> 客户端)

第三次挥手(服务器 -> 客户端)

第四次挥手(客户端 -> 服务器)

为什么需要四次挥手?

因为TCP是全双工,关闭需要两个独立的“提议-确认”过程。

为什么客户端最后要等待2MSL? 确保最后一个ACK能到达服务器:如果服务器没有收到第四次挥手的ACK,它会重发FIN。客户端在2MSL时间内收到这个重发的FIN,可以重发ACK。 让本次连接产生的所有报文都在网络中消失:避免这些旧的报文段影响未来新建的、复用相同端口号的连接。

总结对比

特性 三次握手(建立连接) 四次挥手(释放连接)
目的 同步序列号,确认双方收发能力 双方安全、完整地关闭连接
发起方 客户端 可以是客户端或服务器(图示以客户端为例)
关键状态 SYN_SENT, SYN_RCVD, ESTABLISHED FIN_WAIT_1/2, CLOSE_WAIT, LAST_ACK, TIME_WAIT
次数必要性 防止失效连接请求造成错误 TCP全双工,两个方向需独立关闭
后续特殊状态 客户端有 TIME_WAIT(2MSL)

这个机制是TCP实现可靠数据传输的基石之一。

相关推荐