HTTP协议简介

简介
  • HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写
  • HTTP协议是在 TCP/IP协议族的基础上运作并传输数据,HTTP 属于它内部的一个子集
  • HTTP 处于应用层, 默认使用80端口

1 HTTP的特点

简单快速无状态

  • 在一条通信线路上一端是客户端,另一端则是服务器端。


    image.png

  • 请求从客户端发出,最后服务器端响应该请求并返回。


    image.png

  • 每当有新的请求发送时,就会有对应的新响应产生。

  • 新的请求响应,与旧的请求响应没任何关系

  • 协议本身并不保留之前一切的请求或响应报文的信息。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把 HTTP 协议设计成如此简单的。


    image.png

2 Http报文

  • Http报文包括请求报文和响应报文两大部分
  • 其中请求报文由请求行(request line)、请求头(header)、空行和请求体四个部分组成。
  • 响应报文由状态行、响应头部、空行和响应体四个部分组成

请求行

用来说明请求类型、要访问的资源以及所使用的HTTP版本。

请求头

它包含许多有关的环境和请求正文的有用信息。其中比如

Host:表示主机名,虚拟主机。

Connection:HTTP/1.1增加的,使用keepalive,即持久连接,一个连接可以发多个请求。

User-Agent:请求发出者,兼容性以及定制化需求。

Content-Type: text/html  示报文主体的对象类型

空行

表示请求头已经结束,接下来的是请求正文。

请求体

承载请求内容的地方


image.png

3 HTTP请求方法

  • GET:获取资源
  • POST: 传输实体主体
  • PUT 更新内容
  • HEAD:获取头部信息
  • DELETE:删除文件
  • OPTIONS:询问支持的方法
  • TRACE:追踪路径 不常用
  • CONNECT:要求用隧道协议连接代理

4 HTTP请求相应状态码

  • 1xx:接收的请求正在处理。

  • 2xx:请求正常处理完毕。

    • 200 ok
    • 204 NO Content 请求处理成功,但没资源返回
    • 206 Partial Content 该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET 请求。响应报文中包含由 Content-Range 指定范围的实体内容
  • 3xx:重定向。

    • 301 Moved Permanently 永久性重定向。表示请求的资源已被分配了新的 URI,以后应使用资源现在所指的 URI。
    • 302 Found 临时性重定向。表示请求的资源已被分配了新的 URI,本次能使用新的 URI 访问。
    • 303 See Other 同302功能相同,特指应使用 GET
      方法定向获取请求的资源
    • 304 Not Modified 找到资源,但不符合条件:含 If-Match,If-Modified Since,If-None-Match,If-Range,If-Unmodified-Since
  • 4xx:客户端错误——请求有语法错误或请求无法实现。

    • 400 Bad Request 请求报文中存在语法错误。
    • 401 Unauthorized 认证失败
    • 403 Forbidden 请求资源的访问被服务器拒绝了
    • 404 Not Found
  • 5xx:服务器端错误——服务器未能实现合法的请求。

    • 500 Internal Server Error 服务器端在执行请求时发生了错误
    • 503 Service Unavailable 表明服务器暂时处于超负载或正在进行停机维护

5 持久连接节省通信量

HTTP 协议的初始版本中,每进行一次 HTTP 通信就要断开一次 TCP连接。

image.png

以当年的通信情况来说,因为都是些容量很小的文本传输,所以即使这样也没有多大问题。可随着 HTTP 的普及,文档中包含大量图片的情况多了起来。比如,使用浏览器浏览一个包含多张图片的 HTML页面时,在发送请求访问 HTML页面资源的同时,也会请求该 HTML页面里包含的其他资源。因此,每次的请求都会造成无谓的 TCP 连接建立和断开,增加通信量的开销。

image.png

为解决上述 TCP 连接的问题,HTTP/1.1 和一部分的 HTTP/1.0 想出了持久连接(HTTP Persistent Connections,也称为 HTTP keep-alive 或 HTTP connection reuse)的方法。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。

image.png
持久连接的好处在于减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。另外,减少开销的那部分时间,使HTTP 请求和响应能够更早地结束,这样 Web 页面的显示速度也就相应提高了。

《图解HTTP》

posted @ 2018-11-23 16:42  悠拽的无双文士  阅读(247)  评论(0)    收藏  举报