HTTP协议与SSL协议基础理论分析

一、HTTP协议基础理论分析
1.HT (Hyper Text超文本):包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。
2.URL(Uniform Resource Locator统一资源定位符):唯一地标识万维网中的某一个文档。URL由协议、主机和端口(默认为80)以及文件名三部分构成。例如:
Http://www.baidu.com:80/news/zhang.html
协议:// 主机:端口号(80) / 文件名及其路径
3. HTTP(Hyper Text Transfer Protocol超文本传输协议): 是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能,即就是一个文本里包含了跳转到其他文本的超链接。
4.HTTP的工作原理:
HTTP协议与SSL协议基础理论分析_第1张图片
如图所示,当用户点击URL为http://www.baidu.com/zhang.html的超链接时,客户机浏览器与Web服务器间将会执行下列步骤:
1) 客户机浏览器首先查看自己浏览器的缓存,浏览器看自己对这个链接是否有记录;
2) 在浏览器无缓存的情况下,客户机会在自己操作系统的Host文件中查看是否有缓存;
3) 当本地无缓存的情况下浏览器分析超链接中的URL;
4) 浏览器向DNS服务器发出请求,查找www.baidu.com这个域名对应的IP地址;
5) DNS服务器将解析出来的www.baidu.com对应的IP地址66.66.66.66发送给浏览器;
6) 浏览器拿解析出来的IP地址与服务器建立TCP的连接(端口号为80);
7) 首先浏览器向Web服务器发出Http请求报文同时发出请求文档(GET/zhang.html);
8) Web服务器向浏览器发出Http响应报文同时发出响应文档给浏览器(zhang.html);
9) 释放TCP的连接;(因为HTTP是无状态的协议,一个是无状态(请求完以后就释放掉了) 一个是无链接(每次请求跟上一次没关系,服务器对一个主机的上一次请求是无记忆的) 做成无状态、无链接主要是为了服务器方便,减轻服务器的负荷);
10)客户机浏览器上显示zhang.html的页面内容。
5.HTTP访问网站简要描述:
1)在无任何缓存的情况下,先通过DNS服务器来解析域名对应的IP地址;
2)PC的浏览器通过解析出来的服务器地址与服务器发起TCP三次握手建立TCP会话;
3)PC浏览器向服务器发起页面的请求包(浏览器请求包括:请求头、请求体;GET发起请求(一般常用) / POST以表单的形式发起请求);
4)服务器通过响应报文将PC浏览器请求的页面返回给PC;
5)完成数据的交互,断开TCP会话(TCP四次挥手断开会话连接),同时PC浏览器可以浏览到请求的页面。
6.谈到了Http协议我们就将Session和Cookie拿出来谈一谈:
Session是可以存储针对于某一个用户的浏览器以及通过其当前窗口打开的任何窗口具有针对性的用户信息存储机制。 (比如你打开一个查询系统 ,输入你的用户名及密码,当你浏览完自己的需要的信息后关闭浏览器,在一定时间内你再次的访问查询系统是不需要你再次输入用户名和密码的)
具体步骤如下:
(1) 当客户端PC的浏览器第一次访问某个web站点资源时,客户端提交没有带SessionID的请求(请求报文头没有Cookie头域信息)。而web服务器会检查是否有SessionID过来,没有则创建SessionID,并根据web程序自身定义在请求哪个资源时添加属于当前会话的信息(也可为空),这个信息列表以SessionID作为标识。然后将SessionID返回给客户端(通过响应报文头的Set-Cookie头域)。
(2) 客户端再次访问同个web站点时,提交带有SessionID的请求(通过Cookie头域存储SessionID)。由服务端判断session是否失效,如果未失效,可查询属于当前会话的信息列表。如果失效,则创建新的session(产生新的SessionID),而原先的session(包含session带的信息列表)则丢失,无法访问。
为什么Session是在一定时间是有效的?
通常大家认为,只要关闭浏览器,session就消失,其实这是错误的理解。对session来说也是一样的,除非程序通知服务器删除一个session,否则服务器会一直保留。由于关闭浏览器不会导致session被删除,迫使服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间。

Cookie(储存在用户本地终端上的数据即用户的上网行为记录): 保存SessionID的方式可以采用Cookie(也可以采用其他的技术来保存Session ID比如URL重写技术),这样在交互过程中浏览器可以自动的按照规则把这个SessionID发回给服务器。
二、SSL协议基础理论分析:

  1. SSL(Secure Sockets Layer安全套接层)为Netscape(美国网景通信公司)所研发用以保障在Internet上数据传输的安全,Netscape倒闭之后将SSL捐献给了公有组织,公有组织对其进行继续开发,现在我们一般使用的是其继任者TSL(Transport Layer Security传输层安全),用以保障网络通信的安全性和完整性。如图所示,是启用SSL协议后的数据包结构:
    HTTP协议与SSL协议基础理论分析_第2张图片
    2.SSL协议可用于保护正常运行于TCP之上的任何应用协议,如HTTP、FTP、SMTP(邮件协议)或Telnet的通信,最常见的是用SSL来保护HTTP的通信(HTTPS,端口号为443)。 SSL协议的
    优点在于它是与应用层协议无关的。高层的应用协议(如HTTP、FTP、Telnet等)能透明地建立于SSL协议之上。**SSL协议在应用层协议之前就已经完成加密算法、通信密钥的协商以及服务器的认证工作(这里可以参考IPSEC的IKE第一阶段)。在此之后应用层协议所传送的数据都会被加密,从而保证通信的安全性。
    3.SSL的三大功能:客户对服务器的身份认证(SSL服务器允许客户的浏览器使用标准的公钥加密技术和一些可靠的认证中心(CA)的证书,来确认服务器的合法性。)、服务器对客户的身份认证(可通过公钥技术和证书进行认证,也可通过用户名,password来认证。 )、建立服务器与客户之间安全的数据通道(SSL要求客户与服务器之间的所有发送的数据都被发送端加密、接收端解密,同时还检查数据的完整性)。
    4.SSL协议的使用:
    一般常用的Windows操作系统之中如图所示:
    HTTP协议与SSL协议基础理论分析_第3张图片
    5.SSL协议的
    工作原理(分层的思想):
    SSL协议是一个分层的协议,共有两层组成。处于SSL协议的
    底层的是SSL记录层协议(SSL Record Protocol),它位于可靠的传输层协议(如TCP)之上,用于封装高层协议的数据。其中SSL握手协议(SSL Handshake Protocol)允许服务方和客户方互相认证,并在应用层协议传送数据之前协商出一个加密算法和会话密钥(类似于IPSEC的第一阶段)。**
    HTTP协议与SSL协议基础理论分析_第4张图片
    5-1.SSL握手协议的握手过程(参考IPSEC):
    1)无客户端认证的全握手过程:

    HTTP协议与SSL协议基础理论分析_第5张图片
    如图所示,在服务器端不需要认证客户端时,服务器会主动将自己的证书(CA组织颁发的)发送给客户端,让客户端进行验证,其中会携带一个随机数,这个随机数是用来防重放攻击的。
    2)有客户端认证的全握手过程:
    HTTP协议与SSL协议基础理论分析_第6张图片
    如图所示,与无客户端认证的全握手过程相比较,当客户端发起请求,服务器端响应发出自己的证书供客户端认证的同时服务器端会向客户端索要证书,对客户端进行认证,客户端在向服务器递交自己证书时会将自己与服务器目前为止之前的所有握手消息进行数字签名也发送给服务器,用于认证和完整性校验
    3)会话恢复过程:
    HTTP协议与SSL协议基础理论分析_第7张图片
    4)SSL通信的整体过程:
    HTTP协议与SSL协议基础理论分析_第8张图片
    5-2.SSL记录协议(记录层的报文如图所示):
    在这里插入图片描述
    功能: 保护传输数据的私密性,对数据进行加密和解密、验证传输数据的完整性,计算报文的摘要、提高传输数据的效率,对报文进行压缩、保证数据传输的可靠和有序。
    6.SSL存在的问题简要分析:
    1)SSL默认是不会对客户端进行认证的,因为双方都要进行认证的话就会增加网络承载的负荷,从而导致网络性能的下降举个例子:你用淘宝来买东西,对于你来说必须确保自己的付费操作是与真的淘宝服务器进行操作的;而对于淘宝这边,你的身份认证并没有那麽的重要。
    解决方案:在必要的网络环境下开启服务器对于客户端的认证。
    2)SSL协议需要在握手之前建立TCP连接,因此不能对UDP应用进行保护。如果要兼顾UDP协议层之上的安全保护,可以采用IP层的安全解决方案(例如IPSEC)。
    3)SSL只是对应用层的数据进行了加密,数据包的IP头与TCP头仍然是裸漏在公网之上的。
    4)除非SSL的工程实现大部分驻留在硬件中,否则主密钥将会存留在主机的主存储器中,这就意味着任何可以读取SSL进程存储空间的攻击者都能读取主密钥,因此,不可能面对掌握机器管理特权的攻击者而保护SSL连接。
    解决方案:依靠用户管理策略来解决。
    7.SSL协议的实现(主要是通过三个协议来实现的):
    1)SSL握手协议:SSL握手协议被封装在记录协议中,该协议允许服务器与客户机在应用程序传输和接收数据之前互相认证、协商加密算法和密钥。在初次建立SSL连接时,服务器与客户机交换一系列消息。
    2)SSL修改密文协议:保障SSL传输过程的安全性,客户端和服务器双方应该每隔一段时间改变加密规范。
    3)SSL报警协议:SSL报警协议是用来为对等实体传递SSL的相关警告。如果在通信过程中某一方发现任何异常,就需要给对方发送一条警示消息通告。

你可能感兴趣的:(网络)