今天和大家解释一下TCP三次握手。
第一次握手 客户端向服务端发SYN包请求连接此时SYN=1 随机产生seq=J等待服务器确认;
第二次握手 服务端收到SYN=1的包知道客户端请求连接,服务端将SYN和ACK都置为1 ack=J+1来确认客户端的seq,再随机产生一个seq=K发给客户端请求连接;
第三次握手 客户端收到服务端的包检查ack是不是为J+1 ACK是不是为1若是,则发送ack=K+1和ACK=1给服务端,服务端进行检查ack=K+1 ACK=1 若正确则;连接成功
为啥不是二次握手?
二次握手其实并不影响连接的建立,但是如果在请求建立的过程中由于网络的拥塞客户端发往服务端的连接请求迟迟到不了,客户端超时重传。
网络恢复后客户端与服务端建立连接,传输完数据后释放连接。此时被堵塞的连接到了服务端因为没有第三次握手所以服务器认为自己与客户端建立了连接便去等待客户端发送数据,而此时客户端已经关闭了连接,那么服务端就会白白浪费资源
如果你对TCP三次握手有更深的理解,可以随时联系我们。