三次握手理解 四次挥手(等待2MSL)
三次握手:
A(客户端) b(服务端)
A:我想发消息给你(一次){给了一个SYN a请求}
B:好的,那我准备好了(两次){给了一个ACK a+1确认,给了一个新的SYN b请求}
A:我也准备好了(三次),连接就建立起来了{给了一个ACK b+1请求}
如果只有两次握手的话,当出现网络阻塞时,A发送的消息超时,当A和B通信完成后,这个之前被A认为”失效的消息“慢吞吞到达了B,而对于B而言,以为这是一个新的请求连接消息,就向A发了一次确认,而对于A而言,他认为他没有给B再次的发消息(因为上次的通话已经结束了),所以A不会理睬这条确认,但是B则会一直在等待着A的消息;
四次挥手:
客户端要在红圈处等待TIME_WAIT(2MSL)时长,保证若出现ACK丢失的情况下,可以等到下一个FIN的到来;如果没来,就说明服务端关闭;