HTTP的发展| 豆包MarsCode AI 刷题

65 阅读2分钟

HTTP(续)

HTTP1.0

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。它定义了客户端和服务器之间交换数据的格式和传输方式。HTTP协议是互联网上应用最广泛的协议之一,主要用于Web浏览器和服务器之间的通信。

HTTP1.0对比之前:

  • 增加了 HEAD、POST 等新方法。
  • 增加了响应状态码。
  • 引入了头部,即请求头和响应头。
  • 在请求中加入了 HTTP 版本号。
  • 引入了 Content-Type ,使得传输的数据不再限于文本。

HTTP1.1

  • HTTP1.1在HTTP1.0的基础上增加了Host头处理,在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request) .
  • HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,其中长连接也就是对应在HTTP1.1中的Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

HTTPS

HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的TLS加密传输协议。 HTTP和HTTPS使用的是完全不同的连接方式,用的默认端口也不一样,前者是80,后者是443. HTTPS的连接很简单,HTTPS协议是由TLS+HTTP协议构建的 可进行加密传输、身份认证的网络协议,比HTTP协议安全。

HTTP2.0

  • HTTP2.0是二进制协议,不再是纯文本
  • HTTP2.0沿用了HTTPS的TLS加密
  • HTTP2.0采用多路复用技术,HTTP1.1虽然引入长连接,可以让客户端同时发送多个请求和响应,但是有可能造成队头阻塞的问题,HTTP2.0的多路复用技术在发送数据时增加了一个序号,如果发生丢包,则只需重传丢失的包即可。

HTTP3.0

  • HTTP3.0是基于UDP的传输协议,只需一次握手,传输速度更快,使用QUIC。
  • HTTP3.0优化了重传策略,在发送数据包时,初始与重传的每个封包都改用一个新的编号,每一个编号都唯一且严格递增,这样每次在收到ACK时,就可以依据编号明确的判断这个ACK是来自初始封包或者是重传封包。