第一次握手:client发送位码为syn=1,随机产生seq number=1000的数据包到服务器,server由SYN=1知道,client要求建立联机请求,
第二次握手:sever收到请求后要确认联机信息,向client发送ack number=(client的seq+1),syn=1,ack=1,随机产生seq=6777的数据包
第三次握手:client收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,
若正确,client会再发送ack number=(server的seq+1),ack=1(syn=0),server收到后确认seq值与ack=1则连接建立成功。
完成三次握手,双方开始传送数据。
SYN(synchronous同部位),tcp握手的第一次
ACK(acknowledgement 确认位),建立连接时用到的
PSH(push) 推送位,若为1,代表要求对方立即传送缓冲区内的其他对应封包,
FIN(finish结束)
RST(reset重置)
URG(urgent紧急),为1表示紧急的报文封包
Sequence number序列号
Acknowledge number确认号
四次断开:
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。
这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。
收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。
首先进行关闭的一方是主动断开方,而另一方是被动断开方。
四次断开过程:
1、客户端发送一个FIN,用来关闭客户端到服务器的数据传送,此时客户端进入TIME_WAIT1状态
2、服务器收到这个FIN,它发回一个ACK,确认号为收到的序号加1,和SYN一样,一个FIN将占用一个序号,此时服务器进入CLOSE_WAIT状态,客户端端进入TIME_WAIT2
3、当服务器端也没有要传送的数据时,服务器关闭与客户端的连接,发送一个FIN给客户端A,服务器进入LAST_ACK
4、客户端发回ACK报文确认,并将确认号设置为收到序号加1,客户端进入TIME_WAIT,等待2MSL--120s,服务器端接后进入CLOSED