【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?

前情回顾:【漫画】TCP连接为什么是三次握手,而不是两次握手,也不是四次握手?

乔戈里和小萌一起去美食城吃了午饭

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第1张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第2张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第3张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第4张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第5张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第6张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第7张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第8张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第9张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第10张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第11张图片


小萌:额...哦!这就是两次挥手,我这里就好比是服务端还有消息没发送完,乔哥你的客户端就突然把我拉黑(断开了连接),导致我(服务器)这里还有消息给你,但你因为关闭,却接受不到。所以是不能两次挥手断开TCP连接!这样是不可靠的!大体示意图如下图所示。

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第12张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第13张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第14张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第15张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第16张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第17张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第18张图片

乔戈里:在第一次挥手中,我一开始说,我这里没话说了,代表客户端这里没消息发送了,这是第一次挥手,客户端知道自己没消息发送了;

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

在第三次挥手中,小萌你说自己说完了没话要说了,准备睡觉,这里代表小萌你这个服务器没消息发送了,所以三次挥手结束,小萌你这个服务器知道了自己没有消息发送,而且小萌你还知道了客户端没有消息发送,但是由于我乔戈里这个客户端没有给你的第三次挥手回复,所以你小萌产生了疑问,乔戈里(客户端)到底知不知道我这里没有消息发送了,三次挥手就有这个问题!

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第19张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第20张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第21张图片

小萌:对哦!因为我们讨论的是三次挥手,所以你是不会对收到的消息进行回复,在三次挥手中,我服务器不知道到底你有没有收到我断开的请求,如果你收到了,那还好,皆大欢喜咋两都去睡觉了(客户端和服务器端都断开连接),如下图所示;

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第22张图片

小萌:那如果我小萌(服务器)断开的请求丢失了,你不知道我这里(服务器端)要断开,结果小萌我(服务器)去睡觉了(断开连接),乔戈里你(客户端)由于没有收到睡觉这个消息(断开连接),还一直傻傻地在那里等着我继续发送消息(虽然服务器没消息发送了,但是客户端不知道呀!客户端没有断开连接浪费了资源),结果就是,我安安稳稳地睡了一晚上,乔哥你可怜巴巴在那等了一晚上我的消息,大体情况如下图所示。

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第23张图片


【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第24张图片

乔戈里:只有进行第四次挥手,我对你小萌最后说的“睡觉去了”进行回复,这样你小萌(服务器)就知道我乔戈里(客户端)知道你要断开连接了。到这里就圆满了!


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


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

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第25张图片


【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第26张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第27张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第28张图片

【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?_第29张图片

————  e n d ————

卡通人物出自公众号:叔婆饭


觉得文章不错的,欢迎点在看转发,长按下图关注公众号 程序员乔戈里,收看更多精彩。

640?

今日问题:你对四次握手是怎么认识的?欢迎留言

你可能感兴趣的:(【漫画】TCP断开连接为什么是四次挥手,不是二次挥手/三次挥手?)