HTTP三次握手

  • 在客户端和服务器之间进行HTTP的发送和请求的过程中,需要创建一个TCP connection的东西。
  • 因为HTTP不存在连接这个概念的,只有请求和响应这个概念,请求和响应都是数据包,需要经过一个传输的通道的,这个传输的通道就在TCP里面创建了一个从客户端发起和服务端接收的这样一个连接,这个连接可以一直保持在这里,http请求就是在这个连接的基础上来发送的。因此在一个TCP连接上就可以发送多个HTTP请求。
  • 在HTTP1.0中,是在创建http请求的时候就创建TCP连接,请求发送过去服务器响应以后TCP连接就关闭了。
  • 在HTTP1.1中,可以声明这个连接可以一直保持在那里,就是第一个请求发送以后这个连接不关闭,后续HTTP请求可以继续使用这个连接。
  • 因为TCP连接在创建的过程中是有三次握手这么一个消耗的。
  • 在HTTP2.0里面,TCP连接中的HTTP请求是可以并发的,即一个用户向一个服务器发起一个网络请求的时候,只需要一个TCP连接。

1.三次握手

HTTP三次握手

 

  • 客户端发起一个创建连接的数据包的请求。
    • SYN:标志位。表示这是一个创建请求的数据包
    • Seq:数字,一般为1
  • 服务端接收到这个数据包。就会开启一个TCP socket的端口,端口开启以后返回给客户端
    • SYN:标志位。
    • ACK:客户端的SYN+1。
    • Seq:服务端的Seq
  • 客户端拿到了。继续返回
    • ACK
    • Seq

为什么要有三次握手:

  • 防止服务端开启无用的连接。因为网络传输是有延时的

HTTP三次握手

上一篇:mvc 上传文件


下一篇:【AJAX、JSON】