- 在客户端和服务器之间进行HTTP的发送和请求的过程中,需要创建一个TCP connection的东西。
- 因为HTTP不存在连接这个概念的,只有请求和响应这个概念,请求和响应都是数据包,需要经过一个传输的通道的,这个传输的通道就在TCP里面创建了一个从客户端发起和服务端接收的这样一个连接,这个连接可以一直保持在这里,http请求就是在这个连接的基础上来发送的。因此在一个TCP连接上就可以发送多个HTTP请求。
- 在HTTP1.0中,是在创建http请求的时候就创建TCP连接,请求发送过去服务器响应以后TCP连接就关闭了。
- 在HTTP1.1中,可以声明这个连接可以一直保持在那里,就是第一个请求发送以后这个连接不关闭,后续HTTP请求可以继续使用这个连接。
- 因为TCP连接在创建的过程中是有三次握手这么一个消耗的。
- 在HTTP2.0里面,TCP连接中的HTTP请求是可以并发的,即一个用户向一个服务器发起一个网络请求的时候,只需要一个TCP连接。
1.三次握手
- 客户端发起一个创建连接的数据包的请求。
- SYN:标志位。表示这是一个创建请求的数据包
- Seq:数字,一般为1
- 服务端接收到这个数据包。就会开启一个TCP socket的端口,端口开启以后返回给客户端
- SYN:标志位。
- ACK:客户端的SYN+1。
- Seq:服务端的Seq
- 客户端拿到了。继续返回
- ACK
- Seq
为什么要有三次握手:
- 防止服务端开启无用的连接。因为网络传输是有延时的