一. WWW

欧洲核子研究组织蒂姆.博纳世.李的的知识共享假设
通过URL(UniForm Resource Location)统一资源定位符, HTTP通讯协议, HTML(HyperText Marked Language)超文本表示语言, 全世界分享知识.

1.1 URL

image.png

1.2 URI

URL是URI的子集
image.png

二. HTTP概述

  • 用于服务端和客户端之间通讯
  • 通过请求和响应进行通讯
  • HTTP是不保存状态的协议, 协议本身不保留任何信息
    HTTP1.1加入了cookie, 就可以保存管理状态了
  • 通过URL定位资源
  • 告知服务器意图的HTTP方法
    • GET: 获取资源
    • POST: 传输实体
    • PUT: 传送文件, 但是由于不带验证机制, 一般网站不用
    • HEAD: 和GET方法一样, 只是不返回报文主体, 用于确认URI的有效性
    • DELETE: 和PUT类似, 用来删除文件, 同样由于安全问题, 一般不用
    • TRACE: 通常不用
    • CONNECT: 用隧道协议连接代理, 使用SSL和TLS安全协议, 加密后, 经网络隧道传输
  • 持久连接节省通讯量
    • 持久连接
      初期由于文本传输, 数据量小, 每次HTTP通讯就断开一次TCP连接
      后期建立一次TCP连接, 会有多次HTTP请求和响应
      image.png
    • 管线法
      image.png
  • 使用Cookie管理状态

    三. HTTP报文内的信息

    3.1 HTTP报文

    image.png

    3.1.1 请求报文

    image.png
    image.png

  • 请求行: 包含用于请求的方法,请求 URI 和 HTTP 版本。

  • 首部字段: 包含表示请求和响应的各种条件和属性的各类首部。

    3.1.2 响应报文

    image.png
    image.png

  • 状态行: 表明响应结果的状态码,原因短语和 HTTP 版本

  • 其他: 可能包含 HTTP 的 RFC 里未定义的首部(Cookie 等)

    3.2 编码提升传输速率

    编码会有CPU的消耗, 减少网络的使用资源

    3.2.1 报文主体和实体主体的差异

    报文: HTTP基本单位
    实体: 由首部和主体组成

    3.2.1 压缩传输的内容编码

  • gzip

  • compress
  • deflate
  • identity

    3.3.3 分割发送的分块传输编码

    压缩传输的内容编码,每块会用十六进制标记大小, 最后一块会使用0(CR+LF)标记
    image.png

    3.3 发送多种数据

  • multipart/form-data
    web表单

  • multipart/byteranges
    状态码206响应报文, 包含多个范围的内容使用

    3.4 获取部分内容的范围请求

    image.png

    3.5 内容协商返回最合适的内容

    image.png

  • 服务器驱动协商(Server-driven Negotiation)

  • 客户端驱动协商(Agent-driven Negotiation)
  • 透明协商(Transparent Negotiation)
    是服务器驱动和客户端驱动的结合体

四. HTTP状态码

4.1 状态码告知请求结果

第一位指定响应类别

4.2 2XX 成功

4.2.1 200->OK

image.png

4.2.2 204->No Content

image.png

4.2.3 206->Partial Content

通过Content-Range控制
image.png

4.3 3XX 重定向