HTTP与SSL总结

HTTP
超文本传输协议(Hyper Text Transfer Protocol,是一种基于请求与响应模式的、无状态的、按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。
Hyper Text
超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。超文本更是一种用户界面范式,用以显示文本及与文本之间相关的内容。现时超文本普遍以电子文档方式存在,其中的文字包含有可以链结到其他位置或者文档的连结,允许从当前阅读位置直接切换到超文本连结所指向的位置。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。
URL
url是统一资源定位符(Uniform Resource Locator),对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。URL由协议、主机和端口(默认为80)以及文件名三部分构成。

在这里插入图片描述
工作过程
在这里插入图片描述
1、客户机浏览器首先查看自己浏览器的缓存,浏览器看自己对这个链接是否有记录;
2、在浏览器无缓存的情况下,客户机会在自己操作系统的Host文件中查看是否有缓存;
3、当本地无缓存的情况下浏览器分析超链接中的URL;
4、浏览器向DNS服务器发出请求,查找www.qq.com这个域名对应的IP地址;
5、DNS服务器将解析出来的www.qq.com对应的IP地址224.246.239.80发送给浏览器;
6、浏览器拿解析出来的IP地址与服务器建立TCP的连接(端口号为80);
7、首先浏览器向Web服务器发出Http请求报文同时发出请求文档(GET/index.html);
8、Web服务器向浏览器发出Http响应报文同时发出响应文档给浏览器(index.html);
9.释放TCP的连接;做成无状态(请求完就释放)、无链接(服务器不做记忆,每次都要重新请求)主要是为了服务器方便,减轻服务器的负荷;
10、客户机浏览器上显示index.html的页面内容;
HTTP头部

在这里插入图片描述
HTTP的连接方式和无状态性以及响应
1.非持久性连接

即浏览器每请求一个Web文档,就创建一个新的连接,当文档传输完毕后,连接就立刻被释放。 HTTP1.0、HTTP0.9采用此连接方式。对于请求的Web页中包含多个其他文档对象(如图像、声音、视频等)的链接的情况,由于请求每个链接对应的文档都要创建新连接,效率低下。
2.持久性连接
即在一个连接中,可以进行多次文档的请求和响应。服务器在发送完响应后,并不立即释放连接,浏览器可以使用该连接继续请求其他文档。连接保持的时间可以由双方进行协商。
3.无状态性
是指同一个客户端(浏览器)第二次访问同一个Web服务器上的页面时,服务器无法知道这个客户曾经访问过。HTTP的无状态性简化了服务器的设计,使其更容易支持大量并发的HTTP请求。
一次HTTP操作称为一个事务,其工作过程可分为四步:
第一步:浏览器分析超链接中的URL首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。
第二步:DNS请求 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
第三步:DNS回复服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
第四步:PC向解析出的服务器地址发起tcp三次握手客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏输出。响应报文中的状态码:

在这里插入图片描述
HTTP关键字
USER-agent 浏览器标识
Server:响应头包含处理请求的原始服务器的软件信息
Referer:浏览器向 WEB 服务器表明自己是从哪个 网页/URL 获得/点击 当前请求中的网址/URL。
Location:WEB 服务器告诉浏览器,试图访问的对象已经被移到别的位置了,到该头部指定的位置去取。
DNS
域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53
Session
Session是可以存储针对于某一个用户的浏览器以及通过其当前窗口打开的任何窗口具有针对性的用户信息存储机制。
通常大家认为,只要关闭浏览器,session就消失,其实这是错误的理解。对session来说也是一样的,除非程序通知服务器删除一个session,否则服务器会一直保留。由于关闭浏览器不会导致session被删除,迫使服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间.(1)第一次访问某个web站点资源时,客户端提交没有带SessionID的请求(请求报文头没有Cookie头域信息)。
而web服务器会检查是否有SessionID过来,没有则创建SessionID,并根据web程序自身定义在请求哪个资源时添加属于当前会话的信息(也可为空),这个信息列表以SessionID作为标识。然后将SessionID返回给客户端(通过响应报文头的Set-Cookie头域)。
客户端再次访问同个web站点时,提交带有SessionID的请求(通过Cookie头域存储SessionID)。由服务端判断session是否失效,如果未失效,可查询属于当前会话的信息列表。如果失效,则创建新的session(产生新的SessionID),而原先的session(包含session带的信息列表)则丢失,无法访问。
Session的工作原理
1.当一个Session第一次被启用时,一个唯一的标识被存储于本地的Cookie中。
2.首先使用session_start()函数,PHP从Session仓库中加载已经存储的Session变量。
3.当执行PHP脚本时,通过使用session_register()函数注册session变量。
4.当PHP脚本执行结束时,未被销毁的Session变量会被自动保存在本地一定路径下的Session库中,这个路径可以通过php.ini文件中的Session.save_path指定,下次浏览网页时可以加载使用。
Cookie
保存SessionID的方式可以采用Cookie,这样在交互过程中浏览器可以自动的按照规则把这个SessionID发回给服务器。Cookie的命名方式类似于SessionID。有时Cookie被人为的禁止,所以出现了其他机制以便在Cookie被禁止时仍然能够把SessionID传递回服务器。这种技术叫做URL重写,就是把SessionID直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为http://www.wantsoft.com/index.asp;jsessionid= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 。
另一种是作为查询字符串附加在URL后面,表现形式为http://www.wantsoft.com/index?js … 99zWpBng!-145788764 。

SSL
SSL是 为网络通信提供安全及数据完整性的一种安全协议 SSL协议可以保护正常运行于TCP之上的任何应用协议;它是传输层与应用层之间的协议,高层的应用协议能透明地建立在SSL协议之上;SSL协议在应用层之前就已经完成了加密算法、通信密钥的协商和服务器的认证工作,此后应用层发送的数据都会被加密,从而保证通信的安全性。
443端口调用SSL
用于保护正常运行与TCP之上的任何应用协议
SSL协议提供的安全通道有以下三个特性:
1.机密性:SSL协议使用密钥加密通信数据。
2.可靠性:服务器和客户都会被认证,客户的认证是可选的。
3.完整性:SSL协议会对传送的数据进行完整性检查。
SSL提供的服务
1.认证用户和服务器,确保数据发送到正确的客户机和服务器;
2.加密数据以防止数据中途被窃取;
3.维护数据的完整性,确保数据在传输过程中不被改变。
SSL的数据包结构
在这里插入图片描述
SSL协议的分层模型原理:
SSL协议是一个分层的协议,共有两层组成。处于SSL协议的底层的是SSL记录层协议(SSL Record Protocol),它位于可靠的传输层协议(如TCP)之上,用于封装高层协议的数据。其中SSL握手协议(SSL Handshake Protocol)允许服务方和客户方互相认证,并在应用层协议传送数据之前协商出一个加密算法和会话密钥(类似于IPSEC的第一阶段)。

握手协议(SSL Handshake Protocol)
允许服务方和客户方互相认证,并在应用层协议传送数据之前协商出一个加密算法和会话密钥。握手协议可以用于建立一个新的会话,也可以恢复一个先前存在的会话,但每次握手都会建立一个全新的连接
功能:
1.协商SSL协议的版本
2.协商加密套件
3.协商密钥参数
4.验证通讯双方的身份(可选)
5.建立SSL连接

在这里插入图片描述
1.网络连接建立,SSL客户端发送消息,消息中包含SSL版本号、密码设置、可实现的算法列表、随机数以及服务器使用SSL协议通信所需的其它信息;
2.SSL服务器端回应消息,确定SSL版本号、加密算法和压缩算法;
3.SSL服务器发出服务器数字证书;
4.SSL客户端的身份认证是可选的;
5.客户端生成预主密钥pre_master_secret,用服务器的公钥加密后返回服务器,服务器利用自己的私钥解密后得到会话密钥;
6. 若服务器要求客户认证,客户机会向服务器随加密的pre_master_secret一起发送签名的数据和客户自己的证书。
7. 服务器若认证客户成功,使用私钥加密pre_master_secret,然后执行一系列步骤生成master secret。否则会话终止。
8. 客户机与服务器使用master secret生成会话密钥。该密钥是对称密钥,用于加密和解密在SSL会话期间交换的信息,检验信息完整性。
9. CCS:发送消息通知以后从客户机来的消息将用会话密钥加密。客户机然后发送一条独立的(加密的)消息表明握手的客户机部分已经完成。
SSL握手协议的握手过程
1.无客户端认证的握手过程:

在这里插入图片描述
在服务器端不需要认证客户端时,服务器会主动将自己的证书(CA组织颁发的)发送给客户端,让客户端进行验证,其中会携带一个随机数,这个随机数是用来防重放攻击的。
2.有客户端认证的握手过程:

在这里插入图片描述
与无客户端认证的全握手过程相比较,当客户端发起请求,服务器端响应发出自己的证书供客户端认证的同时服务器端会向客户端索要证书,对客户端进行认证,客户端在向服务器递交自己证书时会将自己与服务器目前为止之前的所有握手消息进行数字签名也发送给服务器,用于认证和完整性校验。
SSL记录协议
处于SSL协议底层,位于可靠的传输协议之上,用于封装高层协议数据
SSL记录协议的工作过程
(1)发送方的工作过程为:
1.从上层接受要发送的数据(包括各种消息和数据);
2.对信息进行分段,分成若干纪录;
3.使用指定的压缩算法进行数据压缩(可选);
4.使用指定的MAC算法生成MAC;
5.使用指定的加密算法进行数据加密;
6.添加SSL记录协议的头,发送数据。
(2)接收方的工作过程为:
1.接收数据,从SSL记录协议的头中获取相关信息;
2.使用指定的解密算法解密数据;
3.使用指定的MAC算法校验MAC;
4.使用压缩算法对数据解压缩(在需要进行);
5.将记录进行数据重组;
6.将数据发送给高层。
7.SSL记录协议处理的最后一个步骤是附加一个SSL记录协议的头,以便构成一个SSL记录。SSL记录协议头中包含了SSL记录协议的若干控制信息。
1.保密性:利用握手协议所定义的共享密钥对SSL净荷(Payload)加密。
2.完整性:利用握手协议所定义的共享的MAC密钥来生成报文的鉴别码(MAC)。
功能
1.保护传输数据的私密性,对数据进行加密和解密
2.验证传输数据的完整性,计算报文的摘要
3.提高传输数据的效率,对报文进行压缩
4.保证数据传输的可靠和有序
SSL协议的缺点
1.客户端假冒
2.无法保护UDP应用
3.SSL协议不能对抗流量分析
4.进程中主密钥泄漏

SSL VPN
1.SSL VPN WEB代理应用
​​​​​​​​​​​​原理:客户端与SSL设备建立SSL VPN连接,SSL vpn设备把server服务转换为client可以打开的链接,客户端访问服务器时,直接走VPN隧道;SSL vpn设备收到数据后解封装,HTTPS协议变为http,SSL vpn设备再以自己为源访问服务器,得到应答后,回应客户端
缺点:只能使用WEB应用。 在这里插入图片描述
在这里插入图片描述
2.SSL VPN 端口映射
端口映射机制,即客户端得有一个类似VPN连接的应用程序(这种玩法适合于TCP的所有应用)
端口映射机制优点:TCP的所有应用都能适用。
端口映射机制缺点:只针对TCP的所有应用
在这里插入图片描述

在这里插入图片描述

3.SSL VPN 的IP连接
原理:Client安装虚拟网卡,虚拟网卡在客户端生成路由表指向虚拟网卡(地址由SSL VPN服务器提供),客户端登录vpn,访问服务器,查询路由表,发现数据包应该交给虚拟网卡处理,虚拟网卡将原来的数据包加密封装在新数据的应用数据中,送入VPn隧道,SSL VPN将数据解封后,露出原数据,然后以SSL vpn为源访问服务器,得到回应后,再将数据封装在新数据包中,发给客户端。
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值