# 二.http(二)

# 1. HTTP 协议和 TCP 协议

# 1.1. 长链接

# 1.2. 管线化

# 2. URI 和 URL

# 2.1 URI

URI(Uniform Resource Identifier)是统一资源标识符,在某个规则下能把这个资源独一无二标示出来,比如人的身份证号

  • Uniform 不用根据上下文来识别资源指定的访问方式
  • Resource 可以标识的任何东西
  • Identifier 表示可标识的对象

# 2.2 URL

统一资源定位符,表示资源的地点,URL 时使用浏览器访问 WEB 页面时需啊哟输入的网页地址

  • Uniform 不用根据上下文来识别资源指定的访问方式
  • Resource 可以标识的任何东西
  • Location 定位

# 2.2.1 URL 的格式

  • 协议类型
  • 登录信息
  • 服务器地址
  • 服务器端口号
  • 带层次的文件路径
  • 查询字符串
  • 片段标识符

# 3. HTTP

  • 请求的一方叫客户端,响应的一方叫服务器端
  • 通过请求和响应达成通信
  • HTTP 是一种不保存状态的协议

# 3.1 请求报文

  • 请求行
    • 方法
      • GET 获取资源
      • POST 向服务器端发送数据,传输实体主体
      • PUT 传输文件
      • HEAD 获取报文首部
      • DELETE 删除文件
      • OPTIONS 询问支持的方法
      • TRACE 追踪路径
      • 协议/版本号
      • URL
  • 请求头
    • 通用首部(General Header)
    • 请求首部(Request Header)
    • 响应首部(Response Header)
    • 实体首部(Entity Header Fields)
  • 请求体

# 3.2 响应报文

  • 响应行
  • 响应头
  • 响应体

# 3.3 编码

HTTP 可以在传输的过程中通过编码提升传输效率,但是会消耗更多的 CPU 时间

# 3.3.1 编码压缩

发送文件时可以先用 ZIP 压缩功能后再发送文件

  • gzip
  • compress
  • deflate
  • identify

# 3.3.2 分割发送的分块传输编码

请求的实体在尚未传输完成前浏览器不能显示。所以在传输大容量数据时,通过把数据分割成多块,能让浏览器逐步显示页面。

# 3.3.3 多部分对象集合

  • 一份报文主体中可以包含多类型实体
  • 使用 boundary 字符串来划分多部分对象指明的各类实体。在各个实体启始行之前插入--标记,多部分对象集合最后插入--标记
# 3.3.3.1 multiparty/form-data

上传表单时使用 multiparty/form-data

# 4. WEB 服务器

# 5. 首部

# 1. HTTP服务器

# 2. HTTP客户端