七层模型
想了解http,就须要了解TCP,IP协议。由于http是基于TCP,IP层上面的。以下图所示:安全

之前老是记不住这七层模型,但其实理解以后天然就记住了。
整张图应该从下边向上看,假设别人想发一条信息给个人电脑。首先是经过网络把信息传导到的电脑,但不能说个人电脑对于全部的信息都接受,我会判断信息,以后在处理信息,这些就是七层模型作的事情。一步一步分开来看 ,并用打电话这一建立的例子来对应:服务器
- 物理层 包括物理连网媒介,实际上就是布线、光纤、网卡和其它用来把两台网络通讯设备链接在一块儿的东西。它规定了激活、维持、关闭通讯端点之间的机械特性、电气特性、功能特性以及过程特性。(这就至关于电信公司的信号发射塔,接收信号而已)
- 数据链路层 数据链路层主要做用是控制网络层与物理层之间的通讯。它保证了数据在不可靠的物理线路上进行可靠的传递。它把从网络层接收到的数据分割成特定的可被物理层传输的帧,保证了传输的可靠性。(至关于发射塔让接受的信号更稳定,方便下一层的解读)
- 网络层 不少人常常混淆2层和3层的相关问题,简单来讲,若是你在谈论一个与IP地址、路由协议或地址解析协议(ARP)相关的问题,那么这就是第三层的问题。 网络层负责对子网间的数据包进行路由选择,它经过综合考虑发送优先权、网络拥塞程度、服务质量以及可选路由的花费来决定从一个网络中两个节点的最佳路径。另外,它还能够实现拥塞控制、网际互连等功能 (至关于咱们打一个长途电话,当前链接的发射站不能直接传递给另外一用户,须要先传递给附近的发射站)
到这里为止,其实信息尚未传递到咱们的电脑,能够理解为信息在路由网络间传递。
- 传输层 是OSI模型中最重要的一层,它是两台计算机通过网络进行数据通讯时,第一个端到端的层次,起到缓冲做用。当网络层的服务质量不能知足要求时,它将提升服务,以知足高层的要求;而当网络层服务质量较好时,它只需进行不多的工做。另外,它还要处理端到端的差错控制和流量控制等问题,最终为会话提供可靠的,无误的数据传输。(至关于咱们找到了最后的信号站,能够直接发送信号给通话者,可是这层会作一些数据的整合等工做)
- 会话层 会话层负责在网络中的两节点之间创建和维持通讯,并保持会话得到同步,它还决定通讯是否被中断以及通讯中断时决定从何处从新发送。
- 表示层 表示层的做用是管理数据的解密与加密,如常见的系统口令处理,当你的帐户数据在发送前被加密,在网络的另外一端,表示层将对接收到的数据解密。另外,表示层还需对图片和文件格式信息进行解码和编码。 (至关于发射塔给手机发送一些压缩的信息,咱们手机接收到后解码)
- 应用层 简单来讲,应用层就是为操做系统或网络应用程序提供访问网络服务的接口,包括文件传输、文件管理以及电子邮件等的信息处理。 应用层协议的表明包括:Telnet、FTP、HTTP、SNMP等。 (这就是真正的收到信息,至关于咱们听到了对方的声音,此次对话完成了)
总结起来就是:
打电话信息发出(www) --->发射塔收到不稳定信息流(物理层) ---> 发射塔整理信息流(链路层)---> 发射塔转给离接收人更近的发射塔(网络层IP) ---> 发射塔向接收人发送信息(传输层TCP) ---> 通话创建(会话层) ---> 解码信息(表示层) ---> 发出声音给接收人(应用层HTTP)网络
各协议在HTTP中的用途
对于HTTP网络应用,咱们在网络层用的是IP,在传输层用的是TCP。
IP: internet protocal。顾名思义,网络协议。他能确保计算机之间在网络上互相通讯,可是他不检查消息是否以发送次序到达而没有损坏,所以,咱们须要上一层来检验消息。因而有了TCP层
TCP: 保证信息正确次序,内容不变。同时引入端口分发给不一样的服务。同时分割数据为更小的ip包,到达时重组。
HTTP: 当信息解读好,咱们传给HTTP层,即为应用层。超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为普遍的一种网络协议。全部的WWW文件都必须遵照这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。编码
以上是对支撑HTTP的网络七层的归纳,咱们须要理解为何要在http层下面有那么多层,每一层的目的是什么。加密
明白了这些以后,问题来了,这七层是怎么知道本身应该怎么解读数据,而不是说TCP层解读HTTP层。这里面就是网络数据的封装和传递了:spa

从这个图中,咱们能够看到每一层的数据都会被一个这层的头信息包裹。
以后咱们在接收到信息时再一层一层读取信息操作系统
HTTPS原理
讲完http,咱们会发现,咱们传递的信息在网络上通过那么多物理层的传输,保不许会被别人截获,而咱们却一点也不知道。因而咱们想到要加密咱们传输的数据。由于只有http层信息是咱们要的,因此在这一层下面加入一层来加密信息。这一层就是SSL层,同时咱们若是想传给ssl层,咱们用端口443.
ssl层简称安全套阶层,主要就是加密解密。
一开始咱们会说,咱们就让服务器给咱们一个公钥,每次用他来解密不就好了。可是这种办法不能够,由于别人一样能够截获你的公钥,毕竟公钥也是在网络上传递的。
因而咱们就要想一种办法,让咱们的公钥也被加密,而且这个加密方式是在服务器或者咱们电脑上进行的,这样才安全
如图:设计

重点在这里:blog
- 服务器端产生的是对称秘钥,因此只是把公钥发送出去,私钥一直在本身这里 (对称秘钥就是一个公钥,一个私钥,用公钥加密,用私钥直接能解码,可是比较慢,不能一直用这个通讯)
- 客户端首先向一个权威的服务器检查证书的合法性,若是证书合法,客户端产生一段随机数,这个随机数就做为通讯的密钥,咱们称之为对称密钥,用公钥加密这段随机数,而后发送到服务器
- 服务器用密钥解密获取对称密钥,而后,双方就已对称密钥进行加密解密通讯了
这里主要就HTTP相关知识进行总结,但愿帮助你们!接口
感受好的话别忘了投票啊!