Open ycshill opened 5 years ago
本篇博客是读完《图解HTTP》之后,摘录和总结其中个人感觉需要知道的知识点,因为这部分知识点比较枯燥乏味,所以本篇博客力求简单,明了,有趣。
WEB 及其网络的基础 确保Web安全的HTTPS 确认访问用户身份的认证 基于HTTP追加协议
ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。
接下来的图,主要说明各个层的作用和各层涉及到协议:
TCP 协议是提供可靠的字节流服务;
提供域名和IP地址之间的解析服务
URI 是统一资源标识符,而 URL 是统一资源定位符
HTTP-超文本传输协议,是位于计算机网络中的应用层,HTTP是建立在TCP协议之上,所以HTTP协议的瓶颈及其优化技巧都是基于TCP协议本身的特性,例如tcp建立连接的3次握手和断开连接的4次挥手以及每次建立连接带来的RTT延迟时间;
HTTP 发展起来是因为在互联网的黎明时期,CERN(欧洲核子研究组织)的蒂姆.博纳斯-李 博士提出了一种让远隔两地的研究者们共享知识的设想。最初的设想的基本理念是:借助多文档之间互相关联行程超文本,连成互相参阅的WWW(万维网)。后来提出了三项技术:作为页面的文本标记语言-HTML(超文本标记语言);作为文档传输协议的-HTTP(超文本传输协议);指定文档所在地址的URL(统一资源定位符);
由于 HTTP 的以上缺点,为了确保安全就诞生了HTTPS。简单的说 HTTPS = HTTP + 加密 + 认证 + 完整性保护。HTTPS并不是一种新的协议,只是HTTP通信接口部分用SSL和TLS协议代替而已。例如,HTTP直接和TCP通信,使用了SSL时候,就会演变为先和SSL通信,再由SSL和TCP通信。
https的通信流程(阮大神的一篇博文):http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
SSL客户端认证和表单认证结合,SSL客户端认证来认证客户端的计算机,而表单认证来确定用户本人的行为;
在应用层和传输层之间增加了一个二进制分帧层,以达到“在不改动HTTP语义,HTTP方法、状态码、URI机及首部字段的情况下,突破HTTP/1.1 的性能限制,改进传输性能,实现低延迟和高吞吐量”;
在二进制分帧层上,HTTP2.0 会将所有的信息分割为更小的消息和帧,并对它们采用二进制格式的编码,其中HTTP1.X 的首部信息会被封装到Headers帧,而request body则封装到Data帧里。
HTTP2.0 通信都在一个连接上完成,这个连接可以承载任意数量的双向数据流。每个数据流以消息的形式发送,而消息又是由一个或者多个帧组成,这些帧可以乱序发送,然后再根据每个帧首部的流标识符重新组装;
HTTP/2.0规定了在客户端和服务器端会使用并且维护「首部表」来跟踪和存储之前发送的键值对,对于相同的头部,不必再通过请求发送,只需发送一次。
如果请求中不包含首部,那么首部的开销就是零字节,此时所有的首部都自动使用之前请求发送的首部;如果首部发变化了,那么只需要发送变化了数据在Headers帧里面,新增或者修改的首部帧会被追加到“首部表”。首部表在HTTP2.0连接存续4qi期内始终的存在,由客户端和服务器共同渐进地更新。
HTTP2.0所有的通信都是在一个TCP连接上完成的。HTTP2.0 把 HTTP 协议通信的基本单位缩小为一个个的帧,这些帧对应着逻辑流中的消息。这些帧并行地同在一个TCP连接上双向交换消息。也就是说同一链接上有多个不同方向的数据流在传输。客户端可以一边乱序发送streams,也可以一边接收服务器的响应,而服务器端同理。
优点 HTTP性能的关键在于低延迟,而不是高带宽。大多数的HTTP连接的时间短,而且是突发性的,但是TCP只在长时间连接传输大块数据时效率才最高。HTTP2.0 通过让所有的数据流公用一个连接,可以更有效地使用TCP连接,让高带宽也能真正服务于HTTP的性能。 同时,单链接多资源的方式,有如下好处:
因此, “资源合并减少请求”的优化手段对于HTTP2.0来说是没有效果的。
既然所有资源都是并行发送,那么就需要“优先级”的概念了,这样就可以对重要的文件进行先传输,加速页面的渲染。
在 HTTP2.0中,服务器推送是指客户端请求之前发送数据的机制。
虽然 HTTP2.0 协议并没有声明一定要使用SSL,但是Google Chrome 等浏览器强制要使用 HTTP2.0 必须使用SSL。
sixsixsix!
学习学习
前言
本篇博客是读完《图解HTTP》之后,摘录和总结其中个人感觉需要知道的知识点,因为这部分知识点比较枯燥乏味,所以本篇博客力求简单,明了,有趣。
WEB 及其网络的基础
TCP/IP 分层管理
ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。![此处输入图片的描述](http://assets.processon.com/chart_image/5be10318e4b067b9db56f117.png)
接下来的图,主要说明各个层的作用和各层涉及到协议:![此处输入图片的描述](http://assets.processon.com/chart_image/5bab54a8e4b0bd4db94d2783.png)
常用协议:IP、TCP、DNS
IP协议(网路层)
TCP 协议(传输层)
TCP 协议是提供可靠的字节流服务;
DNS 协议
提供域名和IP地址之间的解析服务![此处输入图片的描述](https://user-images.githubusercontent.com/16410254/47488827-ba1d7280-d877-11e8-936e-6414ea75dd63.jpg)
TCP/IP 通信传输流
URL 和 URI 格式
URI 是统一资源标识符,而 URL 是统一资源定位符![此处输入图片的描述](https://user-images.githubusercontent.com/16410254/47490021-71b38400-d87a-11e8-8ea1-ec6975cfbd3e.jpg)
web客户端访问资源的流程
HTTP协议简介
定义
HTTP-超文本传输协议,是位于计算机网络中的应用层,HTTP是建立在TCP协议之上,所以HTTP协议的瓶颈及其优化技巧都是基于TCP协议本身的特性,例如tcp建立连接的3次握手和断开连接的4次挥手以及每次建立连接带来的RTT延迟时间;
发展历史
HTTP 发展起来是因为在互联网的黎明时期,CERN(欧洲核子研究组织)的蒂姆.博纳斯-李 博士提出了一种让远隔两地的研究者们共享知识的设想。最初的设想的基本理念是:借助多文档之间互相关联行程超文本,连成互相参阅的WWW(万维网)。后来提出了三项技术:作为页面的文本标记语言-HTML(超文本标记语言);作为文档传输协议的-HTTP(超文本传输协议);指定文档所在地址的URL(统一资源定位符);
确保Web安全的HTTPS
HTTP的缺点
1. 通信使用明文(不加密),可能会被窃听
2. 不验证通信方的身份,可能遭到伪装
3. 无法证明报文的完整性,可能已遭篡改
HTTPS的诞生
由于 HTTP 的以上缺点,为了确保安全就诞生了HTTPS。简单的说 HTTPS = HTTP + 加密 + 认证 + 完整性保护。HTTPS并不是一种新的协议,只是HTTP通信接口部分用SSL和TLS协议代替而已。例如,HTTP直接和TCP通信,使用了SSL时候,就会演变为先和SSL通信,再由SSL和TCP通信。![此处输入图片的描述](https://user-images.githubusercontent.com/16410254/47700227-b2334900-dc50-11e8-9d4c-3a343bf11d38.png)
常用的加密技术
共享密钥加密/对称密钥加密
公开密钥加密/非对称加密
混合加密机制
数字签名和证书
数字签名
证书
总结
https的通信流程(阮大神的一篇博文):http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
确认访问用户身份的认证
何为认证
SSL 客户端认证
基于表单的认证
双因素认证
SSL客户端认证和表单认证结合,SSL客户端认证来认证客户端的计算机,而表单认证来确定用户本人的行为;
基于HTTP追加协议
HTTP 通信的瓶颈
追加的几种协议:
WebSocket
HTTP/2.0
支持HTTP2.0的条件
HTTP/2.0 改进点
HTTP/2.0 性能增强的核心:二进制分帧
在应用层和传输层之间增加了一个二进制分帧层,以达到“在不改动HTTP语义,HTTP方法、状态码、URI机及首部字段的情况下,突破HTTP/1.1 的性能限制,改进传输性能,实现低延迟和高吞吐量”;![此处输入图片的描述](https://user-images.githubusercontent.com/16410254/47982881-53684680-e10c-11e8-9385-3c90b6cbba94.jpg)
在二进制分帧层上,HTTP2.0 会将所有的信息分割为更小的消息和帧,并对它们采用二进制格式的编码,其中HTTP1.X 的首部信息会被封装到Headers帧,而request body则封装到Data帧里。
HTTP2.0 通信都在一个连接上完成,这个连接可以承载任意数量的双向数据流。每个数据流以消息的形式发送,而消息又是由一个或者多个帧组成,这些帧可以乱序发送,然后再根据每个帧首部的流标识符重新组装;
压缩头部
HTTP/2.0规定了在客户端和服务器端会使用并且维护「首部表」来跟踪和存储之前发送的键值对,对于相同的头部,不必再通过请求发送,只需发送一次。
如果请求中不包含首部,那么首部的开销就是零字节,此时所有的首部都自动使用之前请求发送的首部;如果首部发变化了,那么只需要发送变化了数据在Headers帧里面,新增或者修改的首部帧会被追加到“首部表”。首部表在HTTP2.0连接存续4qi期内始终的存在,由客户端和服务器共同渐进地更新。
多路复用
HTTP2.0所有的通信都是在一个TCP连接上完成的。HTTP2.0 把 HTTP 协议通信的基本单位缩小为一个个的帧,这些帧对应着逻辑流中的消息。这些帧并行地同在一个TCP连接上双向交换消息。也就是说同一链接上有多个不同方向的数据流在传输。客户端可以一边乱序发送streams,也可以一边接收服务器的响应,而服务器端同理。
优点 HTTP性能的关键在于低延迟,而不是高带宽。大多数的HTTP连接的时间短,而且是突发性的,但是TCP只在长时间连接传输大块数据时效率才最高。HTTP2.0 通过让所有的数据流公用一个连接,可以更有效地使用TCP连接,让高带宽也能真正服务于HTTP的性能。 同时,单链接多资源的方式,有如下好处:
因此, “资源合并减少请求”的优化手段对于HTTP2.0来说是没有效果的。
请求优先级
既然所有资源都是并行发送,那么就需要“优先级”的概念了,这样就可以对重要的文件进行先传输,加速页面的渲染。
服务器推送
在 HTTP2.0中,服务器推送是指客户端请求之前发送数据的机制。
强制 SSL
虽然 HTTP2.0 协议并没有声明一定要使用SSL,但是Google Chrome 等浏览器强制要使用 HTTP2.0 必须使用SSL。