在HTTP/1.1中
建立连接过程遵循以下步骤:
-
建立TCP连接:客户端通过三次握手建立TCP连接。
-
发送请求:客户端向服务器发送一个HTTP请求报文。
-
服务器响应:服务器收到请求后,返回一个HTTP响应报文。
-
客户端接收响应:客户端收到响应后,根据响应中的状态码判断请求是否成功。
-
关闭连接:如果响应中包含 Connection: close 头部,那么连接关闭,否则保持连接,可以继续发送请求。
在HTTP/2中
建立连接过程使用了多路复用,可以在一个连接上同时处理多个请求和响应,具体过程如下:
-
客户端和服务器建立TCP连接。
-
客户端发送一个HTTP/2的SETTINGS帧,其中包含一些配置信息,如帧的大小和流的并发数量等。
-
服务器返回一个HTTP/2的SETTINGS帧,确认了客户端发送的设置。
-
客户端发送一个HTTP/2的HEADERS帧,其中包含了第一个请求的信息,同时还包含了一个唯一的标识符,称为流ID。
-
服务器返回一个HTTP/2的HEADERS帧,其中包含了响应的信息,同时也包含了与请求相同的流ID。
-
客户端可以在同一个连接上发送多个请求和响应,每个请求和响应都包含一个流ID,用于标识请求和响应之间的关系。
-
当客户端或服务器想要关闭连接时,它可以发送一个HTTP/2的GOAWAY帧,表示不再接受新的请求或响应,并且将连接关闭。