初识 HTTP 协议 | 青训营

40 阅读3分钟

HTTP 协议的基本定义

HTTP(Hypertext Transfer Protocol)是一种用于传输超媒体文档(如 HTML)的应用层协议。它是互联网上应用最为广泛的协议之一,基于客户端-服务端的架构模式,并通过请求-响应的方式进行通信。HTTP 使用 TCP/IP 协议作为传输协议,默认使用80端口。

HTTP 协议主要特征

  1. 简单性:HTTP 命令和报文格式相对简单,易于理解和实现。它基于一组规则,定义了客户端和服务器之间进行通信所需的语义和语法。
  2. 无连接:每次请求-响应过程完成后,连接会被关闭,服务器不会保留任何关于客户端的状态信息。这意味着服务器不会记住之前的请求,客户端需要重新发送所有必要的信息。
  3. 无状态:每个请求都是独立的,服务器不会记录之前请求的信息,无法跟踪用户的状态。这导致了无法记住用户的身份认证,为了维护状态,引入了 Cookie 和 Session 技术。
  4. 可扩展性:通过头部字段和方法的扩展,可以支持新的功能和行为。HTTP 头部允许传递附加信息,使得协议具有良好的灵活性,可适应不同的需求和场景。

HTTP 协议发展历程

  1. HTTP/0.9:最早版本的 HTTP,于1991年发布,只支持 GET 方法,仅能传输纯文本HTML资源。
  2. HTTP/1.0:于1996年发布,引入了更多的请求方法(GET、POST、HEAD),支持多种媒体类型,并且能传输二进制文件。但每次请求都需要建立新的 TCP 连接,效率较低。
  3. HTTP/1.1:于1999年发布,引入了持久连接和管道化技术,减少了连接建立的开销,提高了性能。增加了更多的请求方法、头部字段和状态码,提供了更丰富的功能。
  4. HTTP/2:于2015年发布,引入了二进制传输、多路复用、头部压缩等特性,进一步提升了性能和效率。它改进了之前版本中的一些限制,优化了页面加载速度和网络利用率。
  5. HTTP/3:基于 QUIC 协议,于2020年发布,进一步优化了性能,实现了快速的传输和可靠的连接。它使用 UDP 作为传输协议,解决了 TCP 在高延迟和丢包情况下的性能问题。

HTTP 协议的报文结构

HTTP 报文分为请求报文和响应报文:

  1. 请求报文由请求行、请求头部和请求主体组成。请求行包括方法(GET、POST、PUT等)、URI(统一资源标识符)和协议版本。请求头部包含关于请求的附加信息,如 Host、User-Agent、Cookie 等。请求主体可选,用于传输数据。

    GET /index.html HTTP/1.1
    Host: example.com
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36
    
    [请求主体]
    
  2. 响应报文由状态行、响应头部和响应主体组成。状态行包括协议版本、状态码和状态信息。响应头部包含关于响应的附加信息,如 Content-Type、Content-Length 等。响应主体包含服务器返回的实际数据。

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 1024
    
    [响应主体]