TCP断开连接为什么是四次挥手,不是二次挥手三次挥手?(图片详解)

    技术2022-07-10  126

    前景回顾: TCP连接为什么是三次握手,而不是两次握手,也不是四次握手?. 小萌:额…哦!这就是两次挥手,我这里就好比是服务端还有消息没发送完,乔哥你的客户端就突然把我拉黑(断开了连接),导致我(服务器)这里还有消息给你,但你因为关闭,却接受不到。所以是不能两次挥手断开TCP连接!这样是不可靠的!大体示意图如下图所示。 乔戈里:在第一次挥手中,我一开始说,我这里没话说了,代表客户端这里没消息发送了,这是第一次挥手,客户端知道自己没消息发送了;

    在第二次挥手中,小萌你收到我的消息以后,知道了我乔戈里这里没消息发送了,然后继续发送消息因为你还有消息发送,这个时候是小萌你服务器端知道了客户端无消息发送了;

    在第三次挥手中,小萌你说自己说完了没话要说了,准备睡觉,这里代表小萌你这个服务器没消息发送了,所以三次挥手结束,小萌你这个服务器知道了自己没有消息发送,而且小萌你还知道了客户端没有消息发送,但是由于我乔戈里这个客户端没有给你的第三次挥手回复,所以你小萌产生了疑问,乔戈里(客户端)到底知不知道我这里没有消息发送了,三次挥手就有这个问题! 小萌:对哦!因为我们讨论的是三次挥手,所以你是不会对收到的消息进行回复,在三次挥手中,我服务器不知道到底你有没有收到我断开的请求,如果你收到了,那还好,皆大欢喜咋两都去睡觉了(客户端和服务器端都断开连接),如下图所示; 小萌:那如果我小萌(服务器)断开的请求丢失了,你不知道我这里(服务器端)要断开,结果小萌我(服务器)去睡觉了(断开连接),乔戈里你(客户端)由于没有收到睡觉这个消息(断开连接),还一直傻傻地在那里等着我继续发送消息(虽然服务器没消息发送了,但是客户端不知道呀!客户端没有断开连接浪费了资源),结果就是,我安安稳稳地睡了一晚上,乔哥你可怜巴巴在那等了一晚上我的消息,大体情况如下图所示。 乔戈里:只有进行第四次挥手,我对你小萌最后说的“睡觉去了”进行回复,这样你小萌(服务器)就知道我乔戈里(客户端)知道你要断开连接了。到这里就圆满了!

    你小萌(服务器)知道了我乔戈里(客户端)没有话说了(服务器知道客户端没有消息发送),你小萌(服务器)最后说完话了也要去睡觉了(服务器知道自己也没消息发送了);

    而我乔戈里(客户端)一开始说自己没有消息发送了(客户端自己知道自己没有消息发送了),最后通过第四次挥手确定肯定以及一定确保我收到了你小萌(服务器)说也没话说了(客户端知道了服务器没有消息发送了,为啥这么确定,因为客户端只有在收到服务器发送的断开连接的消息,才会进行第四次挥手来进行回复哦~)。这就是四次挥手的妙处!给你花了示例图,方便你理解!

    Processed: 0.016, SQL: 9