三次握手:
在建立连接的时候发生的,由客户端主动发起。三次握手发生在客户端的“connect”和服务器的“accept”这两个函数之间(如果是三个的话还有一个服务器的“listen”函数)。如下图:
第一次握手:客户端向服务器发送自己序列号(seq1)。
第二次握手:服务器接收到客户端的序列号后加一(ack),并把自己序列号(seq2)发送个客户端。
第三次握手:客户端确认自己收到服务器发来的自己加一的序列号(ack)无误后,把服务器的序列号加一(ack)向服务器发送过去。
注意:三次握手少一次和少一次都不行,
四次可以行但是没有必要,就想是别人(客户端)问你(服务器),你叫什么名字(第一次握手),你说:“张三”(第二次握手),别人回答:“好的,我听到了”(第三次握手)。如果再回答你是张三,就读多余了。如果别人没有应答,你就不确定比人有没有听到你说话。所以少一次不行,多一次就多余,三次刚刚好。
TCP的四次挥手:
在断开连接的时候发生的,由主动断开的一方发起一般是客户端。
简单点说(客户端看成女,服务器看成男):
第一次挥手:女:我们分手吧;
第二次挥手:男:好;
第三次挥手:男:分手吧;
第四次挥手:女:好。