文章

HTTP

基本知识

定义

超文本传输协议(Hyper Text Transfer Protocol,HTTP)。

在TCP/IP协议族位置

TCP/IP协议族分为4层

  • 应用层 例如:DNS,DHCP,FTP,HTTP
  • 传输层 例如:TCP,UDP
  • 网络层 例如:IP,ICMP…
  • 数据链路层

http状态码

  类别 原因短语
1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Sever Error(服务器错误状态码) 服务器处理请求出错

http报文

请求报文

  • 请求行
  • 请求首部字段
  • 通用首部字段
  • 实体首部字段
  • 其他

响应报文

  • 状态行
  • 响应首部字段
  • 通用首部字段
  • 实体首部字段
  • 其他

http与https

HTTP 与 HTTPS 有哪些区别?

  1. HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
  2. HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
  3. HTTP 的端口号是 80,HTTPS 的端口号是 443。
  4. HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。

http演变

http1.1比http1.0的改进

  • 使用 TCP 长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。

    http1.0的缺点:必须为每个请求对象建立和维护一个新的TCP连接

  • 支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。

    但是,pipeline在接收response返回时,也必须依顺序接收,如果前一个请求遇到了阻塞,后面的请求即使已经处理完毕了,仍然需要等待阻塞的请求处理完毕。第一个请求阻塞后,后面的请求都需要等待,这也就是队头阻塞(Head of line blocking)。

http2比http1.1的改进

  • 头部压缩
    • HTTP/2 会压缩头(Header)如果你同时发出多个请求,他们的头是一样的或是相似的,那么,协议会帮你消除重复的部分
  • 二进制格式
    • 不在采用纯文本报文,使用二进制格式
    • 报文组成:
      • 头信息帧
      • 数据帧
  • 数据流
    • HTTP/2 的数据包不是按顺序发送的,同一个连接里面连续的数据包,可能属于不同的回应。因此,必须要对数据包做标记,指出它属于哪个回应。
    • 客户端还可以指定数据流的优先级。优先级高的请求,服务器就先响应该请求。
  • 多路复用
    • 得益于数据流,每个流可以传输不同请求的数据(二进制帧),即使一个请求被阻塞了,也不会影响别的请求
  • 服务器推送
本文由作者按照 CC BY 4.0 进行授权