http,https的工作流程

一,http

1. http协议介绍

(1) HTTP协议(HyperText Transfer Protocol,超文本传输协议),
    是因特网上应用最为广泛的一种网络传输协议,
    所有的WWW文件都必须遵守这个标准;
(2) http是基于TCP/IP通信协议来传递数据的(HTML 文件, 图片文件, 查询结果等);
(3) HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,
    这个时候,就成了我们常说的HTTPS;
(4) HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型,
    HTTP是一个无状态的协议;
(5) HTTP默认的端口号为80,HTTPS的端口号为443复制代码

2. http的工作流程

  • 一次HTTP操作称为一个事务,其工作过程大概如下:
(1)用户在浏览器输入URL网址;
(2)浏览器根据URL网址中的域名,通过DNS解析出服务器IP地址;
(3)然后通过TCP/IP协议来和服务端建立链接(TCP三次握手);
(4)建立链接后,发送请求给服务器;
(5)服务器回复浏览器请求;
(6)浏览器拿到对应的html等资源,渲染页面
复制代码
  • 一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,
  • 然后如果浏览器或者服务器在其头信息加入了这行代码:Connection:keep-alive,
  • TCP连接在发送后将仍然保持打开状态,于是,
  • 浏览器可以继续通过相同的连接发送请求。
  • 保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

3. 短链接(了解)

短连接的操作步骤是:
建立连接——数据传输——关闭连接,...建立连接——数据传输——关闭连接;

如果客户请求频繁,将在TCP的建立和关闭操作上浪费较多时间和带宽;
复制代码

4. 长链接(了解)

长链接,指在一个连接上可以连续发送多个数据包,
在连接保持期间,如果没有数据包发送,需要双方发链路检测包。

长链接操作步骤: 建立连接——数据传输...(保持连接)...数据传输——关闭连接。

长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。
复制代码

5. http存在的安全问题

  1. 可能被窃听
(1) HTTP 本身不具备加密的功能,HTTP 报文使用明文方式发送;
(2) 由于互联网是由联通世界各个地方的网络设施组成,
    所有发送和接收经过某些设备的数据都可能被截获或窥视。
    (例如大家都熟悉的抓包工具:Wireshark);
复制代码
  1. 认证问题
无法确认你发送到的服务器就是真正的目标服务器(可能服务器是伪装的);
无法确定返回的客户端是否是按照真实意图接收的客户端(可能是伪装的客户端);
复制代码
  1. 可能被篡改
请求或响应在传输途中,
遭攻击者拦截并篡改内容的攻击被称为中间人攻击(Man-in-the-Middle attack,MITM)。
复制代码

二,https

  • 基于http存在的一些安全问题,出现了https来解决这类问题

1. https的介绍

超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,
缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure),
是一种通过计算机网络进行安全通信的传输协议。
HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。
HTTPS开发的主要目的,是提供对网站服务器的身份认证,
保护交换数据的隐私与完整性。

简言之,就是对http加了一层安全策略
复制代码

2. HTTPS怎么解决http存在的安全问题的?

  • HTTPS是在通信接口部分用 TLS(Transport Layer Security 传输层安全性协议);
  • TLS协议采用主从式架构模型,用于在两个应用程序间通过网络创建起安全的连接,防 止在交换数据时受到窃听及篡改;

3. SSL和TLS的关系

(1)传输层安全性协议(英语:Transport Layer Security,缩写作 TLS),
及其前身安全套接层(Secure Sockets Layer,缩写作 SSL)是一种安全协议,
目的是为互联网通信,提供安全及数据完整性保障。

(2)网景公司(Netscape)在1994年推出首版网页浏览器,
网景导航者时,推出HTTPS协议,以SSL进行加密,这是SSL的起源。

(3)IETF将SSL进行标准化,1999年公布第一版TLS标准文件。
随后又公布RFC 5246 (2008年8月)与 RFC 6176 (2011年3月)。
在浏览器、电子邮件、即时通信、VoIP、网络传真等应用程序中,广泛支持这个协议。
复制代码

4. TLS/SSL 协议

HTTPS 协议的主要功能基本都依赖于 TLS/SSL 协议,
TLS/SSL 的功能实现主要依赖于三类基本算法:散列函数 、对称加密和非对称加密,
其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,
基于散列函数验证信息的完整性。
复制代码

5. https工作流程的通俗解释

  • 信鸽解释,爱丽丝和鲍勃是通过信鸽异地联系

1. 开始阶段

爱丽丝给鲍勃发了个飞鸽传书。鲍勃收到了。很happy

但坏蛋马洛里拦截了爱丽丝的鸽子并且篡改了信息呢?
鲍勃就没有办法去知道爱丽丝发出的信息在传递过程中遭到了修改。
复制代码

2. 于是,爱丽丝和鲍勃见面商量后,决定对飞鸽传书内容进行加密。

加密方式:他们会将信息中的每个字母按照字母表中的顺序前移三位。
比如,D→A,E→B,F→C。如此一来,原文为 “secret” 的信息就变成了 “pbzobq” 。

这下。当爱丽丝给鲍勃再发了个飞鸽传书时。
坏蛋马洛里拦截了信息也没用;他不知道解密规则。

此时鲍勃收到信息消息后,再根据和爱丽丝商量的规则解密获取信息。
他很得意自己的聪明才智。

他们的做法就是对称加密

但他们的做法存在一些问题。
他们需要见面才能确定加密方式。这显然不方便。
复制代码

3. 问题是如果爱丽丝和鲍勃在开始用信鸽传信之前没有见过面怎么办,

他们没有一个安全的方式来确立密匙。如果他们自己来在信中传递密匙,
马洛里就会截获信息并发现密匙。

这就使得马洛里可以在爱丽丝和鲍勃开始加密他们的信息之前或之后,
阅读到他们信息的内容并按照她的意愿来篡改信息。

这是一个中间人攻击的典型例子,避免这个问题的唯一方法就是收发信的两方一起确定加密方式。

4. 通过信鸽传递盒子

所以爱丽丝和鲍勃就想出了一个更好的系统。
当鲍勃想要给爱丽丝发送信息时,他会按照如下的步骤来进行:

鲍勃向爱丽丝送一只没有携带任何信息的鸽子。

爱丽丝给鲍勃送回鸽子,并且这只鸽子带有一个有开着的锁的盒子,爱丽丝保管着锁的钥匙。

鲍勃把信放进盒子中,把锁锁上然后把盒子送给爱丽丝。

爱丽丝收到盒子,用钥匙打开然后阅读信息。

复制代码

这样马洛里就不能通过截获鸽子来篡改信息了,因为她没有打开盒子的钥匙。
当爱丽丝要给鲍勃发送消息的时候同样按照上述的流程。

爱丽丝和鲍勃所使用的流程通常被称为非对称密钥加密。之所以称之为非对称,是因为即使是你把信息编码(锁上盒子)也不能破译信息(打开锁住的盒子)

在术语中,盒子被称为公匙而用来打开盒子的钥匙被称为私匙

上面方式还是会存在问题;
当鲍勃收到盒子时他如何能确定这个盒子来自爱丽丝的,
而不是马洛里截获了鸽子然后换了一个她有钥匙能打开的盒子呢?
复制代码

5.如何信任盒子

爱丽丝决定签名标记一下盒子,这样鲍勃收到盒子的时候就可以检查签名来确定是爱丽丝送出的盒子了。

那么鲍勃如何打一开始就能识别出爱丽丝的签名呢?这是个好问题。爱丽丝和鲍勃也确实有这个问题,所以他们决定让泰德代替爱丽丝来标记这个盒子。

那么谁是泰德呢?泰德很有名的,是一个值得信任的家伙。他会给任何人签名并且所有人都信任他只会给合法的人签名标记盒子。

如果泰德可以确认索要签名的人是爱丽丝,他就会在爱丽丝的盒子上签名。因此马洛里就不可能搞到一个有着泰德代表爱丽丝签了名的盒子,因为鲍勃知道泰德只会给他确认过的人签名,从而识破马洛里的诡计。

泰德的角色在术语中被称为认证机构。而你阅读此文时所用的浏览器打包存有许多认证机构的签名。

所以当你首次接入一个网站的时候你可以信任来自这个站点的盒子因为你信任泰德而泰德会告诉你盒子是合法的。

上述方式虽然比较完美的解决来存在的安全问题。
but,盒子装东西太多太重。让飞鸽传书很慢。
这也是个问题。。
复制代码

6. 如何解决盒子太重问题

现在爱丽丝和鲍勃有了一个可靠的系统来进行交流,然他们也意识到让鸽子携带盒子比原本只携带信件要慢一些。

因此他们决定只有在选择用对称加密来给信息编码(还记得凯撒加密法吧?)的密匙时,使用传递盒子的方法(非对称加密)。

这样就可以二者的优点兼具了,非对称加密的可靠性和对称加密的高效性。

现实世界中我们不会用信鸽这样慢的送信手段,但用非对称加密来编码信息仍要慢于使用对称加密技术,所以我们只有在交换编码密匙的时候会使用非对称加密技术。

那么相信现在的你已经大概了解了HTTPS是如何工作的了~~~



  • 这篇文章主要通过举例来说明https的工作过程;
  • 适合https入门级的童鞋来;
  • 其中参考其他文章再结合自己的总结;
  • 参考文章
  • 5分钟让你明白HTTP协议
  • 分分钟让你理解HTTPS

转载于:https://juejin.im/post/5cd4df47f265da035b61b338

你可能感兴趣的:(面试,运维,网络)