HTTP协议
1.HTTP–Hyper Text Transfer Protocol,超文本传输协议,是一种建立在TCP上的无状态连接,整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求之后,服务端开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端。其中一个请求的开始到一个响应的结束称为事务,当一个事物结束后还会在服务端添加一条日志条目。
2.超文本:包含有超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。 3.URL:唯一地标识万维网中的某一个文档。URL由协议、主机和端口(默认为80)以及文件名三部分构成。
工作过程:
1)、地址解析
如用客户端浏览器请求这个页面:http://localhost.com:8080/index.htm
从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:
协议名:http
主机名:localhost.com
端口:8080
对象路径:/index.html
在这一步,需要域名系统DNS解析域名localhost.com,得主机的IP地址。
2)、封装HTTP请求数据包
把以上部分结合本机自己的信息,封装成一个HTTP请求数据包
3)封装成TCP包,建立TCP连接(TCP的三次握手)
在HTTP工作开始之前,客户机(Web浏览器)首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。这里是8080端口
4)客户机发送请求命令
建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。
5)服务器响应
服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
实体消息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据
6)服务器关闭TCP连接
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码
Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
服务器将响应信息传给客户端,响应体中的内容可能是一个html页面,也可能是一张图片,通过输入流将其读出,并写回到显示器上。
套接字:TCP与上层衔接所用口,TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)或插口。
套接字用(IP地址:端口号)表示。
它是网络通信过程中端点的抽象表示,包含进行网络通信必需的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
HTTP头部:
HTTP关键字:
USER-agent 浏览器标识
Server:响应头包含处理请求的原始服务器的软件信息
Referer:浏览器向 WEB 服务器表明自己是从哪个 网页/URL 获得/点击 当前请求中的网址/URL。
Location:WEB 服务器告诉浏览器,试图访问的对象已经被移到别的位置了,到该头部指定的位置去取。
Session:
Session是可以存储针对于某一个用户的浏览器以及通过其当前窗口打开的任何窗口具有针对性的用户信息存储机制。
通常大家认为,只要关闭浏览器,session就消失,其实这是错误的理解。对session来说也是一样的,除非程序通知服务器删除一个session,否则服务器会一直保留。由于关闭浏览器不会导致session被删除,迫使服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间.
(1)第一次访问某个web站点资源时,客户端提交没有带SessionID的请求(请求报文头没有Cookie头域信息)。
而web服务器会检查是否有SessionID过来,没有则创建SessionID,并根据web程序自身定义在请求哪个资源时添加属于当前会话的信息(也可为空),这个信息列表以SessionID作为标识。然后将SessionID返回给客户端(通过响应报文头的Set-Cookie头域)。
(2 )客户端再次访问同个web站点时,提交带有SessionID的请求(通过Cookie头域存储SessionID)。由服务端判断session是否失效,如果未失效,可查询属于当前会话的信息列表。如果失效,则创建新的session(产生新的SessionID),而原先的session(包含session带的信息列表)则丢失,无法访问。
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的数据包结构:
SSL协议的分层模型
原理:SSL协议是一个分层的协议,共有两层组成。处于SSL协议的底层的是SSL记录层协议(SSL Record Protocol),它位于可靠的传输层协议(如TCP)之上,用于封装高层协议的数据。其中SSL握手协议(SSL Handshake Protocol)允许服务方和客户方互相认证,并在应用层协议传送数据之前协商出一个加密算法和会话**(类似于IPSEC的第一阶段)。
记录层协议:封装高层协议的数据
握手协议:协商认证
SSL体系结构
连接与会话
1.SSL连接(connection)
一个连接是提供一种合适类型服务的传输(OSI分层的定义)。
SSL的连接是点对点的关系。
连接是暂时的,每一个连接和一个会话关联。
2.SSL会话(session)
一个SSL会话是在客户与服务器之间的一个关联。会话由Handshake Protocol创建。会话定义了一组可供多个连接共享的密码安全参数。
会话用以避免为每一个连接提供新的安全参数所需昂贵的协商代价。
*SSL通信的整体过程:
1.网络连接建立,SSL客户端发送消息,消息中包含SSL版本号、密码设置、可实现的算法列表、客户端随机数以及服务器使用SSL协议通信所需的其它信息;
2.SSL服务器端回应消息,确定SSL版本号、加密算法、压缩算法和服务器端的随机数并发送;
3.SSL服务器发出服务器数字证书;
4.向客户端索要证书;
服务端通知客户端握手消息发送完成
客户端向服务器端发送自己的证书
5.客户端生成预主**pre_master_secret,用服务器的公钥加密后返回服务器,服务器利用自己的私钥解密后得到会话**;
6.客户机会向服务器随加密的预主**pre_master_secret一起发送签名的数据和客户自己的证书。
7. 服务器若认证客户成功,使用私钥加密pre_master_secret,然后执行一系列步骤生成master secret。否则会话终止。
8. 客户机与服务器使用master secret生成会话**。该**是对称**,用于加密和解密在SSL会话期间交换的信息,检验信息完整性。
9. CCS:发送消息通知以后从客户机来的消息将用会话**加密。客户机然后发送一条独立的(加密的)消息表明握手的客户机部分已经完成。
10.ying
域主**
无客户端认证的全握手过程
在服务器端不需要认证客户端时,服务器会主动将自己的证书(CA组织颁发的)发送给客户端,让客户端进行验证,其中会携带一个随机数,这个随机数是用来防重放攻击的。
有客户端认证的全握手过程
与无客户端认证的全握手过程相比较,当客户端发起请求,服务器端响应发出自己的证书供客户端认证的同时服务器端会向客户端索要证书,对客户端进行认证,客户端在向服务器递交自己证书时会将自己与服务器目前为止之前的所有握手消息进行数字签名也发送给服务器,用于认证和完整性校验。
SSL存在的问题简要分析:
1)默认不认证客户端:SSL默认是不会对客户端进行认证的,因为双方都要进行认证的话就会增加网络承载的负荷,从而导致网络性能的下降。举个例子:你用淘宝来买东西,对于你来说必须确保自己的付费操作是与真的淘宝服务器进行操作的;而对于淘宝这边,你的身份认证并没有那麽的重要。
解决方案:在必要的网络环境下开启服务器对于客户端的认证。
2)无法保护UDP应用:SSL协议需要在握手之前建立TCP连接,因此不能对UDP应用进行保护。如果要兼顾UDP协议层之上的安全保护,可以采用IP层的安全解决方案(例如IPSEC)。
3)数据的IP头和TCP头不能被保护:SSL只是对应用层的数据进行了加密,数据包的IP头与TCP头仍然是裸漏在公网之上的。
4)**泄漏:除非SSL的工程实现大部分驻留在硬件中,否则主**将会存留在主机的主存储器中,这就意味着任何可以读取SSL进程存储空间的攻击者都能读取主**,因此,不可能面对掌握机器管理特权的攻击者而保护SSL连接。
解决方案:依靠用户管理策略来解决。 7.SSL协议的实现(主要是通过三个协议来实现的):
1)SSL握手协议:SSL握手协议被封装在记录协议中,该协议允许服务器与客户机在应用程序传输和接收数据之前互相认证、协商加密算法和**。在初次建立SSL连接时,服务器与客户机交换一系列消息。
2)SSL修改密文协议:保障SSL传输过程的安全性,客户端和服务器双方应该每隔一段时间改变加密规范。
3)SSL报警协议:SSL报警协议是用来为对等实体传递SSL的相关警告。如果在通信过程中某一方发现任何异常,就需要给对方发送一条警示消息通告。
QUIC协议 改良版的TCP
只需要客户端有浏览器就可以完成
WEB代理
原理:客户端与SSL设备建立SSL v*n连接,SSL v*n设备把server服务转换为client可以打开的链接,客户端访问服务器时,直接走v*n隧道;SSL v*n设备收到数据后解封装,HTTPS协议变为http,SSL v*n设备再以自己为源访问服务器,得到应答后,回应客户端
缺点:只能使用WEB应用。 ‘
SSL v*n的端口映射应用
端口映射机制,即客户端得有一个类似v*n连接的应用程序(这种玩法适合于TCP的所有应用)
端口映射机制优点:TCP的所有应用都能用。
端口映射机制缺点:只针对TCP的所有应用,颗粒度相比WEB代理粗一点。
到本地时,端口不一样
到服务器上,IP不一样
到浏览器,IP不一样
转两次
IP连接:支持所有基于TCP、UDP、ICMP的应用
原理:Client安装虚拟网卡,虚拟网卡在客户端生成路由表指向虚拟网卡(地址由SSL v*n服务器提供),客户端登录v*n,访问服务器,查询路由表,发现数据包应该交给虚拟网卡处理,虚拟网卡将原来的数据包加密封装在新数据的应用数据中,送入v*n隧道,SSL v*n将数据解封后,露出原数据,然后以SSL v*n为源访问服务器,得到回应后,再将数据封装在新数据包中,发给客户端。
SSL v*n与IPSEC v*n对比
SSL v*n主要用于终端远程接入公司内部实现移动办公,IPSec v*n主要用于分支总部多点互联实现总部分支内网互联;
SSL v*n是一种远程安全接入技术(如日中天的v*n,四层v*n技术),因为采用SSL协议而得名。因为Web浏览器都内嵌支持SSL协议,使得SSL v*n可以做到“无客户端”部署,从而使得远程安全接入的使用非常简单,而且整个系统更加易于维护。SSL v*n一般采用插件系统来支持各种TCP和UDP的非Web应用,使得SSL v*n真正称得上是一种v*n,并相对IPSec v*n更符合应用安全的需求,成为远程安全接入主要手段和选择。
正向代理(forward proxy) :一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并制定目标(原始服务器),然后代理向原始服务器转发请求并将获得的内容返回给客户端,客户端才能使用正向代理。
反向代理(Reverse Proxy):以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求的客户端,此时代理服务器对外表现为一个反向代理服务器。
今天整理的是密码学基础,下周就开始复习SQL注入,继续加油吧瑞姐姐
实习虽然难找,但我相信你可以的!!!!!