三次握手四次挥手与http请求(笔记)

http请求实际上是 TCP连接。

是的,HTTP请求实际上是通过TCP(传输控制协议)连接来传输的。HTTP(超文本传输协议)是一种应用层协议,它定义了客户端(如浏览器)和服务器之间交换数据的格式。然而,HTTP本身并不直接处理网络连接的建立和维持,这是由TCP协议来完成的

以下是HTTP请求通过TCP连接传输的基本步骤:

1. **三次握手**:客户端和服务器通过TCP协议进行三次握手来建立连接。这个过程包括以下步骤:

  - 客户端发送一个SYN(同步序列编号)包到服务器,并进入SYN_SENT状态。

  - 服务器收到SYN包,发送一个SYN+ACK(同步序列编号+确认)包作为响应,并进入SYN_RECEIVED状态。

  - 客户端收到SYN+ACK包后,发送一个ACK(确认)包,并进入ESTABLISHED状态。服务器收到ACK包后也进入ESTABLISHED状态,此时连接建立完成。(三次互通之后才建立起连接传输数据

三次握手

问:为什么是三次握手?不是两次、四次?

答:

三次握手的原因:

三次握手才可以阻止重复历史连接的初始化(主要原因);

三次握手才可以同步双方的初始序列号;

三次握手才可以避免资源浪费;

如果是两次握手连接,就无法阻止历史连接,浪费了服务端的资源。

可以看到,如果采用两次握手建立 TCP 连接的场景下,服务端在向客户端发送数据前,并没有阻止掉历史连接,导致服务端建立了一个历史连接又白白发送了数据,妥妥地浪费了服务端的资源

因此,要解决这种现象,最好就是在服务端发送数据前,也就是建立连接之前,要阻止掉历史连接,这样就不会造成资源浪费,而要实现这个功能,就需要三次握手。(即多建立了一个没用的连接

所以,TCP 使用三次握手建立连接的最主要原因是防止「历史连接」初始化了连接。

四次的话没必要。因为2、3次可以合成为一次。变为3次即可。

问:TCP报文失败重传?TCP如何实现可靠传输和流量控制

答:

以字节为单位的滑动窗口技术(主要解决流量控制);

重传机制;


2. **发送HTTP请求**:一旦TCP连接建立,客户端就可以发送HTTP请求到服务器

3. **服务器响应**:服务器接收到HTTP请求后,处理请求并返回HTTP响应。

4. **四次挥手**:当数据交换完成后,客户端和服务器需要通过四次挥手来关闭连接。这个过程包括以下步骤:

  - 客户端发送一个FIN(结束)包,并进入FIN_WAIT_1状态。

  - 服务器收到FIN包后,发送一个ACK包,并进入CLOSE_WAIT状态。

  - 服务器发送一个FIN包,并进入LAST_ACK状态。

  - 客户端收到FIN包后,发送一个ACK包,并进入TIME_WAIT状态。服务器收到ACK包后,进入CLOSED状态,客户端在等待一段时间后也进入CLOSED状态。

四次挥手

通过这种方式,HTTP请求可以在TCP连接的保障下安全、可靠地传输。


参考文章:TCP 三次握手与四次挥手深入探究

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

推荐阅读更多精彩内容