HTTP与HTTPS

前言

了解HTTP与HTTPS之前可以先简单了解下网络协议分层,以及每层的具体的工作分工与协议,可参考阮一峰老师的文章互联网协议入门(一)互联网协议入门(二)

网络协议分层--经典五层模型


TCP和HTTP请求之间有什么关系?

TPC/IP协议传输层协议,主要解决数据如何在网络中传输
HTTP应用层协议,主要解决如何包装数据。
WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。(在http请求之前需要建立tcp链接。)

1. 在完成一个HTTP请求后,TCP链接会否立即断开?
  • HTTP/1.0的时候是会的,需要手动设置Connection: keep-alive
  • HTTP/1.1的时候Connection默认为keep-alive

一般情况下,复用的 TCP连接在等待设置的超时时间之后还没有被任何连接使用的话,就会主动断开。

2. 一个TCP链接可以对应多少个HTTP请求?

一个TCP链接可以对应多个HTTP请求,只要这个TCP链接没有断开,就可以发送HTTP请求。

3. 这些HTTP请求可以同时发送,同时响应么,在一个TCP链接中?比如:三个HTTP请求同时发送,同时接收响应。
  • 在HTTP/1.1中,单个TCP链接在同一时刻只能处理一个请求,意思就是:任意两个 HTTP 请求从开始到结束的时间在同一个 TCP链接里不能重叠。
  • HTTP/2.0 提供了Multiplexing 多路传输(多路复用)。可以在一个TCP链接中同时发起多个HTTP请求,同时响应多个HTTP请求。
4. 浏览器http请求的并发性是如何体现的?并发请求的数量有没有限制?

浏览器会同时与服务器建立多个TCP链接,来支持多个HTTP同时请求的。
就例如:Chrome浏览器最多允许对同一个域名Host建立6个TCP连接,不同的浏览器有所区别。

HTTP

HTTP(HyperText Transfer Protocol)超文本传输协议是互联网上应用最为广泛的一种网络协议。

HTTP的工作原理

HTTP是一个基于TCP/IP通信协议来传递数据的协议,传输的数据类型为HTML 文件、图片文件, 查询结果等。
HTTP协议一般用于B/S架构()。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
我们以访问百度为例:


关于HTTP的三次握手,其实就是使用三次TCP握手确认建立一个HTTP连接。

一般http中存在的问题:
  • 请求信息明文传输,容易被窃听截取。
  • 数据的完整性未校验,容易被篡改
  • 没有验证对方身份,存在冒充危险

HTTPS

为了解决上述HTTP存在的问题,就用到了HTTPS。
HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密
SSL/TLS又是什么? SSL(Secure Socket Layer,安全套接字层)1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持;TLS(Transport Layer Security,传输层安全)其前身是 SSL

HTTPS的工作原理

(1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
(2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
(3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
(5)Web服务器利用自己的私钥解密出会话密钥。
(6)Web服务器利用会话密钥加密与客户端之间的通信。

HTTPS的缺点
  • HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;
  • HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
  • SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
  • SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
  • HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

HTTPS和HTTP的区别

  1. https协议需要到ca申请证书或自制证书。
  2. http的信息是明文传输,https则是具有安全性的ssl加密。
  3. http是直接与TCP进行数据传输,而https是经过一层SSL(OSI表示层),用的端口也不一样,前者是80(需要国内备案),后者是443。
  4. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容