tcp三次握手和四次挥手

tcp

tcp是可靠通讯,tcp通讯需要经历

创建连接(三次握手) + 发送数据 + 断开连接(四次挥手)

tcp报文

tcp三次握手和四次挥手_第1张图片

 序号(sequence number),又叫Seq序号,也会全小写seq

确认号(acknowledgement number,又叫Ack序号,也会全小写ack

两者关系:确认方Ack=发起方Seq+1,两端配对

标志位(Flags):用于标记报文目的

  SYN(synchronous建立联机) ACK(acknowledgement 确认)

  PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)

三次握手:

第一次握手:客户端向服务器发送连接请求包,标志位SYN\=1 表示请求连接,同时把seq = X;
第二次握手:服务器收到客户端发过来报文,由 SYN \= 1 知道客户端要求建立联机。向客户端发送一个包含TCP报文,包含请求信息SYN = 1 表示服务端也请求连接,同时把seq = y,也包含确认信息ACK = 1表示服务端确认连接请求,同时把ack = x+1 以备客户端校验        
第三次握手:客户端收到服务器发来的包后检查确认序号(ACK)是否正确,以客户端发seq+1为校验标准,即第一次发送的序号加1(X+1);若正确,客户端器发送确认序号ACK = Y+1;
 服务器收到确认序号值 ACK\= y+1 即 服务器seq+1 则转换状态为listen,连接建立成功,可以传送数据了。

tcp三次握手和四次挥手_第2张图片

四次挥手:

第一次挥手:客户端给服务器发送TCP包,用来关闭客户端到服务器的数据传送。将标志位FIN\=1 表示请求断开连接,同时把seq = u
第二次挥手:服务器收到FIN后,先检验ack \=u+1,发回一个ACK = 1(标志位ACK=1)表示确认断开连接请求,同时把seq = v ,服务器开始断开工作
第三次挥手:服务器断开工作完成,发送一个FIN \= 1请求断开连接,ACK=1 (标志位ACK=1)表示确认断开连接请求, 同时把seq =w
第四次挥手:客户端收到服务器发送的FIN\=1之后,发回ACK=1(标志位ACK=1)确认关闭请求,同时把ack= w+1 服务器在检验ack\= 服务器seq+1之后关闭连接,客户端在等待2msl时间后关闭连接

tcp三次握手和四次挥手_第3张图片

为什么建立连接只要三次握手,但是断开连接要四次挥手

因为三次握手的第二次由服务器发送SYN建立连接的信息和ACK确认建立连接的信息是在同一个报文中传输的,而四次挥手的由服务器发送的ACK 确认断开请求的信息和FIN 发送断开连接的信息是在两个报文中传输的

你可能感兴趣的:(tcp)