图解HTTP(一)简单HTTP协议及报文

一、HTTP基础:HyperText Transfer Protocol

1.诞生:

  • HTML ( HyperText Markup Language ,超文本标记语言)
  • HTTP Protocol
  • URL (Uniform Resource Locator)

2.HTTP协议版本:

  • HTTP/0.9 1990
  • HTTP/1.0 1996.5(至今仍在使用)
  • HTTP/1.1 1997.1(目前主流版本)
  • HTTP/2.0 2015.5(在2017年5月,排名前一千万的网站中,有13.7%支持了HTTP/2)

3.TCP/IP基础:

  • 3次握手

4.URL( Uniform Resource Locator )和URI(Uniform Resource Identifier)

二、简单HTTP协议

1.无状态协议

HTTP不保留之前的请求或响应信息,保证了协议的可伸缩性,但对于需要有状态的应用可以通过引入Cookie实现状态保存

2.HTTP方法:

  • GET:获取资源
  • POST:向指定资源提交数据
  • PUT:向指定资源位置上传其最新内容
  • HEAD:获取资源元数据(与GET类似,但不返回报文主体)
  • DELETE:删除指定资源
  • OPTIONS(仅1.1及以后):使服务器传回该资源所支持的所有HTTP请求方法
  • TRACE(仅1.1及以后):回显服务器收到的请求,主要用于测试或诊断
  • CONNECT(仅1.1及以后):要求在与代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信(例如:SSL和TLS)

4.持久连接

  • 持久连接( HTTP Persistent Connections ,也称为 HTTP keep-alive 或 HTTP connection reuse )
    对于非持久连接,每次HTTP通信都要建立TCP连接

    而持久连接则可以对TCP连接进行复用,减少耗时,提高页面响应速度

  • 管线化
    管线化在持久连接的基础上进一步实现了多个请求并行,不用等到上一个请求响应后再发送下一个请求

5.Cookie状态管理

通过响应头中使用Set-Cookie来对客户端Cookie进行操作

三、HTTP报文

1.请求和响应报文结构


2.编码提升传输速率

  • 压缩传输编码:gzip,compress,deflate,identity(不进行编码)
  • 分块传输编码:将大容量数据分割,在传输大容量数据时浏览器可以逐步显示页面

3.多部分对象集合:

  • 类型:multipart/form-data用于表单文件上传,multipart/byteranges响应报文包含多个范围内容

4.部分内容获取:

通过部分内容获取可以实现文件的断点续传。客户端指定要获取资源的起始和结束位置,服务端返回指定范围资源

5.内容协商:

内容协商主要协商以下首部字段

协商通常有3中类型

  • 服务器驱动协商:服务器根据请求的首部决定
  • 客户端驱动协商:用户手动或JS决定
  • 透明协商: