TCP的三次握手和四次挥手,以及一些常见的问题

一:TCP的三次握手过程:

    客户端和服务器端建立一条TCP连接主要分为一下四步:

    第一步:客户端--->服务器,发送一段特殊的TCP报文段,其中:SYN位置为1,seq=client_isn(客户随机选择)。这时,服务器处于SYN_SENT状态;

    第二步:服务器端接收到客户端发来的SYN报文段之后,就会发送一段允许连接的报文段给客户端,其中:SYN=1,seq=server_isn(服务器自己的初始序号),ack=client_isn+1。这时,服务器端由Listen状态 ---> SYN_RCVN状态;

    第三步:客户端接收到服务器发来的SYNACK报文段,然后客户端也会发送一段ACK报文段给服务器端,其中:SYN=0,seq=client_isn+1,ack=server_isn+1。这时,客户端由SYN_SENT状态 ---> ESTABLISHED状态。

    第四步: 服务器端接收到客户端发来的ACK报文段后,就由SYN_RCVD状态 ---> ESTABLISHED状态。

如下图所示:

TCP的三次握手和四次挥手,以及一些常见的问题_第1张图片    

 

二:TCP的四次挥手过程:

第一步: 客户端发送FIN为1的报文段给服务器端,并由ESTABLISHED ---> FIN_WAIT_1;

第二步:服务器端接收到报文段后,这个时候,服务器端可能还有数据没有发送完毕,所以它会先发送ACK为1的报文段给客户端,并由ESTABLISHED ---> CLOSN_WAIT;客户端接收到该报文之后,也由FIN_WAIT_1 ---> FIN_WAIT_2;

第三步:服务器端数据都发送完毕,可以关闭连接了,就会发送FIN=1的报文段给客户端,并由LAST_ACK ---> CLOSED;

第四步:客户端接收到报文段后,发送ACK=1的报文段给服务端,并由FIN_WAIT_2 ---> TIME_WAIT(等待30S之后转为CLOSED);服务器端收到后,由 LAST_ACK ----> CLOSED。 至此,这一个TCP连接结束了它的生命周期。

如下图:

TCP的三次握手和四次挥手,以及一些常见的问题_第2张图片

 

参考书籍:《计算机网络自顶向下方法》

你可能感兴趣的:(计算机网络)