TCP为什么一定是三次而不是两次连接?

防止已失效的连接请求又传送到服务器端,因而产生错误。

如果不是出于这种担心,两次握手完全可以建立连接。正常情况下是,client发出连接请求,告知server自己的序列号。server接收到消息后,向client发送自己的序列号。这样连接就已经可以建立了。
再说异常情况,第一次握手失败,服务端收不到信号,自然没有第二次握手。这个时候客户端会重新发送第一次握手的信息,直到超时或者成功收到第二次握手信息。如果第二次握手失败,同样客户端会重新发送信号,直到建立连接或者成功为止。这样建立连接是不存在问题的,不是说两次握手建立不了连接。问题的根源就是教科书上说的,如果仅仅只有两次握手,此时client已经连接超时失败,放弃连接了,这个时候超时的信号又到了服务端,服务第二次握手,认为建立了连接,服务器资源就被浪费了。如果是三次握手,就不存在这个问题了。因为客户端已经放弃了,服务端是不会收到第三次握手的,不会误认为连接建立成功了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容