TCP 3次握手和4次挥手

3次握手: 
3次握手指的是TCP 建立连接 阶段 
1.Client–>Service SYN Sequence number a
2.Client<–Service SYN+ACK Sequence number b Acknowledge number(a+1)
3.Client–>Service ACK Acknowledge number(b+1)

4次挥手: 
4次挥手指的是 TCP 断开连接 阶段 
1.Service>Service FIN Sequence number a
2.Service<–Service ACK Acknowledge number(a+1) Sequence number b
3.Service<–Service FIN Acknowledge number(b+1) Sequence number c
4.Service>Service ACK Acknowledge number(c+1)

TCP的状态 (SYN, FIN, ACK, PSH, RST, URG)

含义是:
SYN表示建立连接(synchronous建立联机)
FIN表示关闭连接(finish结束)
ACK表示响应(acknowledgement 确认)
PSH表示有 DATA数据传输(push传送)
RST表示连接重置(reset重置)
URG表示紧急(urgent紧急)
TCP的连接建立和连接关闭,都是通过请求-响应的模式完成的

位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)
                            Sequence number(顺序号码) Acknowledge number(确认号码)

建立连接3次握手
(1) 第一次握手:建立连接时,客户端A发送SYN=1和(随机Sequence number=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。
(2) 第二次握手:服务器B收到SYN=1,必须确认客户A的SYN=1和(ACK_NUMBER=j+1),同时自己也发送一个(随机SEQ_NUMBER=k)和ACK_NUMBER,即SYN=1和ACK=1包,此时服务器B进入SYN_RECV状态。
(3) 第三次握手:客户端A收到服务器B的(SEQ_NUMBER=k)和ACK_NUMBER,SYN=1和ACK=1包,向服务器B发送确认包ACK=1和(ACK_NUMBER=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。
TCP协议, 建立连接,只能由客户端发起. 

断开连接4次挥手
初始状态:客户端A和服务器B之间已经建立了TCP连接,并且数据发送完成,打算断开连接,此时客户端A和服务器B是等价的,双方都可以发送断开请求,
下面以客户端A主动发起断开请求为例。(后续内容用A,B简称代替)
(1) 第一次挥手:A首先向B发送断开连接消息,这时TCP头部中的FIN标识位值为1,序号是Sequence number=m,m为A前面正常发送数据最后一个字节序号加1得到的, 消息发送后A进入FNI_WAIT_1状态,FIN=1的报文段不能携带数据,但要消耗一个序号
(2) 第二次挥手:B收到A的断开连接请求需要发出确认消息,这时TCP头部中的ACK标识位值为1,确认号为Acknowledge number=m+1,而自己的序号为Sequence number=n,n为B前面正常发送数据最后一个字节序号加1得到的, 然后B进入CLOSE_WAIT状态,此时就关闭了A到B的连接,同时B端通知上方应用层,处理完成后被动关闭连接。然后A收到B的确认信息后,就进入了FIN_WAIT_2状态。                
(3) 第三次挥手:B端应用层处理完数据后,通知关闭连接,B向A发送关闭连接的消息,这时TCP头部中的FIN和ACK标识位值均为1,确认号Acknowledge number=m+1, 自己的序号为Sequence number=k,消息发送后B进入LACK_ACK状态。                
(4) 第四次挥手:A收到B的断开连接的消息后,需要发送确认消息,这是这时TCP头部中的ACK标识位值为1,确认号Acknowledge number=k+1,序号为Sequence number=m+1(因为A向B发送断开连接的消息时消耗了一个消息号),然后A进入TIME_WAIT状态,若等待时间经过2MSL后,没有收到B的重传请求,则表明B收到了自己的确认,A进入CLOSED状态,B收到A的确认消息后则直接进入CLOSED状态。至此TCP成功断开连接。

                

猜你喜欢

转载自blog.csdn.net/qq_37080232/article/details/89881873
今日推荐