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 这个是代理能联系到后端的服务器,但是后端的服务器在规定的时间内没有给代理服务器响应