HTTP

HTTP 1.0 到 2.0 的变迁

1.0 到 1.1

  • 添加了请求/响应头
  • 默认长连接:解决了TCP复用,每个TCP连接只允许一个请求通过,且要等待该请求返回后,才能继续后面的请求。
  • 断点续传:通过range 确认需要续传的片段,服务器端收到断点续传请求从指定位置开始传输,并在response header 中添加 content-range。对应状态码206
  • 增加多种缓存机制:是否CDN,协商缓存,浏览器强缓存等。
  • 增加身份验证信息字段

提升:并行可以到服务器最大连接数 / 浏览器能发出的最大并连接数(300 / 6 = 50)个

1.1 到 2.0

  • 增加多路复用:以流的方式传输,每个流都有自己的标识,通过这个唯一标识来进行响应。
  • 使用算法进行首部压缩:加快传输速度。
  • 服务器推送:对一个客户端请求发送多个响应。可以推送客户端没有请求的数据,提供缓存服务。

提升:无论多少访问都之建立1个HTTP连接,因此并能可以到Apache的最大连接数。

一次HTTP连接的请求过程

域名解析 -> TCP连接 -> HTTP请求 -> 响应HTTP请求,得到HTML代码 -> 解析代码并渲染。

域名解析的过程

以下逐级检查,如果没有就失败

a)      检索浏览器的DNS缓存

b)     检索操作系统的DNS缓存

c)      读取hosts文件是否有对应IP地址

d)     向首选DNS服务器发起域名解析请求。由运营商逐级查询,返回给系统,系统返回给浏览器。

e)      查找NetBois name cache一段时间内通讯过的计算机名和IP地址

f)       WINS服务器

g)     广播查找

h)     LMHOSTS文件

 

发起TCP连接

1024-65535间的一个随机端口向对应IP的80端口发起TCP请求。

必要的状态码

1xx: 信息性状态码

    100, 101

2xx: 成功状态码

    200:OK

3xx: 重定向状态码

    301: 永久重定向, Location响应首部的值仍为当前URL,因此为隐藏重定向;

    302: 临时重定向,显式重定向, Location响应首部的值为新的URL

    304:Not Modified  未修改,比如本地缓存的资源文件和服务器上比较时,发现并没有修改,服务器返回一个304状态码,

                        告诉浏览器,你不用请求该资源,直接使用本地的资源即可。

4xx: 客户端错误状态码

    404: Not Found  请求的URL资源并不存在

5xx: 服务器端错误状态码

    500: Internal Server Error  服务器内部错误

    502: Bad Gateway  前面代理服务器联系不到后端的服务器时出现

    504:Gateway Timeout  这个是代理能联系到后端的服务器,但是后端的服务器在规定的时间内没有给代理服务器响应

 

posted @ 2019-04-14 09:17  森淼clover  阅读(125)  评论(0编辑  收藏  举报