登录
首页 >  Golang >  Go问答

http请求建立连接的时候为啥是tcp三次握手,而不是二次或者四次?

来源:SegmentFault

时间:2023-02-24 08:45:50 452浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《http请求建立连接的时候为啥是tcp三次握手,而不是二次或者四次?》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下go、Linux、shell、PHP、Node.js,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

面试被问到这样的问题,求大神指教?

正确答案

我简单点说吧。

无论多少次握手都不能满足传输的绝对可靠。
TCP的核心思想:保证数据可靠传输
其次:保证传输效率。

那么,就可以开始回答了:

为什么要握手(为什么不是2次握手)?

**为了保证传输的可靠。**
第一次握手CLIENT告诉SERVER“我将要开始传输数据了”。
第二次握手SERVER告诉CLIENT“我已经知道你将要传输数据了,我已经做好准备”。
第三次握手CLIENT告诉SERVER“我已经知道你已经知道'我知道你已经做好准备'”,SERVER端收到这个信号,开始传输数据。
但是此时CLIENT并不知道SERVER已经知道“CLIENT 已经知道SERVER已经知道”(有点绕,可以忽略这一句)。

为什么是3次而不是4次?

**为了提高传输的效率**
总之不管多少次握手,总会有一方不知道对方已经知道。因此为了传输效率,只要3次握手就认为已经可以开始传输数据,三次握手之后,
CLIENT和SERVER就进入ESTABLISHED状态,开始数据传输。

详情可以查看我的这篇博客:计算机网络五层协议——TCP协议实例图解

文中关于golang的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《http请求建立连接的时候为啥是tcp三次握手,而不是二次或者四次?》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表