TCP连接的三个阶段:连接建立,数据传送,连接释放。
1、连接建立:三次握手
第一次握手:客户端A发送位码SYN=1和随机序列号seq=x的数据包到服务器B,服务器B由SYN=1知道,A要求建立联机;
注:位码即tcp标志位,有6种标示:URG(urgent紧急)ACK(acknowledgement 确认)PSH(push传送)SYN(synchronous建立联机)
第二次握手:服务器B收到请求后要确认联机信息,向A发送SYN=1,ACK=1,ack number=x+1和随机序列号seq=y的包
第三次握手:客户端A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ACK是否为1,若正确,A会再发送ACK=1,seq=x+1,ack number=y+1,B收到后确认seq值与ack=1则连接建立成功。
2、数据传送:完成三次握手,A与B开始传送数据。
3、连接释放:四次挥手
(1) 客户端A发结束送位码FIN=1和随机序列号seq=u的数据包到服务器B,关闭客户端A到服务器端B的数据传送。(客户端A不再发送报文给服务器端B,但可接受服务器端B报文)
(2) 服务器B收到这个FIN,它发回一个ACK=1,随机序列号seq=v和确认序号ack number=u+1。
(3) 服务器B关闭客户端A的连接,发送一个FIN=1,ACK=1,seq=w和确认序号ack number=u+1给客户端A。(服务器端B关闭到客户端A的数据传送)
(4) 客户端A发回ACK=1,seq=u+1和ack number=w+1。
(2) 服务器B收到这个FIN,它发回一个ACK=1,随机序列号seq=v和确认序号ack number=u+1。
(3) 服务器B关闭客户端A的连接,发送一个FIN=1,ACK=1,seq=w和确认序号ack number=u+1给客户端A。(服务器端B关闭到客户端A的数据传送)
(4) 客户端A发回ACK=1,seq=u+1和ack number=w+1。