所谓“三次握手”与“四次挥手”,其实就是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=