HTTP 协议

HTTP 概述
【HTTP 协议】HTTP是一种能够获取如 HTML 这样的网络资源的 protocol(通讯协议)。它是在 Web 上进行数据交换的基础,是一种 client-server 协议,也就是说,请求通常是由像浏览器这样的接受方发起的。一个完整的Web文档通常是由不同的子文档拼接而成的,像是文本、布局描述、图片、视频、脚本等等。
HTTP 协议
文章图片

HTTP 请求响应过程
当我访问 https://segmentfault.com/writ... 时,浏览器会进行如下操作:

  • DNS服务器会首先进行域名的映射,找到访问 https://segmentfault.com? 所在的地址,然后HTTP 客户端进程在 80 端口发起一个到服务器 https://segmentfault.com 的 TCP 连接(80 端口是 HTTP 的默认端口)。在客户和服务器进程中都会有一个套接字与其相连。
  • HTTP 客户端通过它的套接字向服务器发送一个 HTTP 请求报文。报文中会请求 /write 的资源
  • HTTP 服务器通过它的套接字接受该报文,进行请求的解析工作,并从其存储器(RAM 或磁盘)中检索出对象 https://segmentfault.com/writ...,然后把检索出来的对象进行封装,封装到 HTTP 响应报文中,并通过套接字向客户进行发送。
  • HTTP 服务器随即通知 TCP 断开 TCP 连接,实际上是需要等到客户接受完响应报文后才会断开 TCP 连接。
  • HTTP 客户端接受完响应报文后,TCP 连接会关闭。HTTP 客户端从响应中提取出报文中是一个 HTML 响应文件,并检查该 HTML 文件,然后循环检查报文中其他内部对象。
  • 检查完成后,HTTP 客户端会把对应的资源通过显示器呈现给用户。
请求头部
请求头部包含如下信息:
HTTP 协议
文章图片

响应头部
响应头包含如下信息:
HTTP 协议
文章图片

首部字段 Transfer-Encoding 规定了传输报文主体时采用的编码方式。
HTTP 版本
HTTP/1.1
  • HTTP/1.1 引入了更多的缓存控制策略,如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等
  • HTTP/1.1 允许范围请求,即在请求头中加入Range头部,范围请求在传送大的媒体文件,或者与文件下载的断点续传功能搭配使用时非常有用。
  • HTTP/1.1 的请求消息和响应消息都必须包含Host头部,以区分同一个物理主机中的不同虚拟主机的域名
  • HTTP/1.1 默认开启持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。

    推荐阅读