※HTTP 隧道※算法
--------浏览器
HTTP是基于文本的经过浏览器检索网页的协议。 大多数状况下你躲在代理服务器的后面,经过LAN接入互联网。 在IE的Connection Option中, 你给出你的LAN的设置。 这个代理服务器运行着基于文本的协议, 你从它那里能够获得外界的网络HTTP相关的数据。是的, 用HTTP经过它上面的小的望孔能够链接到外部世界, 并用二进制协议获得你想要的数据, 或者甚至是你的协议。 它经过HTTP。缓存
※HTTPS 解释※安全
---------服务器
在HTTPS中, 数据以一种安全的方式从浏览器到服务器和从服务器到浏览器。 它是二进制的协议; 当他穿过代理时, 代理不知道是什么。 代理仅仅容许二进制流打开, 让服务器和客户二者之间交换数据。 代理服务器认为咱们在进行某个安全的会话。网络
对于HTTPS, 你的浏览器链接到代理服务器,并送出一个命令编码
CONNECT neurospeech.com:443 HTTP/1.0 <CR><LF>加密
HOST neurospeech.com:443<CR><LF>操作系统
【...若是须要,HTTP头部的其它行以<CR><LF>结束 】代理
<CR><LF> // 最后的空行
接下来, 代理服务器把它做为某个HTTP安全会话, 打开一个到需求服务器和端口的二进制流。 若是链接确立, 代理服务器返回以下回应:
HTTP/1.0 200 Connection Established<CR><LF>
【...忽略全部HTTP头部的其它行以<CR><LF>结束,】
<CR><LF> // 最后的空行
如今, 浏览器链接到了终端服务器, 能够用二进制和安全的方式交换数据了。
宁任声 14:45:05
经过HTTP协议与代理服务器创建链接,协议信令中包含要链接到的远程主机的IP和端口号,若是有须要身份验证的话还须要加上受权信息,服务器收到信令后首先进行身份验证,经过后便与远程主机创建链接,链接成功以后会返回给客户端200,表示验证经过,就这么简单,下面是具体的信令格式:
CONNECT 124.xxx.xxx.xx:443 HTTP/1.1 //创建http隧道要443端口
Proxy-Connection: Keep-Alive //客户端到服务器端的链接持续有效
Content-Length: 0
Host: 124.xxx.xxx.xx //主机地址
Proxy-Authorization:Basic YTph //身份验证信息
User-Agent: OpenFetion //能够标识请求者的信息,如什么浏览器类型和版本、操做系统、使用语言等信息
其中Proxy-Authorization是身份验证信息,Basic后面的字符串是用户名和密码组合后进行base64编码的结果,也就是对username:password进行base64编码。
其实编码对安全性没什么意义,base64严格意义上都已经不能算是加密了,如今信息安全这么受重视的年代,不须要密钥的加密算法仍是叫编码更贴切一些,抓到这种包以后瞬间就能够获得用户名和密码。
HTTP/1.0 200 Connection established
客户端收到收面的信令后表示成功创建链接,接下来要发送给远程主机的数据就能够发送给代理服务器了,代理服务器创建链接后会在根据IP地址和端口号对应的链接放入缓存,收到信令后再根据IP地址和端口号从缓存中找到对应的链接,将数据经过该链接转发出去。