1、TCP三次握手与四次挥手、
-
客户端-发送带有SYN标志的数据包 一次握手-服务端 -
服务端-发送带有SYN/ACK标志的数据包 二次握手-客户端 -
客户端-发送带有A 1.1为什么要三次握手 三次握手的目的是为了建立可靠的通信通道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要目的就是双方确认自己与对方的发送与接收是正常的。 CK标志的数据包 三次握手-服务端 -
第一次握手,Client什么都不能确认,Server确认对方发送正常,自己接收正常 -
第二次握手,Client确认自己发送正常,接收正常,对方发送正常,对方接收正常。Server确认对方发送正常,自己接收正常 -
第三次握手,Client确认自己发送正常,接收正常,对方发送正常,对方接收正常。Server确认自己发送正常,接收正常,对方发送正常,对方接收正常。
1.2 第2次握手传回ACK,为什么还要传回SYN?
按收端传回发送端所发送的ACK是为了告诉客户端,我接收到的信息确实就是你所发送的信息。这表明从客户端到服务端的通信是正常的。而传回SYN则是为了建立并确认从服务端到客户端的通信。
SYN 同步序列编号(Synchronize Sequence Numbers) 是 TCP/IP 建立连接时使用的握手信号。在客户机和服务器之间建立正常的 TCP 网络连接时,客户机首先发出一个 SYN 消息,服务器使用 SYN-ACK 应答表示接收到了这个消息,最后客户机再以 ACK(Acknowledgement)消息响应。这样在客户机和服务器之间才能建立起可靠的 TCP 连接,数据才可以在客户机和服务器之间传递。
为什么要四次挥手?
断开一个TCP连接则需要“四次挥手”
-
客户端-发送一个 FIN,用来关闭客户端到服务器的数据传送。 -
服务端-收到了这个FIN,他会返回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号 -
服务端-关闭与客户端的连接,发送一个FIN给客户端。 -
客户端-发送ACK报文确认,并将确认序号设置为收到序号加1
简单举个例子,A向B发送一个:“我要结束了”,B回答“我知道了”,但并不能保证B不会再继续说话,之后等B“再说完”,然后A再发送“我知道了”,这才是四次挥手
|