白话解释 OSI模型,TLS/SSL 及 HTTPS

如下白话解释针对小白级别,大牛勿喷。

来源:本人博客git

上回咱们白话了密码学中的两种算法,对称加密算法和非对称加密算法,咱们有了这两种算法,咱们就要将他们应用到实际生活中,就像咱们学会了99乘法表,就可让咱们在实际生活中快速的计算啦!github

因此本节课程的先决条件就是,看并掌握我以前白话的这篇文章:对称加密算法vs非对称加密算法算法

咱们先从互联网开始提及,说到互联网咱们就不得不提一下计算机,由于计算机是互联网组成的一个很重要的部分,咱们要想使用互联网进行交流就必须使用计算机(注意!我这里的“计算机”是一个统称,爱钻牛角尖的童鞋,不要说,除了计算机还有手机啊,ipad啊,智能手表啊!!!!恩,好了,别闹了)。segmentfault

而后问题来了,要想造成互联网,计算机和计算机之间就必须相连起来(废话!),因而咱们就有了“网线”,固然这里的“网线”也是泛指,由于如今你们家里都用的是无线网!不过不管有线网仍是无线网,他们都是经过“物理”途径进行传播信号的!有了这些“联系”,咱们计算机和计算机之间有了传递信息的“途径”了,可是!这里仅仅是提供了一个途径,可是若是想让计算机之间彼此了解传输的信息,那么咱们必须定义一系列的协议,这些协议是计算机之间都可以明白的,同时发送和接受要严格按照协议去作!就像张三是中国人和王石头是印度人,他们俩要想交流,就要先创建一个途径,不管是加qq仍是发邮件,同时他们俩还得说同样的话,不能张三说中国话,王石头说印度话。安全

因此,这就是好多互联网协议的来历,好比IPv4, IPv6, TCP,UDP,HTTP,FTP,SMTP,TLS/SSL,HTTPS等等。服务器

那么咱们再来想一下,好比,张三想经过QQ发送给李四一句“踢球去不?”,那么谁来将咱们发出去的信息转换成协议规定的形式呢?QQ这个软件?操做系统?网卡?路由器?网线?仍是咱们的ISP(网络服务提供商,你能够理解成电信,移动,网通等等)。网络

其实,这些都会涉及到,因此即便你简简单单的发送一句“踢球去不?”须要涉及到这么多内容,因此,这里要引入一个模型,叫作OSI模型,全称“开放式系统互联通讯参考模型”(英语:Open System Interconnection Reference Model)。架构

这个模型是干吗的呢?就是将计算机和计算机之间信息交换“概念化”成不一样的层次,每层分别有它本身的“实现”,每层有它本身的任务,同时“向上”提供“抽象”的“接口”供上层使用。通常分红7层或者5层。为了简便期间我这里按照5层架构说一下,这五层分别是:app

  • 应用层(application layer)
  • 传输层(transport layer)
  • 网络层(network layer)
  • 数据链路层(data link layer)
  • 物理层(physical layer)

回到咱们的例子,当张三用QQ向李四发送一条信息时,首先QQ属于应用层,应用层须要将信息发送给传输层,传输层通过处理以后传给网络层,以此类推传给物理层,这样一层层向下“包装”,每层有对应的协议,这样最后经过物理层传出去,传到李四的物理层,而后李四那边经过一层层向上按照协议“解包”,最后到应用层,传到李四的qq里。socket

因此每层都有相对应的协议好比咱们的物理层和数据链路层经过无线网传输使用的802.2传输协议,有线网的Ethernet(以太网)传输协议,还有网络层的IPv4, IPv6协议,传输层的TCP, UDP协议,而咱们熟悉的HTTP协议其实属于应用层,因此HTTP是创建在TCP/IPv4或v6/以太网基础上进一步细化用于传输“超文本”信息的协议,好比FTP也属于应用层,也是在下面各层协议基础上进行细化,专门用于“文件传输”的协议。

你们能够看到,协议越往上越具体,越往下约抽象,其实计算机技术的发展就是一层层的向上抽象,这样上层的能够直接使用下层的“成果”(API)!

咱们再来讲一下TLS/SSL,SSL(secure sockets layer)是TLS(transport layer security)的前身,为何将他们合起来的,你们能够理解成都属于同一东西的不一样阶段吧,好比该协议以前叫SSL后来更名成TLS了。

为何要有这种协议呢?由于HTTP是使用明文传输,随着网络的发展,安全性愈来愈重要,因此你们就要想办法让传输更加安全,同时使用密码学的成果,利用“非对称加密算法”的思想以及OSI模型,来对HTTP的信息进行加密。

由于上面咱们说了,根据OSI模型,若是向外传输信息就是要从上到下挨个层进行,TLS/SSL也是位于应用层,因此为了加密HTTP的内容,那么TLS/SSL必须位于HTTP下面,能够当作这样:

HTTP
TLS/SSL
TCP
Ip
..

信息从HTTP通过TLS/SSL非对称加密后传出去,而在接收方,接收到信息是须要一层层向上进行,通过每层的“解包/解密”,最终经过HTTP转换成超文本信息。

因此HTTPS 就是 “HTTP内容向下传输的时候加了一层TLS/SSL加密”,仅此而已,这样,咱们就能够实现,使用HTTP协议进行互联网信息传播的时候,对信息进行加密处理了,相信你们已经对非对称加密算法有必定了解了。好比说咱们经过HTTPS链接某银行网站,这样咱们就能够将咱们的密码经过银行给咱们的公钥进行加密后发送给银行,而避免了在传输过程当中被他人偷看的可能,由于即便他们讲咱们的密文盗走,也没法解密,只有银行网站能够解密,为何?由于只有银行拥有与咱们使用“公钥”加密相对的那个“私钥”。

可是一样的问题,就是咱们怎么知道咱们使用的公钥就是银行给咱们的呢?即便咱们所访问的域名和银行的域名一致,由于黑客彻底能够经过修改咱们本地的hosts文件,或者入侵dns,将域名映射到黑客的服务器。

因此,这就是CA(certificate authority),数字证书,数字签名,公钥基础设施(PKI)等等名词的来历。

下回再白话。

更多内容欢迎访问:做者博客

相关文章
相关标签/搜索