所谓“三次握手”与“四次挥手”,其实就是TCP连接的建立和释放的过程。
三次握手(建立TCP连接)
建立连接之前,客户端主动结束CLOSED阶段,相应地服务器也结束CLOSED阶段并进入LISTEN阶段,然后开始“三次握手”:
- 第一次握手
客户端将包含:
1)标志位SYN=1(表示“请求建立连接”),
2)序号seq=x(x为随机数)
的TCP报文发送给服务器,然后客户端进入SYN_SENT阶段,等待服务器确认。 - 第二次握手
服务器收到客户端发来的请求建立连接的TCP报文,结束LISTEN阶段,将包含:
1)标识位为SYN=1和ACK=1(表示“确认客服端的报文seq有效,服务器能正常接收客户端发送的数据,并同意创建连接”)
2)序号seq=y(y为随机数)
3)确认号ack=x+1(表示“收到客户端的序号seq,并将其值+1作为自己确认号ack的值”)
的TCP报文返回给客户端,然后服务端进入SYN_RCVD阶段。 - 第三次握手
客户端收到服务器返回的报文后,检查ACK是否为1,ack是否为x+1,如果是,则表明从客户端到服务器的数据传输正常,客户端结束SYN-SENT阶段,并将包含:
1)标志位ACK=1(表示“收到服务器端同意连接的信号”)
2)序号seq=x+1(表示“收到服务端的确认号ack,并将其值作为自己序号seq的值”)
3)确认号ack=y+1(表示“收到服务端的序号seq,并将其值+1作为自己确认号ack的值”)
的TCP报文返回给服务端,然后客户端进入ESTABLISHED阶段。
服务器收到来自客户端的TCP报文之后,检查ACK是否为1,如果是,则表明从服务器到客户端的数据传输是正常的。服务端结束SYN_RCVD阶段,进入ESTABLISHED阶段。
至此,三次握手过程结束,此后客户端与服务器可以进行正常的数据传输。

本文详细解析TCP连接的建立(三次握手)和释放(四次挥手)过程,包括每次握手和挥手的具体步骤,以及为什么需要3次握手和4次挥手的原因。通过阅读,读者可以理解TCP连接的可靠性和全双工特性。
最低0.47元/天 解锁文章
94万+

被折叠的 条评论
为什么被折叠?



