TCP协议(二):连接的建立与释放

1.建立连接:三次握手

TCP协议(二):连接的建立与释放

①服务端监听端口 CLOSED->LISTEN

②客户端请求建立连接:SYN=1,seq=x; CLOSED->SYN-SENT

③服务端收到请求,同意建立连接:SYN=1,ACK=1,seq=y,ack=x+1; LISTEN->SYN-RCVD

④客户端收到响应,进行响应,进入数据传输状态:ACK=1,seq=x+1,ack=y+1; SYN-SENT->ESTABLISHED

⑤服务端收到相应,进入数据传输状态:SENT-RCVD->ESTABLISHED

(为了防止,建立的请求因网络原因,延后到达,导致建立无用连接)

 

2.释放连接:四次挥手

TCP协议(二):连接的建立与释放

①客户端和服务端均可以发起释放连接,以客户端为例

客户端发起释放连接:FIN=1,seq=p; ESTABLISHED->FIN-WAIT-1

②服务端收到请求,同意释放连接:ACK=1,seq=w,ack=p+1; ESTABLISHED->CLOES-WAIT

③客户到收到响应,进入单向关闭状态:ESTABLISHED->FIN-WAIT-2

④服务端发起释放连接响应:FIN=1,ACK=1,seq=q(与w不同,可能传输了一些数据),ack=p+1;CLOSE-WAIT->LAST-ACK

⑤客户端接到响应,发起响应:ACK=1,seq=p+1,ack=q+1;FIN-WAIT-2->TIME-WAIT

⑥客户端等待2MSL,RFC793建议两分钟,实际可以调整,作用是为了防止客户端的响应无法到达,服务端服务无法关闭,等待2MSL可以有时间重发响应

⑦服务端接到响应,关闭连接:LAST-ACK->CLOSED