NAT用户间的TCP通信引擎机制的研究.pdf
《NAT用户间的TCP通信引擎机制的研究.pdf》由会员分享,可在线阅读,更多相关《NAT用户间的TCP通信引擎机制的研究.pdf(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、华中科技大学硕士学位论文NAT用户间的TCP通信引擎机制的研究姓名:刘三民申请学位级别:硕士专业:计算机系统结构指导教师:金海20080601华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 摘摘 要要 网络地址转换器 NAT 已经被广泛应用在各类防火墙和路由器设备中。NAT 只支持由内部网络向外发起的通信请求,外部网络节点发起的请求将被禁止。NAT 穿越分为 UDP 穿越和 TCP 穿越,UDP 穿越目前主要采用 STUN 开发的“Hole Punching”策略。相比 UDP,在位于不同 NAT 后的多台主机间建立 TCP 连接要复杂很多。当前
2、,一部分 P2P 系统为了保障通信安全可靠,常采用 TCP 作为通信协议。当需要在不同的 NAT 用户间进行资源共享时,就要进行 TCP 连接。问题是,NAT 只允许向外发起的连接请求,所以不同 NAT 用户之间就不能建立 TCP 连接。因此,许多以 TCP 作为通信协议的 P2P 系统并没有解决 TCP 穿越问题。当前已经有一些这方面的研究,比如,利用代理人来中转通信,在 UDP 之上建立 TCP 隧道。这些方案的缺陷是,需要对当前的网络框架进行大规模重构,或者使用了非标准的 TCP/IP 协议栈。论文提出了一种新的构想叫做 TCPBridge,TCPBridge 在不更改基于 TCP 的
3、P2P应用程序任何代码的前提下,将 TCP 穿越问题转化为 UDP 穿越问题。TCPBridge 捕获应用程序发出的所有 TCP 连接请求,将它们重定向到 TCPBridge 中的 TCP 连接冒名顶替者上。TCP 连接冒名顶替者将会接受这些请求。因此,所有的 TCP 包会发送给 TCP 冒名顶替者。然后,TCPBridge 通知 TCP 请求连接的目的主机,该通知消息以 UDP 方式传输,目的主机的 TCPBridge 收到该消息后,会向上层应用程序发出 TCP连接请求。接着,TCPBridge 会将所有截获的 TCP 包通过基于 UDP 的可靠通信引擎发给目标主机。该构想能够集成到那些没有
4、解决 TCP 穿越问题的 P2P 软件中,从而使它们能够支持 NAT 用户间的相互通信。TCPBridge 通过解决 TCP 穿越的问题,来提高应用程序的可用性。将 TCPBridge 应用到现有的 P2P 系统中,收集到的数据显示 TCPBridge 是可扩展和有活力的,相信 TCPBridge 将会改善现有 P2P 应用系统的性能。关关 键键 词:词:对等网络,网络地址转换器,TCP 穿越 I华 中 科 技 大 学 硕 士 学 位 论 文 华 中 科 技 大 学 硕 士 学 位 论 文 Abstract NAT is becoming popular and supported by ma
5、ny firewall devices.It brings a significant problem for establishing connections for P2P applications.Traversal of NAT through UDP has a usual approach called“Hole Punching”.Compared to UDP,establishing TCP connections for hosts behind different NATs is more complex.Some P2P applications are designe
6、d to use TCP as data transferring protocol.In order to share resource and cooperate with specific peers,we need to establish TCP connections between hosts behind different NATs(hereafter called NAT hosts).The problem is that NAT only allows the establishment of outgoing connections,thus two NAT host
7、s can not establish direct TCP connections.Thus,many TCP-based applications do not address TCP traversal through NATs or so poorly.Some solutions suggest using delegates to relay all communications,or tunneling TCP over UDP.However,they require a big reform to network architecture,or using a non-sta
8、ndard TCP/IP stack.In this paper,we present a novel idea called TCPBridge.TCPBridge converts TCP traversal to UDP traversal without modifying any binaries of the TCP-based applications.TCPBridge captures the TCP connection request,and redirects it to the TCP impostor.Then,TCP impostor notifies the d
9、estination host.At last,the TCPBridge of destination host connects to its application.Thus,all packets are captured by TCPBridge.Our design can be integrated with those P2P applications which have not solved TCP traversal problem,and extends them to support direct communications between NAT hosts.It
10、 deals with the problem of TCP traversal,so as to improve the usability of applications.We have implemented TCPBridge in several existing P2P systems.Statistics prove that TCPBridge is scalable and robust,and we believe it will benefit many other existing P2P applications.Key words:Peer to peer,NAT,
11、TCP traversal II独创性声明独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到,本声明的法律结果由本人承担。学位论文作者签名:日期:年 月 日 学位论文版权使用授权书学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权华中科技大学可以将本学位论文的全部或部
12、分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。保密,在_年解密后适用本授权书。本论文属于 不保密。(请在以上方框内打“”)学位论文作者签名:指导教师签名:日期:年 月 日 日期:年 月 日 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 1 绪绪 论论 本章首先介绍问题来源,国内外研究现状,然后概述本文研究的重点,最后介绍本文结构。1.1 引言引言 近几年来,P2P作为一项全新的Internet技术飞速发展,不断涌现出新的P2P协议和应用,如Napster1、Tapestry2、Kademlia3、Vicer
13、oy4等。P2P技术使得任何网络设备可以为其他网络设备服务。它允许终端用户利用Internet架构一个动态、匿名、分布式网络相互传递信息。从而颠覆了传统的C/S信息服务模式,弱化或完全取消了服务器的作用。利用P2P技术,在占用很少的资源的同时却会带来更可靠的服务。对于使用P2P技术的网络游戏来说,由于服务器的部分功能转移到了用户的机器上,有效利用了用户的计算机及带宽资源,运营商在服务器及带宽上的投资可获得极大的节省。除此之外,可以缓解C/S架构的集中式服务器的单点实效、通信瓶颈等问题。使用P2P软件57所碰到的一个重要问题是,如何在NAT(网络地址转换器)后的节点间建立TCP通信。NAT只允许
14、内网节点主动发起的TCP连接,因而,不同内网节点不能够建立TCP连接。NAT技术主要解决IP地址短缺的问题,NAT是通过将专用网络地址(如企业内部网Intranet)转换为公用地址(如互联网Internet),从而对外隐藏了内部管理的 IP 地址。这样,通过在内部使用非注册的 IP 地址,并将它们转换为一小部分外部注册的 IP 地址,从而减少了IP 地址注册的费用以及节省了目前越来越缺乏的地址空间(即IPV4)。同时,这也隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。NAT 功能通常被集成到路由器、防火墙、单独的 NAT 设备中,当然,现在比较流行的操作系统或其他软件(主要是代理软件,
15、如 WINROUTE),大多也有着 NAT 的功能。NAT 设备(或软件)维护一个状态表,用来把内部网络的私有 1华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 IP 地址映射到外部网络的合法 IP 地址上去。每个包在 NAT 设备(或软件)中都被翻译成正确的 IP 地址发往下一级。与普通路由器不同的是,NAT 设备实际上对包头进行修改,将内部网络的源地址变为 NAT 设备自己的外部网络地址,而普通路由器仅在将数据包转发到目的地前读取源地址和目的地址。NAT8分为四类:1全双工锥形。当内部主机发出一个“外出”的连接会话,就会创建了一个公网/私网地址
16、,一旦这个地址对被创建,全双工锥形 NAT 会接收随后任何外部端口传入这个公共端口地址的通信。因此,全双工锥形 NAT 有时候又被称为“混杂”NAT。2受限锥形。受限制的锥形 NAT 会对传入的数据包进行筛选,当内部主机发出“外出”的会话时,NAT 会记录这个外部主机的 IP 地址信息,所以,也只有这些有记录的外部 IP 地址,能够将信息传入到 NAT 内部,受限制的锥形 NAT 有效的给防火墙提炼了筛选包的原则即限定只给那些已知的外部地址“传入”信息到 NAT 内部。3端口受限锥形。端口受限制的锥形 NAT,与受限制的锥形 NAT 不同的是:它同时记录了外部主机的 IP 地址和端口信息,端口
17、受限制的锥形 NAT 给内部节点提供了同一级别的保护,在维持端口“同一性”过程中,将会丢弃对称NAT 传回的信息。4对称型。与锥形 NAT 是大不相同的,并不对会话进行端口绑定,而是分配一个全新的公网端口 给每一个新的会话。如果 Client A(10.0.0.1:1234)同时发起两个“外出”会话,分别发往 S1 和 S2。对称 Nat 会分配公共地址155.99.25.11:62000给Session1,然 后 分 配 另 一 个 不 同 的 公 共 地 址155.99.25.11:62001 给 Session2。对称 Nat 能够区别两个不同的会话并进行地址转换,因为在 Session
18、1 和 Session2 中的外部地址是不同的,正是因为这样,Client端的应用程序就迷失在这个地址转换边界线了,因为这个应用程序每发出一个会话都会使用一个新的端口,无法保障只使用同一个端口了。对于锥形NAT,可以采用STUN(The Simple Traversal of User Datagram 2华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 Protocol through Network Address Translators)协议实现“UDP hole punching”9来进行NAT的UDP穿越。本文主要考虑锥形NAT。相比UDP
19、,TCP的NAT穿越要复杂很多。当前的研究主要侧重于如何在NAT上进行TCP打洞1013。NatTrav14实现了非对称TCP打洞过程。三个来自康奈尔的作者做了关于穿过NAT的TCP直接连接工作并且结果和本文类似。他们的被称为NUTSS15的框架为不同的NAT后的主机的UDP和TCP连接性作了准备,但是他们的TCP技术有一个重大的缺点,协议依靠于为了能够TCP连接的欺骗包,这包在真实的网络作了限制。许多ISP作了进入过滤以防止欺骗包进入他们的网络,这将导致作者的协议失败。因而,很多P2P应用并未实现NAT的TCP穿越。为了解决该问题,本文所描述的技术在相当于NUTSS环境中为连接性做真实的假设
20、时避免了欺骗。为了解决 NAT 给很多协议带来的困难,MIDCOM 架构被提了出来。MIDCOM 是一种可以允许 NAT 或者防火墙后面的用户根据需要改变 NAT 行为的而允许连接的一种协议。这个系统虽然在某些情况下是适用的,当它却不能保证每个时候都可以。在那些用户没有办法控制 NAT 的情况下,这种方法对于 P2P的连接还是行不通的。很多时候NAT或者防火墙后面的用户通过代理服务器进行连接。一种商业的代理解决方法是Hopster16提供的,Hopsetr的代理在连接方本地以隧道级别的传输在本地运行,它通过HTTPS(端口 443)连接到Hopster自己的机器。但是,因为Hopster的代理
21、需要所有的传输都经过他们的机器,该方法跟TCPBridge比起来就显得低效了。1.2 国内外研究现状国内外研究现状 Michael Walfish认为网络上的中间件像NAT和中转Server是到处存在且必不可少的。DOA(Delegation-Oriented-Architecture)17提倡所用通信都应是非直接的通过中间件进行中转,这些中间件包括个人电脑。在DOA中,每个主 3华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 机都有唯一的代理节点集,称为路由表。每个节点都能其代理集来联系。每个主机有 160bit来标识,各个主机发布它的路由集到一
22、个全局DHT中。如果节点想与节点通信,他会从DHT中获取B的路由集,并把数据包按顺序依次发给代理节点。问题是,DOA与当前的网络拓扑有很大不同,难以部署在当前因特网上。为了绕开NAT的TCP穿越的困难,Newrong 1819提出了使用合适的会话协议来交换UDP端口,并在UDP之上建立TCP隧道。本文的设计目标是透明的加载到应用中,因而不希望改变当前的标准TCP/IP协议栈。主服务器游戏服务器交换服务器好友服务器安全认证用户控制房间分配虚拟 LAN 构建引擎用户信息收集引擎模拟 P2P 交换引擎视音频交换好友管理好友战队管理器数据库数据库认证加密引擎IPX 欺骗引擎虚拟 LAN 数据流控制模块
23、信息控制P2P 数据控制模块视音频系统TCP/IP 欺骗引擎好友/战队IPX 局域网对战游戏棋牌小游戏远程教育TCP/IP局域网对战游戏视频应用浩方对战平台插件管理器其他应用外部应用服务器端服务器端客户端客户端 图 1.1 浩方的系统结构图 目前,与TCPBridge最为相似的是浩方电子竞技对战平台20,它的系统结构如图 1.1 所示。其主要思想是通过将所有登录平台的用户按地理位置邻近划分为若干个域,每个域都由集群结构的游戏服务器来管理。游戏服务器在域内建立若干个虚拟局域网P21,每个域内的用户随机的加入虚拟局域网。玩家在游戏时所产生的全部的通信包被平台客户端截获,然后将游戏场景共享信息包转发
24、给游戏服务器,游戏服务器在玩家所在的虚拟局域网中进行应用层多播来转发广播包。这种结构缺点很明显,由于游戏场景的共享需要游戏服务器的辅助,所以平台的运营需要大量的游戏服务器的支撑,从而需要大量的运营投资。同时C/S架 4华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 构使得平台的可扩展性,可靠性很差,而且玩家随机的加入虚拟局域网使得同一游戏场景中的节点间延迟不能保证,游戏时的流畅度不能保证。1.3 课题背景与研究内容课题背景与研究内容 针对传统 TCP 穿越的缺点,本课题提出并实现了一种基于 P2P 技术的 NAT用户间的通信引擎 TCPBridge
25、。它通过在将连接请求动态的转化为可靠 UDP 传输,从而使系统具有高可用性,保证用户的体验。根据课题的研究内容,针对电子竞技游戏平台的具体应用,TCPBridge 涉及到的研究内容包括游戏传输协议分析、TCP 连接的欺骗,网络传输数据的截获及处理、可靠的 UDP 传输机制、UDP 的 NAT 穿越、拥塞控制等方面的问题。通过对网络传输协议的分析,本文提出了以不同的传输协议插件对各种应用层的游戏提供支持。首先,TCPBridge 捕获应用程序发出的所有 TCP 连接请求,将它们重定向到 TCPBridge 中的 TCP 连接冒名顶替者上。TCP 连接冒名顶替者将会处理(接受)这些请求。因此,接下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NAT 用户 TCP 通信 引擎 机制 研究
限制150内