使用HTTPTunneling技术实现穿透网络防火墙的通信

上传人:油条 文档编号:12464919 上传时间:2017-09-03 格式:PDF 页数:3 大小:372.58KB
返回 下载 相关 举报
使用HTTPTunneling技术实现穿透网络防火墙的通信_第1页
第1页 / 共3页
使用HTTPTunneling技术实现穿透网络防火墙的通信_第2页
第2页 / 共3页
使用HTTPTunneling技术实现穿透网络防火墙的通信_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《使用HTTPTunneling技术实现穿透网络防火墙的通信》由会员分享,可在线阅读,更多相关《使用HTTPTunneling技术实现穿透网络防火墙的通信(3页珍藏版)》请在金锄头文库上搜索。

1、第 25卷 第 8期 计 算 机 应 用 与 软 件 Vol125 No. 82008年 8月 Computer App lications and Software Aug. 2008使 用 HTTP Tunneling技 术 实 现 穿 透 网 络 防 火 墙 的 通 信张 方 田 鑫(北 京 工 业 大 学 应 用 数 理 学 院 北 京 100022)收 稿 日 期 : 2006 - 10 - 12。 张 方 ,副 教 授 ,主 研 领 域 :模 式 识 别 与 人工 智 能 。摘 要 近 年 来 ,防 火 墙 在 网 络 中 得 到 了 广 泛 的 应 用 。 它 能 够 比 较 有

2、 效 地 防 范 病 毒 与 黑 客 的 攻 击 ,保 护 网 络 的 安 全 。 但 是 也 带 来了 一 些 不 利 影 响 ,使 一 些 需 要 进 行 网 络 通 信 的 应 用 软 件 系 统 不 能 正 常 工 作 。 介 绍 一 个 解 决 方 案 ,并 且 重 点 介 绍 通 过 HTTP Tunneling技 术 使 用 基 于 文 本 的 HTTP协 议 传 送 二 进 制 数 据 的 方 法 。关 键 词 防 火 墙 HTTP tunnelingREAL IZAT IO N O F COMM UN ICAT IO N RUNN ING THRO UGH F IREW AL

3、LBY HTTP TUNNEL INGZhang Fang Tian Xin( Institute of Applied M athem atics and Physics, B eijing U niversity of Technology, B eijing 100022, China)Abstract In recent years, firewall is app lied extensively in internet. It can defend effectively the attack from virus and hacker and ensurethe security

4、 of internet. But it also brings a lot of p roblem s. The app lication that requiring Network communications can not work normally. Asolution to this p roblem is p rovided. The technique of HTTP turneling is introduced, and a method for binary data transm ission by HTTP p roto2col is mainly discusse

5、d.Keywords Firewall HTTP tunneling0 引 言出 于 安 全 的 考 虑 ,网 络 中 加 入 了 越 来 越 多 的 防 火 墙 。 在 防范 恶 意 攻 击 的 同 时 ,也 使 一 些 分 布 在 广 域 网 上 ,各 模 块 间 使 用TCP / IP协 议 通 信 的 应 用 软 件 系 统 受 到 了 影 响 。 虽 然 可 以 通 过配 置 防 火 墙 来 满 足 软 件 系 统 的 通 信 需 求 ,但 有 时 网 管 拒 绝 修 改防 火 墙 的 配 置 。 有 时 弄 不 清 防 火 墙 的 位 置 和 数 量 。 作 者 参 与 开发 的

6、一 些 应 用 软 件 系 统 就 遇 到 过 这 样 的 问 题 。实 际 上 ,防 火 墙 并 未 完 全 阻 止 网 络 通 信 。 例 如 ,防 火 墙 后 面的 计 算 机 可 以 通 过 防 火 墙 访 问 Internet。 这 一 功 能 一 般 通 过 运行 在 防 火 墙 后 面 的 代 理 服 务 器 来 实 现 。 这 就 提 醒 我 们 ,可 以 借助 HTTP协 议 ,通 过 代 理 服 务 器 来 实 现 应 用 系 统 中 各 模 块 之 间的 通 信 。 为 达 到 这 一 目 的 ,需 要 解 决 两 个 问 题 :第 一 ,借 助 HTTP协 议 ,通 过

7、 代 理 服 务 器 在 软 件 系 统 各 模 块 间 建 立 TCP / IP连 接 ,进 而 实 现 各 模 块 间 的 通 信 。 第 二 ,使 软 件 系 统 的 工 作 方 式 适 合这 种 通 信 模 式 。1 使 用 HTTP Tunneling技 术 穿 透 防 火 墙 通 信使 用 HTTP协 议 的 CONNECT方 法 可 以 通 过 代 理 服 务 器 建立 TCP / IP连 接 ,从 而 借 助 代 理 服 器 实 现 穿 透 防 火 墙 的 通 信 。 与POST、 GET等 方 法 不 同 , CONNECT方 法 不 是 通 过 代 理 服 务 器 转发 一

8、 个 请 求 ,而 是 请 求 通 过 代 理 服 务 器 建 立 到 目 标 地 址 的 连 接 。这 个 连 接 就 像 一 般 的 socket连 接 那 样 ,可 以 直 接 发 送 与 接 收 任意 格 式 的 数 据 。 具 体 做 法 是 :(1) 应 用 程 序 建 立 一 个 到 代 理 服 务 器 的 TCP连 接 。(2) 应 用 程 序 发 送 一 个 包 含 CONNECT方 法 的 HTTP请 求到 代 理 服 务 器 ,格 式 如 下 :CONNECT : . . .(3) 代 理 服 务 器 处 理 这 个 连 接 请 求 并 且 尝 试 建 立 到 : 的 T

9、CP / IP连 接 。(4) 代 理 服 务 器 向 应 用 程 序 发 回 一 个 HTTP响 应 :. . .如 果 code等 于 200,表 示 已 经 在 应 用 程 序 和 :之 间 建 立 了 一 个 “ tunnel” ,也 就 是 一 个 TCP连接 。 双 方 可 以 通 过 “ tunnel” 互 相 发 送 与 接 收 任 何 类 型 数 据 ,直到 连 接 关 闭 。如 果 code不 等 于 200,表 示 应 用 程 序 和 : 之 间 的 连 接 未 建 立 成 功 。(5) 如 果 成 功 地 建 立 了 “ tunnel” ,就 像 建 立 了 一 般 的

10、 socket连 接 那 样 ,使 用 (1)中 建 立 的 TCP连 接 ,通 过 “ tunnel” 发 送 与 接收 数 据 。(6)关 闭 到 代 理 服 务 器 的 连 接 ,这 也 意 味 着 “ tunnel” 被 关闭 。示 例 函 数 如 下 。 函 数 从 建 立 socket开 始 ,说 明 了 所 有 必 须的 步 骤 和 “ tunnel” 的 使 用 方 法 。 为 了 简 单 ,例 子 中 socket采 用 了阻 塞 模 式 ,代 码 中 没 有 进 行 错 误 处 理 。BOOL SendAndRecvThroughAProxyServer( char3 p

11、szProxyIP, / /代 理 服 务 器 IPint nProxyPort, / /代 理 服 务 器 端 口char3 p szDesIP, / /目 的 IPint nDesPort, / /目 的 端 口char3 szSendData, / /发 送 的 数 据int& nDataLen, / /发 送 /接 收 的 数 据 长 度char3 szRecvData) / /接 收 的 数 据BOOL bRes = FALSE;/ /建 立 socketSOCKET m_hSocket;m_hSocket = socket( PF_ INET, SOCK_STREAM, 0) ;/

12、 /转 换 代 理 服 务 器 的 IP地 址 和 端 口 号 到 规 定 格 式SOCKADDR_ IN sockAddr;sockAddr. sin_fam ily =AF_ INET;sockAddr. sin_addr. s_addr = inet_addr(p szProxyIP) ;/ /代 理 服 务 器 的 IP地 址sockAddr. sin_port = htons( nProxyPort) ; / /代 理 服 务 器 的 端 口 号/ /连 接 到 代 理 服 务 器connect(m_hSocket, ( SOCKADDR3 ) &sockAddr, sizeof(

13、sockAddr) ) ;char szL ine 1024 ;/ /建 立 一 个 仅 包 含 CONNECT方 法 的 HTTP请 求sp rintf( szL ine, CONNECT % s: % d HTTP /1. 0 r n r n , p szDesIP,nDesPort) ;/ /发 送 HTTP请 求send (m_hSocket, szL ine, str1en ( szL ine) , 0) ;/ /接 收 代 理 的 响 应 中 的 第 一 行 ,这 一 行 包 含 了 连 接 建 立 状 态 代 码for( int n = 0; recv(m_hSocket, &s

14、zL ine n , 1, 0) &szL ine n ! = n ; n + + ) ;szL ine + + n = 0;/ /查 看 代 理 服 务 器 的 响 应char3 pCode = strstr( szL ine, ) ;if( strncmp (pCode + 1, 200 , 3) = = 0) / /状 态 码 = = 200,到 目 的 IP:目 的 端 口 的 连 接 已 经 建 立/ /读 代 理 服 务 器 响 应 的 剩 余 行 ,不 必 处 理dofor( n = 0; recv(m _hSocket, &szL ine n , 1, 0) & ( szL i

15、ne n != n ; n + + ) ;szL ine + + n = 0;while ( ! ( ( n = = 2) &( szL ine 0 = = r ) &( szL ine 1 = n ) ) ) ;/ / tunne1已 经 建 立 ,可 以 象 一 般 的 socket那 样 接 收 或 发 送 数 据/ /发 送 数 据 到 目 的 IP:目 的 端 口send (m_hSocket, szSendData, nDataLen, 0) ;/ /从 目 的 IP:目 的 端 口 接 受 数 据nDataLen = recv(m_hSocket, szRecvData, nDa

16、taLen, 0) ;bRes = TRUE;/ /关 闭 socketclosesocket(m_hSocket) ;return bRes;需 要 特 别 指 出 的 是 。 一 旦 HTTP Tunnel建 立 ,接 收 、 发 送 数据 与 使 用 一 般 的 socket没 有 区 别 ,可 以 通 过 HTTP Tunnel发 送或 接 收 任 何 类 型 的 数 据 。 通 过 上 面 的 例 子 可 以 看 到 ,应 用 软 件改 变 为 使 用 HTTP Tunnel方 式 通 信 所 需 的 修 改 是 很 少 的 。2 调 整 软 件 系 统 的 工 作 模 式应 用 程 序 可 以 通 过 HTTP Tunnel穿 透 防 火 墙 自 由 地 通 信 。但 是 建 立 HTTP Tunnel需 要 先 连 接 到 代

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

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号