博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTTP/HTTPS 学习笔记
阅读量:5950 次
发布时间:2019-06-19

本文共 1924 字,大约阅读时间需要 6 分钟。

超文本传输协议(HyperText Transfer Protocol) 伴随着计算机网络和浏览器的诞生,HTTP1.0也随之而来,处于计算机网络中的应用层,HTTP是建立在TCP协议之上的。

HTTP的基本优化

影响一个HTTP网络请求的因素主要有两个:带宽和延迟。

  • 带宽:单位时间能通过链路的数据量。通常以bps来表示,即每秒可传输之位数。
  • 延迟:
  1. 浏览器阻塞:浏览器对于同一个域名同时只能有 4 个连接,超过浏览器最大连接数限制,后续请求就会被阻塞。
  2. DNS 查询:将域名解析为 IP 的过程,可以利用DNS缓存结果来减少时间。
  3. 建立连接:HTTP 是基于 TCP 协议的,浏览器最快也要在第三次握手时才能捎带 HTTP 请求报文,达到真正的建立连接,但是这些连接无法复用会导致每次请求都经历三次握手和慢启动。

HTTP 存在的问题

  1. HTTP在传输数据时,每次都需要重新建立连接,增加了大量的延迟时间,特别是在移动端更为突出。
  2. 传输数据时所有内容都是明文,客户端和服务器端都无法验证对方的身份,一定程度上无法保证数据的安全性。
  3. header里携带的内容过大,增加了传输的成本,并且每次请求header基本不怎么变化,尤其在移动端增加用户流量。
  4. 虽然HTTP支持keep-alive 来弥补多次创建连接产生的延迟,但是keep-alive使用多了同样会给服务端带来大量的性能压力,并且对于单个文件被不断请求的服务(例如图片存放网站),keep-alive可能会极大的影响性能,因为它在文件被请求之后还保持了不必要的连接很长时间。

HTTPS

网景在1994年创建了HTTPS,并应用在网景导航者浏览器中。HTTPS是与SSL一起使用的;在SSL逐渐演变到TLS时(其实两个是一个东西,只是名字不同而已)

简单来说,HTTPS就是安全版的HTTP,chrome和firefox都大力支持网站使用HTTPS,苹果也在ios 10系统中强制app使用HTTPS来传输数据。

* SSL(Secure Sockets Layers): 安全套接层

* TLS(Transport Layer Security): 传输层安全
为网络通信提供安全及数据完整性的一种安全协议。两者在传输层对网络连接进行加密

 

HTTPS 和 HTTP 的区别

  1. HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
  2. HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。
  3. HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  4. HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。

img

SPDY

Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。SPDY并不是一种用于替代HTTP的协议,而是对HTTP协议的增强。新协议的功能包括数据流的多路复用、请求优先级以及HTTP报头压缩。谷歌表示,引入SPDY协议后,在实验室测试中页面加载速度比原先快64%。

SPDY可以说是综合了HTTPS和HTTP两者有点于一体的传输协议,解决的问题如下:

  1. 通过多路复用降低延迟,单个TCP连接支持并发的HTTP请求。
  2. 请求优先级。SPDY允许给每个request设置优先级,这样重要的请求就会优先得到响应,防止在网络通道被非关键资源堵塞时,高优先级的请求被挂起。
  3. 压缩 header 报头和去掉不必要的头部来减少当前HTTP使用的带宽。
  4. 基于HTTPS的加密协议传输,强制使用SSL,让SSL协议在现存的网络设施下有更好的安全性和兼容性。
  5. 服务端推送。允许服务器在需要时发起对客户端的连接并推送数据。

spdy 

          SPDY构成图

 

HTTP1.1 特性

  1. 默认持久连接节省通信量,只要客户端服务端任意一端没有明确提出断开TCP连接,就一直保持连接,可以发送多次HTTP请求
  2. 管线化,客户端可以同时发出多个HTTP请求,而不用一个个等待响应
  3. 断点续传原理

HTTP2.0

HTTP2.0可以说是SPDY的升级版(其实原本也是基于SPDY设计的),但是,HTTP2.0 跟 SPDY 仍有不同的地方,主要是以下两点:

  1. HTTP2.0 支持明文 HTTP 传输,而 SPDY 强制使用 HTTPS
  2. HTTP2.0 消息头的压缩算法采用 HPACK,而非 SPDY 采用的 DEFLATE

 

参考:

  

转载于:https://www.cnblogs.com/wx1993/p/9072500.html

你可能感兴趣的文章
我的友情链接
查看>>
log4j配置文件说明
查看>>
Maven: 为Compiler插件设置source和target版本
查看>>
L2TP/IPSec一键安装脚本
查看>>
linux下永久添加静态路由
查看>>
android 全局变量和局部变量命名规则
查看>>
Ubuntu Sub-process /usr/bin/dpkg
查看>>
详解DNS的常用记录(下):DNS系列之三
查看>>
“爆炸门”苹果补刀,三星该“哭晕了”!
查看>>
基于linux的3款压力测试工具:Siege,webbench,ab
查看>>
Netty Buffer
查看>>
华为AAA认证典型配置举例
查看>>
icinga2使用check_snmp_idrac.py监控DELL硬件状态
查看>>
Java基础学习21(代码块)
查看>>
陈松松:无需懂任何视频制作技术,就能做出让客户感觉专业的视频
查看>>
转:用Windows Live Writer在51CTO写博客
查看>>
rsync+ssh的无验证登录
查看>>
不可重复读和幻读
查看>>
extjs GroupingStore sort 的疑问
查看>>
我的友情链接
查看>>