1.三次握手:
(1)目的:连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,并交换TCP窗口大小信息;
(2)过程:(在socket编程中,客户端执行connect()时进行三次握手)

如上图所示,第一握手进行后,客户端处于SYN_SENT状态,客户端的SYN报文服务器收到后,服务器处于LISTEN状态,在服务器端第二次握手进行后,服务器端处于SYN_RECV状态,在第二次握手和第三次握手之间的状态成为半连接状态,这时连接还没有完全建立,当所有报文发送完毕后,即三次握手过程进行完毕后,连接建立成功。
总的来说,第一次握手,客户端向服务器端发送[SYN]报文;第二次握手,服务器端向客户端发送[SYN,ack]报文;第三次握手,客户端再向服务器端发送[ack]报文。
其中:Seq:(4 bytes)序列号; ack:(4 bytes)确认号;
应答ACK(1 bit):0无效,1有效
同步SYN :同上; 终止FIN:同上
2.四次挥手:
(1)客户端和服务器端均可主动发起挥手的请求,在socket编程中,任何一方执行close()操作即可产生挥手操作;
(2)过程:

如上图所示:在四次挥手操作发生前,主动方和被动方都处于ESTABLISHED(建立)状态,第一次挥手操作进行后,主动方处于FIN_WAIT_1状态,在第二次挥手后,被动方处于CLOSE_WAIT状态,主动方处于FIN_WAIT_2状态,第三次挥手后被动方处于LAST_ACK状态,第四次挥手后,主动方处于TIME_WAIT状态,在TIME_WAIT状态结束后,主动方和被动方都处于CLOSE状态。
总的来说:第一次挥手,主动方向被动方发送[FIN,ACK]报文;第二次挥手,被动方向主动方发送[ACK]报文;第三次挥手,被动方继续向主动方发送[FIN,ACK]报文;第四次挥手,主动方向被动方发送[ACK].
本文详细介绍了TCP的三次握手和四次挥手。三次握手目的是建立TCP连接、同步序列号和确认号等,客户端和服务器通过三次发送不同报文完成连接建立。四次挥手时,客户端和服务器均可主动发起,双方通过四次发送不同报文完成连接关闭,还说明了各阶段的状态变化。
50万+

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



