HTTP权威指南

HTTP权威指南

Posted by Ted on March 10, 2017

1、HTTP报文

从客户端发往服务器的HTTP报文称为请求报文,从服务器发往客户端的报文称为响应报文。二者格式很类似:

HTTP报文包含了三个部分:

  • 起始行

    第一行就是起始行,请求报文中用来说明要做什么,在响应报文中说明出现了什么情况

  • 首部字段

    起始行后面有0个或者多个首部字段,每个字段都是一个key:value的形式。首部的结束以一个空行结束

  • 主体

    空行之后就是可选的报文主体了,其中包含了所有类型的数据,请求主体中包含了要发送给服务器的数据,响应主体装载了要返回客户端的数据,起始行和首部字段都是结构化的,但是主体可以包含任意格式

2、一个完整的HTTP请求

  1. 浏览器先查看浏览器缓存-系统缓存-路由器缓存,若缓存中有,请略过中间步骤,直接跳到第9步~若没有,则按照下面的步骤进行操作。
  2. 浏览器通过DNS服务从url中解析出服务器的主机名,并将主机名转换成服务器的IP地址。
  3. 浏览器从url中解析出端口号,默认80
  4. 浏览器建立一条与服务器的tcp连接
  5. 浏览器通过tcp连接向服务器发送http请求,请求数据包。
  6. 服务器处理HTTP请求,返回响应。
  7. 浏览器检查HTTP响应是否为一个重定向(3XX结果状态码)、一个验证请求(401)、错误(4XX、5XX)等等,这些都需要根据具体情况分类处理。
  8. 浏览器接收HTTP响应并且可能关掉TCP连接,或者是重新建立连接使用新情求,获得新响应。
  9. 浏览器解码响应,如果响应可以缓存,则存入缓存。
  10. 浏览器显示HTML页面。
  11. 浏览器发送请求获取嵌入在HTML中的资源(html,css,javascript,图片,音乐······),对于未知类型,会弹出对话框。
  12. 浏览器发送异步请求。
  13. 页面全部渲染结束。

3、方法和状态码

方法是用来告诉服务器做什么事情的,状态码则用来告诉客户端,发生了什么事情