乐趣区

关于tcp:tcp三次握手和四次挥手

tcp

tcp 是牢靠通信,tcp 通信须要经验

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

tcp 报文

 序号(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 包,用来敞开客户端到服务器的数据传送。将标记位 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 工夫后敞开连贯

为什么建设连贯只有三次握手,然而断开连接要四次挥手

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

退出移动版