资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
第 25卷 第 8期 计 算 机 应 用 与 软 件 Vol125 No. 82008年 8月 Computer App lications and Software Aug. 2008使 用 HTTP Tunneling技 术 实 现 穿 透 网 络 防 火 墙 的 通 信张 方 田 鑫(北 京 工 业 大 学 应 用 数 理 学 院 北 京 100022)收 稿 日 期 : 2006 - 10 - 12。 张 方 ,副 教 授 ,主 研 领 域 :模 式 识 别 与 人工 智 能 。摘 要 近 年 来 ,防 火 墙 在 网 络 中 得 到 了 广 泛 的 应 用 。 它 能 够 比 较 有 效 地 防 范 病 毒 与 黑 客 的 攻 击 ,保 护 网 络 的 安 全 。 但 是 也 带 来了 一 些 不 利 影 响 ,使 一 些 需 要 进 行 网 络 通 信 的 应 用 软 件 系 统 不 能 正 常 工 作 。 介 绍 一 个 解 决 方 案 ,并 且 重 点 介 绍 通 过 HTTP Tunneling技 术 使 用 基 于 文 本 的 HTTP协 议 传 送 二 进 制 数 据 的 方 法 。关 键 词 防 火 墙 HTTP tunnelingREAL IZAT IO N O F COMM UN ICAT IO N RUNN ING THRO UGH F IREW ALLBY 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 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 discussed.Keywords Firewall HTTP tunneling0 引 言出 于 安 全 的 考 虑 ,网 络 中 加 入 了 越 来 越 多 的 防 火 墙 。 在 防范 恶 意 攻 击 的 同 时 ,也 使 一 些 分 布 在 广 域 网 上 ,各 模 块 间 使 用TCP / IP协 议 通 信 的 应 用 软 件 系 统 受 到 了 影 响 。 虽 然 可 以 通 过配 置 防 火 墙 来 满 足 软 件 系 统 的 通 信 需 求 ,但 有 时 网 管 拒 绝 修 改防 火 墙 的 配 置 。 有 时 弄 不 清 防 火 墙 的 位 置 和 数 量 。 作 者 参 与 开发 的 一 些 应 用 软 件 系 统 就 遇 到 过 这 样 的 问 题 。实 际 上 ,防 火 墙 并 未 完 全 阻 止 网 络 通 信 。 例 如 ,防 火 墙 后 面的 计 算 机 可 以 通 过 防 火 墙 访 问 Internet。 这 一 功 能 一 般 通 过 运行 在 防 火 墙 后 面 的 代 理 服 务 器 来 实 现 。 这 就 提 醒 我 们 ,可 以 借助 HTTP协 议 ,通 过 代 理 服 务 器 来 实 现 应 用 系 统 中 各 模 块 之 间的 通 信 。 为 达 到 这 一 目 的 ,需 要 解 决 两 个 问 题 :第 一 ,借 助 HTTP协 议 ,通 过 代 理 服 务 器 在 软 件 系 统 各 模 块 间 建 立 TCP / IP连 接 ,进 而 实 现 各 模 块 间 的 通 信 。 第 二 ,使 软 件 系 统 的 工 作 方 式 适 合这 种 通 信 模 式 。1 使 用 HTTP Tunneling技 术 穿 透 防 火 墙 通 信使 用 HTTP协 议 的 CONNECT方 法 可 以 通 过 代 理 服 务 器 建立 TCP / IP连 接 ,从 而 借 助 代 理 服 器 实 现 穿 透 防 火 墙 的 通 信 。 与POST、 GET等 方 法 不 同 , CONNECT方 法 不 是 通 过 代 理 服 务 器 转发 一 个 请 求 ,而 是 请 求 通 过 代 理 服 务 器 建 立 到 目 标 地 址 的 连 接 。这 个 连 接 就 像 一 般 的 socket连 接 那 样 ,可 以 直 接 发 送 与 接 收 任意 格 式 的 数 据 。 具 体 做 法 是 :(1) 应 用 程 序 建 立 一 个 到 代 理 服 务 器 的 TCP连 接 。(2) 应 用 程 序 发 送 一 个 包 含 CONNECT方 法 的 HTTP请 求到 代 理 服 务 器 ,格 式 如 下 :CONNECT : . . .(3) 代 理 服 务 器 处 理 这 个 连 接 请 求 并 且 尝 试 建 立 到 : 的 TCP / IP连 接 。(4) 代 理 服 务 器 向 应 用 程 序 发 回 一 个 HTTP响 应 :. . .如 果 code等 于 200,表 示 已 经 在 应 用 程 序 和 :之 间 建 立 了 一 个 “ tunnel” ,也 就 是 一 个 TCP连接 。 双 方 可 以 通 过 “ tunnel” 互 相 发 送 与 接 收 任 何 类 型 数 据 ,直到 连 接 关 闭 。如 果 code不 等 于 200,表 示 应 用 程 序 和 : 之 间 的 连 接 未 建 立 成 功 。(5) 如 果 成 功 地 建 立 了 “ tunnel” ,就 像 建 立 了 一 般 的 socket连 接 那 样 ,使 用 (1)中 建 立 的 TCP连 接 ,通 过 “ tunnel” 发 送 与 接收 数 据 。(6)关 闭 到 代 理 服 务 器 的 连 接 ,这 也 意 味 着 “ tunnel” 被 关闭 。示 例 函 数 如 下 。 函 数 从 建 立 socket开 始 ,说 明 了 所 有 必 须的 步 骤 和 “ tunnel” 的 使 用 方 法 。 为 了 简 单 ,例 子 中 socket采 用 了阻 塞 模 式 ,代 码 中 没 有 进 行 错 误 处 理 。BOOL SendAndRecvThroughAProxyServer( char3 p 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) ;/ /转 换 代 理 服 务 器 的 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( 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, &szL 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 ine 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, nDataLen, 0) ;bRes = TRUE;/ /关 闭 socketclosesocket(m_hSocket) ;return bRes;需 要 特 别 指 出 的 是 。 一 旦 HTTP Tunnel建 立 ,接 收 、 发 送 数据 与 使 用 一 般 的 socket没 有 区 别 ,可 以 通 过 HTTP Tunnel发 送或 接 收 任 何 类 型 的 数 据 。 通 过 上 面 的 例 子 可 以 看 到 ,应 用 软 件改 变 为 使 用 HTTP Tunnel方 式 通 信 所 需 的 修 改 是 很 少 的 。2 调 整 软 件 系 统 的 工 作 模 式应 用 程 序 可 以 通 过 HTTP Tunnel穿 透 防 火 墙 自 由 地 通 信 。但 是 建 立 HTTP Tunnel需 要 先 连 接 到 代
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号