HTTP/HTTPS


一、HTTP
1.1 超文本传输协议(HTTP)是用于分布式,协作式和超媒体信息系统的应用协议。它是Web上数据交换的基础,是一种client-server协议,也就是说请求通常是由像浏览器这样的接受方发起的。

1.2 HTTP被设计于上20世纪90年代初期,是一种可扩展性的协议。虽然理论上它可以通过任何可靠的传输协议来发送,但是它还是通过TCP,或者是TLS-加密的TCP连接来发送。因为它很好的扩展性,时至今日它不仅被用来传输超文本文档,还用来传输图片、视频或者向服务器发送如HTML表单这样的信息。HTTP还可以根据网页需求,来获取部分web文档的内容来更新网页。

HTTP & layers

1.3 HTTP / 1.1

在HTTP / 0.9和1.0中,连接在单个请求/响应对之后关闭。在HTTP / 1.1中引入了保持活动机制,其中连接可以重用于多个请求。这种持久连接可察觉地减少请求等待时间,因为客户端在发送第一请求之后不需要重新协商TCP 3次握手连接。另一个积极的意义在于,由于TCP的慢启动机制,通常连接随时间变得更快。
协议的版本1.1还使得带宽优化改进到HTTP / 1.0。例如,HTTP / 1.1引入了分块传输编码,以允许持续连接上的内容被流式传输而不是缓冲。 HTTP流水线进一步减少滞后时间,允许客户端在等待每个响应之前发送多个请求。协议的另一个附加是字节服务,其中服务器仅传送客户端明确请求的资源的部分。

1.4 HTTP 的基本性质

HTTP 是简单的

即便在HTTP/2中把HTTP消息封装到了frames中,HTTP大体上还是被设计成可读的而且简单的。HTTP的消息能够让人读懂且明白它的意思,还允许简单的测试,放低了门槛,更有利于新来者了解。

HTTP 是可扩展的

在HTTP/1中就出现了, HTTP headers让协议扩展变得非常容易。只要服务端和客户端在新的headers上语义达成一致,新的功能就可以轻松地被加进来。

HTTP 是无状态,有会话的

HTTP是无状态的:在同一个连接中,两个成功执行的请求之间是没有关系的。这就带来了一个问题,用户没办法在一个网站进行连续的交互,比如在一个电商网站里,用户把某个商品加入了购物车中,换了一个页面后再次添加商品,两次添加商品的请求没有联系,浏览器无法知道最终用户都选择了哪些商品。而用HTTP的头部扩展,HTTP Cookies就可以解决这个问题。把Cookies添加到头部中,创建一个会话来让每次请求都能共享相同的上下文信息,相同的状态。

而HTTP的核心是无状态的,cookies的使用可以创建有状态的会话。

1.5 HTTP status code

HTTP状态代码主要分为五组,以更好地说明客户端和服务器之间的请求和响应,名称为:

信息1XX,这一类型的状态码,代表请求已被接受,需要继续处理。

成功2XX,这一类型的状态码,代表请求已成功被服务器接收、理解、并接受

重定向3XX,通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。

客户端错误4XX,请求有语法错误或请求无法实现,这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。

服务器错误5XX,这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。

1.6 HTTP 能控制什么

多年以来,HTTP良好的扩展性控制着越来越多Web的功能。缓存和认证方式很早就可以由HTTP来控制了。另一方面,对同源同域的限制到2010年才有所改变。

下面就是可以用HTTP来控制的常见特性。

1.61 缓存
文档怎么缓存能够通过HTTP来控制。服务端能告诉代理和客户端什么需要被缓存,缓存多久,而客户端能够命令中间缓存代理来忽略存储的文档。

1.62 开放同源限制
为了防止网络窥听和其它的隐私泄漏,浏览器强制对Web网站做了分割限制。只有来自于相同来源的网页才能够获取网站的全部信息。这样的限制有时反而成了负担,HTTP可以通过修改头部来开放这样的限制,因此web文档可以是由不同域下的信息拼接成的(在某些情况下,这样做还有安全因素考虑在里面)。

1.63 认证
一些页面能够被保护起来,仅让特定的用户进行访问。基本的认证功能可以直接通过HTTP提供,使用Authenticate相似的头部就可以,或者用HTTP cookies来设定指定的会话。

1.64 代理
服务端和客户端通常都处在内部网上,彼此的真实地址都是不可见隐藏的。HTTP请求就要通过代理穿过网络障碍。不是所有的代理都是HTTP代理的,像一些用SOCKS协议的代理就运作在更底层(一些其它的协议,像ftp也能够被它们处理)

1.65 会话
Cookies用一个服务端的状态连接起了每一个请求。这就创建了会话,虽然基本的HTTP是无状态协议。这很有用,不仅是因为能用到购物车这样的电商业务上,更是因为,它使得任何网站都能够配置页面展现的东西了。

二、HTTPS

HTTP + SSL/TSL –> HTTPS

因此,超文本传输安全协议HTTPS常称为HTTP over TLS,HTTP over SSL或HTTP Secure是一种网络安全传输协议。

2.1 历史上,HTTPS连接主要用于万维网上的支付交易,电子邮件和公司信息系统中的敏感交易。在2000年代末和2010年初,HTTPS开始在所有类型的网站上广泛使用保护页面真实性,保护帐户和保持用户通信,身份和网络浏览私人。

2.2 在其在互联网上的流行部署中,HTTPS提供与正在通信的网站和相关联的web服务器的认证,其防止中间人攻击。此外,它提供客户端和服务器之间的通信的双向加密,其防止窃听和篡改或伪造通信的内容。在实践中,这提供了一个合理的保证,即正在与正在与意图与之通信的网站(与冒名顶替者相反)进行通信,以及确保用户和站点之间的通信内容不能被读取或伪造任何第三方。

2.3 SSL / TLS

事实上,SSL(Secure Sockets Layer)协议是Netcape公司于上世纪90年代中期提出的协议,自身发展到3.0版本。

1999年该协议由ITEL接管,进行了标准化,改名为TLS(Transport Layer Security)。

可以说,TLS 1.0就是SSL 3.1版本。在Wikipedia上并没有SSL独立的条目,而是会重定向到TLS,可见两种协议关系之紧密。

HTTPS通知浏览器使用添加的SSL / TLS加密层来保护流量。 SSL / TLS特别适用于HTTP,因为它可以提供一些保护,即使只有通信的一侧被认证。

这是因特网上的HTTP事务的情况,其中通常只有服务器被认证(由客户端检查服务器的证书)。
HTTPS在不安全的网络上创建安全通道。这确保了合理的保护免受窃听者和中间人攻击,只要使用足够的密码套件并且服务器证书被验证和信任。

2.4 与HTTP的区别
HTTPS URL以“https://”开头,默认使用端口443,而HTTP URL以“http://”开头,默认使用端口80。
HTTP不加密,易受到中间人和窃听攻击的攻击,攻击者可以访问网站帐户和敏感信息,并修改网页以注入恶意软件或广告。 HTTPS被设计为能够承受这种攻击,并被认为是安全的(除了旧的,不推荐的SSL版本)。

2.5 HTTPS局限性

由于客户端和服务端都需要对数据进行加密/解密,这会耗费一定的时间,因此,为了达到更好的体验,在一个网站中,牵连到重要的信息的网页可以使用HTTPS协议,而其他网页可以使用HTTP协议。

2.6 TLS包含三个基本阶段:

  1. 对等协商支持的密钥算法
  2. 基于非对称密钥的信息传输加密和身份认证、基于PKI证书的身份认证
  3. 基于对称密钥的数据传输保密

补充:

HTTPS的优点:[1]

安全性方面

在目前的技术背景下,HTTPS是现行架构下最安全的解决方案,主要有以下几个好处:

1、使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;

2、HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。

3、HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

HTTPS的缺点:

技术方面

1、相同网络环境下,HTTPS协议会使页面的加载时间延长近50%,增加10%到20%的耗电。此外,HTTPS协议还会影响缓存,增加数据开销和功耗。

2、HTTPS协议的安全是有范围的,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。

3、最关键的,SSL 证书的信用链体系并不安全。特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。

成本方面

1、SSL的专业证书需要购买,功能越强大的证书费用越高。个人网站、小网站可以选择入门级免费证书。

2、SSL 证书通常需要绑定 固定IP,为服务器增加固定IP会增加一定费用;

3、HTTPS 连接服务器端资源占用高较高多,相同负载下会增加带宽和服务器投入成本;

 

参考资料:

https://developer.mozilla.org/zh-CN/docs/Web/HTTP

https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE

http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html

https://zh.wikipedia.org/wiki/%E8%B6%85%E6%96%87%E6%9C%AC%E4%BC%A0%E8%BE%93%E5%AE%89%E5%85%A8%E5%8D%8F%E8%AE%AE

https://zh.wikipedia.org/wiki/%E5%82%B3%E8%BC%B8%E5%B1%A4%E5%AE%89%E5%85%A8%E5%8D%94%E8%AD%B0


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM