共计 1084 个字符,预计需要花费 3 分钟才能阅读完成。
TCP 连贯中的三次握手和四次挥手
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议 / 网际协议)是指可能在多个不同网络间实现信息传输的协定簇。TCP/IP 协定不仅仅指的是 TCP 和 IP 两个协定,而是指一个由 FTP、SMTP、TCP、UDP、IP 等协定形成的协定簇,只是因为在 TCP/IP 协定中 TCP 协定和 IP 协定最具代表性,所以被称为 TCP/IP 协定。
1. 协定简介
TCP/IP 协定定义了一个在因特网上传输的包,称为 IP 数据报,IP 数据报由首部和数据两局部组成,IP 报头中蕴含大量的信息,如源 IP 地址,目标 IP 地址,数据报长度,IP 版本号等,数据局部呢保留传输层的数据,如保留 TCP、UDP、ICMP 等数据。
2. 三次握手
在理解三次握手之前,咱们须要先看 TCP 首部两个要害的属性——序号和确认号。序号字段代表报文端要发送的数据的第一个字节的序号;通信的任何一方收到音讯都要发送一个确认报文,确认报文就须要一个确认号,它的值示意冀望收到下一个报文段的序号值,也就是说在确认报文中确认号才会失效。
如何标识是否为确认报文呢?这里要关注六个标记位,别离是 URG、ACK、PSH、PST、SYN、FIN。在这六个标记位中,又要重点关注三个,别离是
- ACK:当 ACK=1== 确认号字段无效,为确认报文 ==;当 ACK=0,确认号有效
- SYN:同步比特 SYN=1,示意这是一个 == 连贯申请或申请承受报文 ==。
- FIN:用来 == 开释一个连贯 ==。当 FIN=1,示意次报文段的发送端的数据曾经发送结束了,用来开释连贯。
第一次握手时,Client 向 Server 发送一个连贯申请,须要设置 SYN=1,同时发送本人的序列号 Seq 到服务器。第二次握手,为服务器收到申请后,发送一个确认报文,ACK=1,同时发送一个确认号,是冀望收到对方的下一个报文段的数据的第一个字节的序号,ACKnum=X+1,+ 1 所示收到 SYN 标识。第三次握手为客户端收到服务器的响应报文,他也要回复确认报文,确认报文 ACK=1,ACKnum=Y+1
3. 四次挥手
第一次挥手为客户端发送 FIN=1,示意本人没有数据能够发送了,其次携带本人的序列号。第二次挥手为服务器端确认收到客户端的 FIN 包,发送一个确认包,表明本人接管到了客户端的敞开申请,然而这时并未筹备好敞开连贯。第三次挥手为服务器确认筹备好敞开连贯,这时发送 FIN=1。第四次挥手为客户端收到服务端的敞开申请,发送一个确认包,服务器端收到这个申请后就敞开连贯,不再回应客户端,客户端会期待一个固定工夫后,主动敞开。