您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > NAT用户间的TCP通信引擎机制的研究
华中科技大学硕士学位论文NAT用户间的TCP通信引擎机制的研究姓名:刘三民申请学位级别:硕士专业:计算机系统结构指导教师:金海20080601华中科技大学硕士学位论文摘要网络地址转换器NAT已经被广泛应用在各类防火墙和路由器设备中。NAT只支持由内部网络向外发起的通信请求,外部网络节点发起的请求将被禁止。NAT穿越分为UDP穿越和TCP穿越,UDP穿越目前主要采用STUN开发的“HolePunching”策略。相比UDP,在位于不同NAT后的多台主机间建立TCP连接要复杂很多。当前,一部分P2P系统为了保障通信安全可靠,常采用TCP作为通信协议。当需要在不同的NAT用户间进行资源共享时,就要进行TCP连接。问题是,NAT只允许向外发起的连接请求,所以不同NAT用户之间就不能建立TCP连接。因此,许多以TCP作为通信协议的P2P系统并没有解决TCP穿越问题。当前已经有一些这方面的研究,比如,利用代理人来中转通信,在UDP之上建立TCP隧道。这些方案的缺陷是,需要对当前的网络框架进行大规模重构,或者使用了非标准的TCP/IP协议栈。论文提出了一种新的构想叫做TCPBridge,TCPBridge在不更改基于TCP的P2P应用程序任何代码的前提下,将TCP穿越问题转化为UDP穿越问题。TCPBridge捕获应用程序发出的所有TCP连接请求,将它们重定向到TCPBridge中的TCP连接冒名顶替者上。TCP连接冒名顶替者将会接受这些请求。因此,所有的TCP包会发送给TCP冒名顶替者。然后,TCPBridge通知TCP请求连接的目的主机,该通知消息以UDP方式传输,目的主机的TCPBridge收到该消息后,会向上层应用程序发出TCP连接请求。接着,TCPBridge会将所有截获的TCP包通过基于UDP的可靠通信引擎发给目标主机。该构想能够集成到那些没有解决TCP穿越问题的P2P软件中,从而使它们能够支持NAT用户间的相互通信。TCPBridge通过解决TCP穿越的问题,来提高应用程序的可用性。将TCPBridge应用到现有的P2P系统中,收集到的数据显示TCPBridge是可扩展和有活力的,相信TCPBridge将会改善现有P2P应用系统的性能。关键词:对等网络,网络地址转换器,TCP穿越I华中科技大学硕士学位论文AbstractNATisbecomingpopularandsupportedbymanyfirewalldevices.ItbringsasignificantproblemforestablishingconnectionsforP2Papplications.TraversalofNATthroughUDPhasausualapproachcalled“HolePunching”.ComparedtoUDP,establishingTCPconnectionsforhostsbehinddifferentNATsismorecomplex.SomeP2PapplicationsaredesignedtouseTCPasdatatransferringprotocol.Inordertoshareresourceandcooperatewithspecificpeers,weneedtoestablishTCPconnectionsbetweenhostsbehinddifferentNATs(hereaftercalledNAThosts).TheproblemisthatNATonlyallowstheestablishmentofoutgoingconnections,thustwoNAThostscannotestablishdirectTCPconnections.Thus,manyTCP-basedapplicationsdonotaddressTCPtraversalthroughNATsorsopoorly.Somesolutionssuggestusingdelegatestorelayallcommunications,ortunnelingTCPoverUDP.However,theyrequireabigreformtonetworkarchitecture,orusinganon-standardTCP/IPstack.Inthispaper,wepresentanovelideacalledTCPBridge.TCPBridgeconvertsTCPtraversaltoUDPtraversalwithoutmodifyinganybinariesoftheTCP-basedapplications.TCPBridgecapturestheTCPconnectionrequest,andredirectsittotheTCPimpostor.Then,TCPimpostornotifiesthedestinationhost.Atlast,theTCPBridgeofdestinationhostconnectstoitsapplication.Thus,allpacketsarecapturedbyTCPBridge.OurdesigncanbeintegratedwiththoseP2PapplicationswhichhavenotsolvedTCPtraversalproblem,andextendsthemtosupportdirectcommunicationsbetweenNAThosts.ItdealswiththeproblemofTCPtraversal,soastoimprovetheusabilityofapplications.WehaveimplementedTCPBridgeinseveralexistingP2Psystems.StatisticsprovethatTCPBridgeisscalableandrobust,andwebelieveitwillbenefitmanyotherexistingP2Papplications.Keywords:Peertopeer,NAT,TCPtraversalII独创性声明本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到,本声明的法律结果由本人承担。学位论文作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。保密□,在_____年解密后适用本授权书。本论文属于不保密□。(请在以上方框内打“√”)学位论文作者签名:指导教师签名:日期:年月日日期:年月日华中科技大学硕士学位论文1绪论本章首先介绍问题来源,国内外研究现状,然后概述本文研究的重点,昀后介绍本文结构。1.1引言近几年来,P2P作为一项全新的Internet技术飞速发展,不断涌现出新的P2P协议和应用,如Napster[1]、Tapestry[2]、Kademlia[3]、Viceroy[4]等。P2P技术使得任何网络设备可以为其他网络设备服务。它允许终端用户利用Internet架构一个动态、匿名、分布式网络相互传递信息。从而颠覆了传统的C/S信息服务模式,弱化或完全取消了服务器的作用。利用P2P技术,在占用很少的资源的同时却会带来更可靠的服务。对于使用P2P技术的网络游戏来说,由于服务器的部分功能转移到了用户的机器上,有效利用了用户的计算机及带宽资源,运营商在服务器及带宽上的投资可获得极大的节省。除此之外,可以缓解C/S架构的集中式服务器的单点实效、通信瓶颈等问题。使用P2P软件[5~7]所碰到的一个重要问题是,如何在NAT(网络地址转换器)后的节点间建立TCP通信。NAT只允许内网节点主动发起的TCP连接,因而,不同内网节点不能够建立TCP连接。NAT技术主要解决IP地址短缺的问题,NAT是通过将专用网络地址(如企业内部网Intranet)转换为公用地址(如互联网Internet),从而对外隐藏了内部管理的IP地址。这样,通过在内部使用非注册的IP地址,并将它们转换为一小部分外部注册的IP地址,从而减少了IP地址注册的费用以及节省了目前越来越缺乏的地址空间(即IPV4)。同时,这也隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。NAT功能通常被集成到路由器、防火墙、单独的NAT设备中,当然,现在比较流行的操作系统或其他软件(主要是代理软件,如WINROUTE),大多也有着NAT的功能。NAT设备(或软件)维护一个状态表,用来把内部网络的私有1华中科技大学硕士学位论文IP地址映射到外部网络的合法IP地址上去。每个包在NAT设备(或软件)中都被翻译成正确的IP地址发往下一级。与普通路由器不同的是,NAT设备实际上对包头进行修改,将内部网络的源地址变为NAT设备自己的外部网络地址,而普通路由器仅在将数据包转发到目的地前读取源地址和目的地址。NAT[8]分为四类:1.全双工锥形。当内部主机发出一个“外出”的连接会话,就会创建了一个公网/私网地址,一旦这个地址对被创建,全双工锥形NAT会接收随后任何外部端口传入这个公共端口地址的通信。因此,全双工锥形NAT有时候又被称为“混杂”NAT。2.受限锥形。受限制的锥形NAT会对传入的数据包进行筛选,当内部主机发出“外出”的会话时,NAT会记录这个外部主机的IP地址信息,所以,也只有这些有记录的外部IP地址,能够将信息传入到NAT内部,受限制的锥形NAT有效的给防火墙提炼了筛选包的原则——即限定只给那些已知的外部地址“传入”信息到NAT内部。3.端口受限锥形。端口受限制的锥形NAT,与受限制的锥形NAT不同的是:它同时记录了外部主机的IP地址和端口信息,端口受限制的锥形NAT给内部节点提供了同一级别的保护,在维持端口“同一性”过程中,将会丢弃对称NAT传回的信息。4.对称型。与锥形NAT是大不相同的,并不对会话进行端口绑定,而是分配一个全新的公网端口给每一个新的会话。如果ClientA(10.0.0.1:1234)同时发起两个“外出”会话,分别发往S1和S2。对称Nat会分配公共地址155.99.25.11:62000给Session1,然后分配另一个不同的公共地址155.99.25.11:62001给Session2。对称Nat能够区别两个不同的会话并进行地址转换,因为在Session1和Session2中的外部地址是不同的,正是因为这样,Client端的应用程序就迷失在这个地址转换边界线了,因为这个应用程序每发出一个会话都会使用一个新的端口,无法保障只使用同一个端口了。对于锥形NAT,可以采用STUN(TheSimpleTraversalofUserDatagram2华中科技大学硕士学位论文ProtocolthroughNetworkAddressTranslators)协议实现“UDPholepunching”[9]来进行NAT的UDP穿越。本文主要考虑锥形NAT。相比UDP,TCP的NAT穿越要复杂很多。当前的研究主要侧重于如何在NAT上进行TCP打洞[10~13]。NatTrav[14]实现了非对称TCP打洞过程。三个来自康奈尔的作者做了关于穿过NAT的TCP直接连接工作并且结果和本文类似。他们的被称为NUTSS[15]的框架为不同的NAT后的主机的UDP和TCP连接性作了准备,但是他们的TCP技术有一个重大的缺点,协议依靠于为了能够TCP连接的欺骗包,这包在真实的网络作了限制。许多ISP作了进入过滤以防止欺骗包进入他们的网络,这将导致
本文标题:NAT用户间的TCP通信引擎机制的研究
链接地址:https://www.777doc.com/doc-309904 .html