TCP连接管理¶
来源:
计算机网络 / 运输层/TCP连接管理.md
TCP连接管理¶
TCP连接有三个阶段:建立连接、数据传送和连接释放
建立TCP连接¶

三次握手建立TCP连接¶
- 第一次:客户端发送
SYN=1,seq=x,请求建立连接。 SYN报文不发送数据,但是消耗一个序号 - 第二次:服务器回复
SYN =1,ACK=1,seq=y,ack=x+1,表示同意连接并确认客户端请求。 (ack=x+1,是因为确定seq=x已收到) - 第三次:客户端回复
ACK=1,seq=x+1,ack=y+1,确认服务器响应。 (ack=y+1,确认seq=y已收到)
==为什么需要第三次握手¶
因为第一次握手有可能延误到达,如果只有两次握手,服务器可能误以为要建立新的TCP连接,从而浪费服务器的资源,但是在三次握手的情况下,A不会理睬B 防止旧的、失效的连接请求报文突然到达服务器,导致服务器误以为客户端要建立连接,从而浪费资源。==
四次挥手释放TCP连接¶

第一次¶
客户端发送FIN=1,seq=u,u就是前面最后一个字节的序号加1,和SYN一样,不携带数据,消耗一个序号,客户机进入FIN-WAIT-1状态
第二次¶
服务器发送ACK=1,seq=v,ack=u+1 此时客户机到客户端方向就关闭了,TCP协议属于半关闭状态,但是服务器还可以发信息 服务器进入CLOSE-WAIT状态
第三次¶
服务器如果没有要在发送的信息,就发送FIN=1,ACK=1,seq=w,ack=u+1,服务器进入LAST-ACK状态
第四次¶
客户机发送ACK=1,seq=u+1,ack=w+1,服务器收到之后就进入CLOSED状态 客户机进入TIME-WAIT状态,再等待2MSL后,进入CLOSED状态
