We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
本篇博客是读完《图解HTTP》之后,摘录和总结其中个人感觉需要知道的知识点,因为这部分知识点比较枯燥乏味,所以本篇博客力求简单,明了,有趣。
WEB 及其网络的基础 确保Web安全的HTTPS 确认访问用户身份的认证 基于HTTP追加协议
ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。
接下来的图,主要说明各个层的作用和各层涉及到协议:
####IP协议(网路层)
####TCP 协议(传输层) TCP 协议是提供可靠的字节流服务;
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的性能。 同时,单链接多资源的方式,有如下好处:
可以减少服务器的压力,内训占用少,连接的吞吐量大;
由于 TCP 连接减少,使得网络阻塞的情况得以改观;
慢启动时间减少,拥塞和丢包恢复速度更快。
因此, “资源合并减少请求”的优化手段对于HTTP2.0来说是没有效果的。
既然所有资源都是并行发送,那么就需要“优先级”的概念了,这样就可以对重要的文件进行先传输,加速页面的渲染。
在 HTTP2.0中,服务器推送是指客户端请求之前发送数据的机制。
虽然 HTTP2.0 协议并没有声明一定要使用SSL,但是Google Chrome 等浏览器强制要使用 HTTP2.0 必须使用SSL。
The text was updated successfully, but these errors were encountered:
sixsixsix!
Sorry, something went wrong.
学习学习
No branches or pull requests
前言
本篇博客是读完《图解HTTP》之后,摘录和总结其中个人感觉需要知道的知识点,因为这部分知识点比较枯燥乏味,所以本篇博客力求简单,明了,有趣。
WEB 及其网络的基础
TCP/IP 分层管理
ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。
接下来的图,主要说明各个层的作用和各层涉及到协议:
常用协议:IP、TCP、DNS
####IP协议(网路层)
####TCP 协议(传输层)
TCP 协议是提供可靠的字节流服务;
通过三次握手建立连接:
四次挥手关闭连接:
####DNS 协议
提供域名和IP地址之间的解析服务
TCP/IP 通信传输流
URL 和 URI 格式
URI 是统一资源标识符,而 URL 是统一资源定位符
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通信。
常用的加密技术
共享密钥加密/对称密钥加密
公开密钥加密/非对称加密
混合加密机制
数字签名和证书
数字签名
一封信中,文末的签名是为了证明这封信是签名者写的,同理,数字签名也是为了证明某个消息是特定的某个人发的(有效性);同时,数字签名还能证明消息没有被篡改(完整性);
一般不对消息直接进行签名,而是对消息的哈希值进行签名。
证书
证书其实就是对公开加密方法中的公钥进行加密,是对公钥的合法性提供证明的技术;
可以使用数字认证机构(CA)和其他相关的机关颁发公开的密钥证书(就像是银行);
EV SSL证书可以证明作为通信一方的服务器是否规范,同时也可以确认服务器背后运营的企业是否是真实存在的。
证明服务器正在通信的对方始终是预料之内的客户端;
多数浏览器会将开发商发布版本的时候,会事先在内部植入常用的认证机关的公开密钥;
当用户私钥丢失或者被盗,认证机构需要对证书进行作废;
总结
https的通信流程(阮大神的一篇博文):http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
确认访问用户身份的认证
何为认证
就像是你买的保险箱只想某些人可以看一样,网页上的web页面也有可能只想特定的人浏览,这就少不了认证功能了,简单的说,认证就是判断访问服务器者的身份。
SSL 客户端认证
一般这部分费用是:
基于表单的认证
客户端会向服务器上的Web应用程序发送登录信息,按登录信息的验证结果认证;
因为HTTP是无状态协议,所以一般使用 Cookie 来管理 Session;
双因素认证
SSL客户端认证和表单认证结合,SSL客户端认证来认证客户端的计算机,而表单认证来确定用户本人的行为;
基于HTTP追加协议
HTTP 通信的瓶颈
例如论坛上,成千上万的用户发布内容的时候,web网站需要及时的更新,而使用HTTP协议探知服务器上是否有内容更新,就必须频繁地从客户端到服务器端进行确认。如果服务器上没有内容更新,就会产生徒劳的通信。
追加的几种协议:
WebSocket
推荐两篇文章:
HTTP/2.0
支持HTTP2.0的条件
如何浏览器或者服务器有一方不支持,就会自动变为HTTP/1.1
HTTP/2.0 改进点
HTTP/2.0 性能增强的核心:二进制分帧
在应用层和传输层之间增加了一个二进制分帧层,以达到“在不改动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的性能。
同时,单链接多资源的方式,有如下好处:
可以减少服务器的压力,内训占用少,连接的吞吐量大;
由于 TCP 连接减少,使得网络阻塞的情况得以改观;
慢启动时间减少,拥塞和丢包恢复速度更快。
因此, “资源合并减少请求”的优化手段对于HTTP2.0来说是没有效果的。
请求优先级
既然所有资源都是并行发送,那么就需要“优先级”的概念了,这样就可以对重要的文件进行先传输,加速页面的渲染。
服务器推送
在 HTTP2.0中,服务器推送是指客户端请求之前发送数据的机制。
强制 SSL
虽然 HTTP2.0 协议并没有声明一定要使用SSL,但是Google Chrome 等浏览器强制要使用 HTTP2.0 必须使用SSL。
The text was updated successfully, but these errors were encountered: