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 发送断开连接的信息是在两个报文中传输的