TCP连接为什么是三次握手,而不是两次握手,也不是四次握手?

路由器 (1.9万) 2019-05-14 11:06:45

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第1张

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第2张

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第3张

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第4张

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第5张

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第6张

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第7张

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第8张

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第9张

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第10张

乔哥:你说“喂喂喂,能听到我说话吗?”,是第一次握手,也就是说小萌你的发送消息的能力没有问题,然后我回了你一句“小萌,我可以听到你说话,你能听到我说话吗?”这是第二次握手,我回了你一句,说明了我可以听到你说话(说明了我具有接受消息的能力),我对你说了“你能听到我说话吗”也说明了我这里也有可以发送消息的能力。到第二次握手结束,说明了我具有发送消息和接受消息的能力,小萌你具有发送消息的能力。然后你说“乔哥,我听到你说话了”,这是第三次握手,你听到我说话,也就是说明小萌你的接受消息的能力没有问题。这样就可以进行通话了(建立了TCP连接)

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第11张

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第12张

小萌:“喂,乔哥听得到吗?”

乔哥:“乔哥听得到呀,小萌你听得到乔哥吗?”

小萌:“小萌能听到乔哥,乔哥能听到小萌吗?”

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第13张

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第14张

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第15张

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第16张

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第17张

小萌:1.两次握手,这个我想是因为服务器收到了客户端的消息,服务器知道了客户端是可以发送消息的,但由于没有第三次握手,所以服务器不知道客户端是否具有接受消息的能力;

2.客户端从服务器接受到了消息,客户端知道了服务器接受到了我的消息才回复,说明服务器的接受消息能力和发送消息的能力没问题(服务器发送出了消息);

3.综上所述,客户端确保了服务器的接受发送没问题,但是服务器仅仅只知道客户端的发送消息没问题,这并不是可靠的,所以两次握手不可以。

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第18张

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第19张

乔戈里:这里举个例子,假设客户端和服务器进行TCP连接,然后第一次发送的TCP连接请求发生了阻塞。

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第20张

于是由于客户端没有收到服务器的应答报文,客户端认为这个TCP连接请求丢失了,于是重新发送了TCP连接请求。这次没有阻塞,成功连接了,因为是讨论的两次握手,所以只进行两次连接就可以进行通信了。

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第21张

通信结束,然后就断开了连接。

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第22张

这时候最开始的阻塞的连接请求A客户端以为丢失了,但是没有丢失,只是阻塞了而已,阻塞一段时间网络又畅通了,于是TCP连接请求A成功到达了服务器,服务器又以为是客户端又要进行数据传输,于是服务器就又对这个连接请求进行应答,两次握手,于是又成功建立了TCP连接。

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第23张

但是由于客户端它以为这个连接请求已经丢失了,所以不会利用这个建立的连接请求进行数据通信,虽然服务器分配给了资源给客户端,但是客户端并不进行数据传输,这样就白白浪费了服务器的资源,试想一下如果网络很拥堵,那么等网络变畅通以后,服务器岂不是浪费了一堆资源,可能对于正常的连接请求都无法处理了!

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第24张
TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第25张

服务器过了很长时间(规定好的时间和客户端)都没有收到回复,于是也不会为客户端分配资源,这次连接就放弃了。

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第26张

TCP连接为什么是三次握手,而不是两次握手,也不是四次握手? (https://www.tiejiang.org/) 路由器 第27张

【编辑推荐】

THE END

发表评论

下一篇

已是最新文章