自问自查
1. http 报文结构 请求行 响应行
2. 常见的报文首部字段
3. http 1.1,2.0 对比 1.0
4. https 过程 怎么验证证书正确性的
5. http请求方法
6. 域名,主机名?
7. DNS的优缺点
8. get post的区别
9. 状态码
10.Cookie ,Session,token
11.重定向和转发
文章目录
http报文
http首部
http 首部字段:
请求头:
If-Modified-Since,请求的资源在指定日期后发生了更新服务器才接受请求返回200
如果没修改 就返回 304未修改
if- Match:
If-None-Match, 只有当If-Match的字段值跟请求资源的ETag值不匹配时服务器才接受请求,利用它可以获取最新的资源。
Connection: Keep-Alive 保持连接
Cookie
host:主机
响应头:
Content-Type, 实体主体内对象的媒体类型 如Content-Type: text/html; charset=UTF-8。
last-modified : 最后修改
Set-Cookie:XXXXXXXXXXXXX“
http 1.1,2.0 对比 1.0
http1.0
HTTP/1.1默认持久连接
HTTP/1.0会断开,除非设置Connection: keep-alive
在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准
HTTP1.1则引入了更多的缓存控制策略例如Entity tag
If-None-Match
http2.0:
HTTP1.x有以下几个主要缺点:
1.
HTTP/1.0一次只允许在一个TCP连接上发起一个请求,因此客户端在需要发起多次请求时,通常会采用建立多连接来减少延迟。
2.
单向请求,只能由客户端发起。
3.
请求报文与响应报文首部信息冗余量大。
4.
数据未压缩,导致数据的传输量大。
SPDY目标是优化HTTP协议的性能,通过压缩、多路复用和优先级等技术,缩短网页的加载时间并提高安全性。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。
HTTP2.0特点:
二进制传输
HTTP2.0中所有加强性能的核心是二进制传输,在HTTP1.x中,我们是通过文本的方式传输数据。基于文本的方式传输数据存在很多缺陷,文本的表现形式有多样性,因此要做到健壮性考虑的场景必然有很多,但是二进制则不同,只有0和1的组合,因此选择了二进制传输,实现方便且健壮。
在HTTP2.0中引入了新的编码机制,所有传输的数据都会被分割,并采用二进制格式编码
为了保证HTTP不受影响,那就需要在应用层(HTTP2.0)和传输层(TCP or UDP)之间增加一个二进制分帧层。在二进制分帧层上,HTTP2.0会将所有传输的信息分为更小的消息和帧,并采用二进制格式编码,其中HTTP1.x的首部信息会被封装到Headers帧,而Request Body则封装到Data帧。
多路复用
在HTTP1.0中,当页面需要请求很多资源的时候,队头阻塞(Head of line blocking)会导致在达到最大请求时,资源需要等待其他资源请求完成后才能继续发送。
HTTP2.0中,有两个概念非常重要:帧(frame)和流(stream)。
帧是最小的数据单位,每个帧会标识出该帧属于哪个流,流是多个帧组成的数据流。
所谓多路复用,即在一个TCP连接中存在多个流,即可以同时发送多个请求,对端可以通过帧中的表示知道该帧属于哪个请求。在客户端,这些帧乱序发送,到对端后再根据每个帧首部的流标识符重新组装。通过该技术,可以避免HTTP旧版本的队头阻塞问题,极大提高传输性能。
Header压缩
在HTTP1.0中,我们使用文本的形式传输header,在header中携带cookie的话,每次都需要重复传输几百到几千的字节,这着实是一笔不小的开销。
在HTTP2.0中,我们使用了HPACK(HTTP2头部压缩算法)压缩格式对传输的header进行编码,减少了header的大小。并在两端维护了索引表,用于记录出现过的header,后面在传输过程中就可以传输已经记录过的header的键名,对端收到数据后就可以通过键名找到对应的值。
服务器Push
在HTTP2.0中,服务端可以在客户