http隧道+防火墙穿透.doc

上传人:hw****26 文档编号:3551441 上传时间:2019-06-04 格式:DOC 页数:7 大小:48.50KB
下载 相关 举报
http隧道+防火墙穿透.doc_第1页
第1页 / 共7页
http隧道+防火墙穿透.doc_第2页
第2页 / 共7页
http隧道+防火墙穿透.doc_第3页
第3页 / 共7页
http隧道+防火墙穿透.doc_第4页
第4页 / 共7页
http隧道+防火墙穿透.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、http tunnel 原理 及 穿透防火墙方法 -1tunnel 很多文章解释为 “隧道 “, “通道“.这里所谓的 tunnel 是指一种绕过防火墙端口屏蔽的通讯方式, 可以有效地解决防火墙对端口的屏蔽作用.原理:防火墙两端的数据包封装在防火墙所允许通过的数据包类型或是端口上,然后穿过防火墙与对端通讯,当封装的数据包到达目的地时,再将数据包还原,并将还原后的数据包交送到相应的服务进程上。 举例如下: A 主机系统在防火墙之后,受防火墙保护。防火墙配置的访问控制原则是只允许 80 端口的数据进出,屏蔽了其他的所有端口. B 主机系统在防火墙之外,是开放的。 现在假设需要从 A 系统 Teln

2、et 到 B 系统上去,怎么办?使用正常的 Telnet 肯定是不可能了,但我们知道可用的只有 80 端口,那么这个时候使用http Tunnel,就是一个好的办法。思路如下 : 在 A 机器上运行一个 Tunnel 的 Client 端,让它侦听本机的一个不被使用的任意指定端口(Port1024 and port tunnel client.exe:1234 -Firewall-tunnel server.exe:80-telnet Server.exe:23说明:telnet.exe 和 tunnel client.exe 是在同一个机器上的.tunnel server.exe 和 tel

3、net Server.exe 是在同一台机器上的.按照流程图: telnet.exe: 把发送的数据转向到 tunnel client.exe 的 1234 端口tunnel client.exe 把数据发送给 tunnuel server.exe:80 ( 这次连接外网机器的 80 端口了, 防火墙应该是没有异议吧 ) Friewall 只允许 80 端口的数据进出.tunnel server.exe 负责把接收到的数据转发给 telnet 的服务进程, 并可以接收 telnet 服务进程的数据telnet Server.exe 把要发送的数据转给 tunnel server.exe,由它把

4、数据经 80 端口发给 tunnel client.exe. HTTP Tunnel 原理 及 穿透防火墙方法-2这篇文章提供一个通过代理服务器建立 TCP 连接来绕过防火墙的方法.通常情况下防火墙限制了很多端口的连接,但是 HTTP 的连接还是允许的(否则谁也上不了网)。协议指定了一个 CONNECT 请求方法. Client 可以使用这个方法通知 Proxy Server 连接指定的服务器 IP 和端口号. Proxy Server在接收到这个请求后与指定的服务器 IP 和端口号建立连接,如果连接失败会通知 Client 并关闭连接,成功则给 Client 发送“Coonection Es

5、tablished“ 并保持连接. 在与 Client 和 Real Server 建立连接后,Proxy Server 就不关心数据的内容了,此时就表现为 tunnel 了.Client-FireWall-Proxy Server:80-Real Server| | | | Src 只允许 80 端口数据通过 数据转发 Dest相关协议:在 Client 一端, 我们只对 CONNECT 方法感兴趣. 在 Client 和 ProxyServer 建立连接后, Client 必须发送 CONNECT 请求.格式如下: CONNECT : .Proxy Server 处理来自 Client 的

6、请求, 然后和 destionation_address:destination_port 建立连接.proxy server 给 Client 返回 HTTP 回应.格式如下:.如果 Proxy Server 分析 Client 请求格式有误或者与 destionation_address:destination_port 连接失败, 都会关闭连接.如果成功则可以转发数据, 作为 tunnel 使用.HTTP 隧道(HTTP 代理 Socket 客户)来源: 2007-2-14 06:40:20 字体: 大 中 小 我要投稿! 收藏 HTTP 隧道 (HTTP 代理 Socket 客户)-这

7、篇文章贡献自 Akash kava, 翻译: bugfree/CSDN环境: VC6 HTTP 隧道-HTTP 是基于文本的通过浏览器检索网页的协议。 大多数情况下你躲在代理服务器的后面,通过 LAN 接入互联网。 在 IE 的 Connection Option 中, 你给出你的 LAN 的设置。 这个代理服务器运行着基于文本的协议, 你从它那里可以得到外界的网络 HTTP 相关的数据。是的, 用 HTTP 通过它上面的小的望孔可以连接到外部世界, 并用二进制协议得到你想要的数据, 或者甚至是你的协议。 它通过 HTTP。 HTTPS 解释-在 HTTPS 中, 数据以一种安全的方式从浏览器

8、到服务器和从服务器到浏览器。 它是二进制的协议; 当他穿过代理时, 代理不知道是什么。 代理仅仅允许二进制流打开, 让服务器和客户两者之间交换数据。 代理服务器认为我们在进行某个安全的会话。 对于 HTTPS, 你的浏览器连接到代理服务器,并送出一个命令 CONNECT :443 HTTP/1.0 HOST :443【. 如果需要,HTTP 头部的其它行以 结束 】/ 最后的空行 接下来, 代理服务器把它作为某个 HTTP 安全会话, 打开一个到需求服务器和端口的二进制流。 如果连接确立, 代理服务器返回如下回应: HTTP/1.0 200 Connection Established【. 忽

9、略所有 HTTP 头部的其它行以结束,】/ 最后的空行 现在, 浏览器连接到了终端服务器, 可以用二进制和安全的方式交换数据了。 字串 8 怎样做这个-现在是你的程序任务去愚弄代理服务器, 行为如 IE 一样进行 Secure HTTP。 1. Connect to Proxy Server first. 2. Issue CONNECT Host:Port HTTP/1.1. 3. Issue . 4. Wait for a line of response. If it contains HTTP/1.X 200 , the connection is successful. 5. Rea

10、d further lines of response until you receive an empty line. 6. Now, you are connected to outside world through a proxy. Do any data exchange you want. 示例源代码 / You need to connect to on port 25/ Through a proxy on 192.0.1.1, on HTTP Proxy 4480/ CSocketClient is Socket wrapping class/ When you appl

11、y operator on CString, it receives/ a Line of response from socket until CRLF tryCString Request,Response;CSocketClient Client; Client.ConnectTo(“192.0.1.1“,4480); / Issue CONNECT CommandRequest = “CONNECT :25 HTTP/1.0“;ClientResponse; / Ignore HTTP Version int n = Response.Find( );Response = Respon

12、se.Mid(n+1); mr ans / Http Response Must be 200 onlyif(Response.Left(3)!=“200“)/ Connection refused from HTTP Proxy ServerAfxMessageBox(Response); / Read Response Lines until you receive an empty line.doClientResponse;if (Response.IsEmpty()break;while (true); / Coooooooool. Now connected to :25/ Do

13、further SMTP Protocol here. catch (CSocketException * pE)pE-ReportError(); 库源码-文件 Dns.h 包含所有所有 DNS 相关的源代码。 它利用了其它的库, 如 SocketEx.h, SocketClient.h, 和 NeuroBuffer.h CSocketEx- 作为一个 Socket 功能的包裹(wapper)类。(如果你不是确切知道 CSocket 怎样工作的, 它是非常笨重和不可信的) 所有的函数根 CSocket 同名。 你可以直接应用这个类 CSocketClient- 派生自 CSocketEx,

14、并且根据详细的 Winsock 错误抛出适当地例外(exceptions). 为了方便的发送和接收,它定义了两个操作符, 和 on CString, it receives/ Line of response from socket until CRLFtryCHttpProxySocketClient Client; Client.SetProxySettings(“192.0.1.1“,1979); / Connect to server on port 25Client.ConnectTo(““,25); / You now have access to on port 25/ If you do not call SetProxySettings, then/ you are connected to directly if/ you have direct access, so always use/ CHttpProxySocketClient and no need to do any/ extra coding. catch(CSocketException * pE) pE-ReportError();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。