NAT.docx

上传人:b****5 文档编号:5627053 上传时间:2022-12-29 格式:DOCX 页数:9 大小:24.86KB
下载 相关 举报
NAT.docx_第1页
第1页 / 共9页
NAT.docx_第2页
第2页 / 共9页
NAT.docx_第3页
第3页 / 共9页
NAT.docx_第4页
第4页 / 共9页
NAT.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

NAT.docx

《NAT.docx》由会员分享,可在线阅读,更多相关《NAT.docx(9页珍藏版)》请在冰豆网上搜索。

NAT.docx

NAT

NAT的基本工作原理是,当私有网主机和公共网主机通信的IP包经过NAT网关时,将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换。

由于NAT实现是私有IP和NAT的公共IP之间的转换,那么,私有网中同时与公共网进行通信的主机数量就受到NAT的公共IP地址数量的限制。

为了克服这种限制,NAT被进一步扩展到在进行IP地址转换的同时进行Port的转换,这就是网络地址端口转换NAPT(NetworkAddressPortTranslation)技术。

NAPT与NAT的区别在于,NAPT不仅转换IP包中的IP地址,还对IP包中TCP和UDP的Port进行转换。

这使得多台私有网主机利用1个NAT公共IP就可以同时和公共网进行通信。

NAT的特点是在NAT网关上建立一个NAT映射表,里面记录了每个公网IP对应的私网IP的转换。

NAT的局限就是每个公网IP只能映射到一个私网IP上,所以有多少私网IP要上网,就必须用对应数量的公网IP来转换,所以就限制了数量了

而PAT(NAPT)增加了端口的概念,每个私网IP对应同一个公网IP的不同端口号,这样子就能实现多个私网IP共用一个公网IP了。

外网要访问你这个内网主机,目的地址就是公网IP和代表你的端口号(这里也涉及一个映射回去的问题,也就是端口映射)

内网一台机器用192.168.0.2:

8000上QQ,转成公网就202.3.6.100:

8000

那内网另一台也要用8000上,但公网的8000已经被占用,所以这台旧上不了了

把端口转换为8001就可以上了。

要详细说的话会很长而且比较难理解的,而且我是手打的比较累哦,简单说吧,

地址转换分两种

1,NAT

2,PAT

我们平时共享上网其实是应用了PAT((端口地址转换)

就是在支持NAT,PAT的路由器或者NAT机上添加对应地址的地址转换表(就是内网IP和公网IP加上端口号的对照表),当有数据从外网或者从内网互相进出的时候,路由就对照一下地址表,找到对应地址的话就把数据包里的目的IP地址从原来的公网地址变成对应的内网地址和端口,这样就可以成功的传到目的主机上了,而当几台电脑同时用同一个公网IP地址发送数据的时候,就根据不同的端口来判断是哪个连接,如果源端口相同就自动更改源端口

随着IPv6时代的到来,我也一直怀疑,是不是还有必要再去学习NAT技术——因为网络的资源不再如IPv4时代匮乏,而NAT技术正是为解决IP地址的紧缺而存在的,如此,NAT便没有存在的必要了。

但是,随着这篇文章的翻译,我的怀疑慢慢变成庆幸,渐而又变为肯定,通过翻译所学到的东西,不再仅仅是翻译第一手资料带来的成就感,更多的是通过翻译,去领悟技术前辈们的智慧与经验,也通过翻译,养成自己从第一手资料获得信息的习惯,从而将视野放得更宽,让理解更为透彻——至少,很多东西都是要经过仔细斟酌才真正转化为自己思想的一部分的。

正是如此,我才坚定的要把这篇文章翻译完,也如之前所提到的,如果时间允许的话,我会用C#来写一些例子,让大家更好的理解NAT技术,掌握NAT技术(主要涉及到即时通讯、文件对等传输和语音应用三个方面)。

这篇文章主要是介绍一下“代理”机制的起因以及给P2P应用带来的不便,不需要任何基础知识:

1.Introduction

1、简介

关键词:

middleboxe(s)——我翻译成“代理”,也许有更好的翻译

host——我翻译成“主机”,希望大家不要理解成服务器了,主机就是一台普通的终端机

Present-dayInternethasseenubiquitousdeploymentof"middleboxes"suchasnetworkaddresstranslators(NAT),drivenprimarilybytheongoingdepletionoftheIPv4addressspace.Theasymmetricaddressingandconnectivityregimesestablishedbythesemiddleboxes,however,havecreateduniqueproblemsforpeer-to-peer(P2P)applicationsandprotocols,suchasteleconferencingandmultiplayeron-linegaming.TheseissuesarelikelytopersistevenintotheIPv6world,whereNATisoftenusedasanIPv4compatibilitymechanism[NAT-PT],andfirewallswillstillbecommonplaceevenafterNATisnolongerrequired.

在当今的Internet中,普遍存在使用“代理”设备来进行网络地址转换(NAT),导致这种现象的原因是IPV4地址空间的资源耗尽危机。

虽然不对称asymmetric的地址分配和连通性制度已经在代理中被定义,但是却给端对端应用程序和协议制定造成了一些特殊的问题。

像电话会议和多媒体网络游戏。

这些问题即使在IPV6世界中还是会存在,因为NAT作为IPV4的一种兼容性机制经常被使用[NAT-PT],并且防火墙将仍然将普遍存在,即使不再需要NAT技术。

Currentlydeployedmiddleboxesaredesignedprimarilyaroundtheclient/serverparadigm,inwhichrelativelyanonymousclientmachinesactivelyinitiateconnectionstowell-connectedservershavingstableIPaddressesandDNSnames.

Mostmiddleboxesimplementanasymmetriccommunicationmodelinwhichhostsontheprivateinternalnetworkcaninitiateoutgoingconnectionstohostsonthepublicnetwork,butexternalhostscannotinitiateconnectionstointernalhostsexceptasspecificallyconfiguredbythemiddlebox'sadministrator.InthecommoncaseofNAPT,aclientontheinternalnetworkdoesnothaveauniqueIPaddressonthepublicInternet,butinsteadmustshareasinglepublicIPaddress,managedbytheNAPT,withotherhostsonthesameprivatenetwork.Theanonymityandinaccessibilityoftheinternalhostsbehindamiddleboxisnotaproblemforclientsoftwaresuchaswebbrowsers,whichonlyneedtoinitiateoutgoingconnections.Thisinaccessibilityissometimesseenasaprivacybenefit.

当前使用的“代理”技术主要是为客户端/服务端C/S结构设计的,为了实现那些需要连接但是又没有固定IP地址的客户端能够连接到一台配置好的拥有固定IP和DNS域名的服务器。

大多数的“代理”使用一种asymmetric通信模型,即私网(局域网)的主机能发起一个“外出”连接去连接公网上的主机。

但是公网上的主机却无法发送信息给私网上的主机(除非对“代理”进行特殊的配置),NAPT(网络地址端口转换)的普通情况是,一个私网客户端不需要一个公网的固定的IP地址,但是必须要共享一个由NAPT控制的公网的固定IP地址(当然这个NAPT是处于同一个私网内部的)。

这样的话,这些匿名的并且看起来难以触及的藏在NAT之后的内网主机对于像Web浏览器这种软件来说就不是一个问题,因为内网的主机只需要发起向外部的连接就可以了。

这样一来,无法触及也还是有他的优点的——那就是具有保密性。

Inthepeer-to-peerparadigm,however,Internethoststhatwouldnormallybeconsidered"clients"needtoestablishcommunicationsessionsdirectlywitheachother.TheinitiatorandtherespondermightliebehinddifferentmiddleboxeswithneitherendpointhavinganypermanentIPaddressorotherformofpublicnetworkpresence.Acommonon-linegamingarchitecture,forexample,isfortheparticipatingapplicationhoststocontactawell-knownserverforinitializationandadministrationpurposes.Subsequenttothis,thehostsestablishdirectconnectionswitheachotherforfastandefficientpropagationofupdatesduringgameplay.

Similarly,afilesharingapplicationmightcontactawell-knownserverforresourcediscoveryorsearching,butestablishdirectconnectionswithpeerhostsfordatatransfer.Middleboxescreateproblemsforpeer-to-peerconnectionsbecausehostsbehindamiddleboxnormallyhavenopermanentlyusablepublicportsontheInternettowhichincomingTCPorUDPconnectionsfromotherpeerscanbedirected.

RFC3235[NAT-APPL]brieflyaddressesthisissue,butdoesnotofferanygeneralsolutions.

然而,在P2P的应用中,Internet上的“客户机”之间是需要建立一个通信会话直连的。

邀请者和响应者也许会处于不同的NAT之后,也许他们都没有固定IP或者即使有也不是公网的IP地址。

举例来说,在一个普通的网络游戏体系结构中,都是通过客户端向一个具有公网固定IP的服务器发起申请进行初始化并通过验证的。

同时,客户端之间也要建立直连,才使网络间传输的速度加快,保证数据即时更新(不然抢不到装备啊,呵呵)。

同样的,一个文件共享应用程序也必须通过到一个服务器上去查找它想要的资源,然后再到拥有这个数据的主机上去下载(BT网站,走了一个中介),“代理”造成了很多P2P直连的问题,因为藏在“代理”之后的的主机通常没有固定的端口来使其他的客户端发起的TCP或UDP连接能够最终到达。

RFC3235[NAT-APPL]简要的提到了这个问题,但是没有给出任何的解决方案。

InthisdocumentweaddresstheP2P/middleboxproblemintwoways.First,wesummarizeknownmethodsbywhichP2Papplicationscanworkaroundthepresenceofmiddleboxes.Second,weprovideasetofapplicationdesignguidelinesbasedonthesepracticestomakeP2Papplicationsoperatemorerobustlyovercurrently-deployedmiddleboxes.Further,weprovidedesignguidelinesforfuturemiddleboxestoallowthemtosupportP2Papplicationsmoreeffectively.OurfocusistoenableimmediateandwidedeploymentofP2Papplicationsrequiringtotraversemiddleboxes.

在这篇文章中,我们用两种方式讨论P2P/代理的问题。

首先,概要的讲叙已有的P2P应用程序能够在现有的代理机制中的工作原理。

然后,我们提供一组应用程序设计指南,基于已有的实践,在现有的配置好的代理上,来使得P2P应用程序操作更加有条理。

最后,我们提供了设计指南,为以后的代理机制能够更方便支持P2P应用程序。

讨论的焦点是如何直接的、广泛的配置那些需要经过“代理”的P2P应用程序。

Peer-to-Peer(P2P)communicationacrossmiddleboxes(术语篇)

2.Terminology

2.术语

Inthissectionwefirstsummarizesomemiddleboxterms.WefocushereonthetwokindsofmiddleboxesthatcommonlycauseproblemsforP2Papplications.

在这一章节中,首先概要的介绍一下“代理”技术的一些术语。

然后集中讨论两种造成P2P应用问题的代理机制。

Firewall

AfirewallrestrictscommunicationbetweenaprivateinternalnetworkandthepublicInternet,typicallybydroppingpacketsthataredeemedunauthorized.AfirewallexaminesbutdoesnotmodifytheIPaddressandTCP/UDPportinformationinpacketscrossingtheboundary.

防火墙

防火墙限制了私网与公网的通信,它主要是将(防火墙)认为XX的的包丢弃,防火墙只是检验包的数据,并不修改数据包中的IP地址和TCP/UDP端口信息。

NetworkAddressTranslator(NAT)

Anetworkaddresstranslatornotonlyexaminesbutalsomodifiestheheaderinformationinpacketsflowingacrosstheboundary,allowingmanyhostsbehindtheNATtosharetheuseofasmallernumberofpublicIPaddresses(oftenone).Networkaddresstranslatorsinturnhavetwomainvarieties:

网络地址转换(NAT)

当有数据包通过时,网络地址转换器不仅检查包的信息,还要将包头中的IP地址和端口信息进行修改。

以使得处于NAT之后的机器共享几个仅有的公网IP地址(通常是一个)。

网络地址转换器主要有两种类型:

BasicNAT

ABasicNATmapsaninternalhost'sprivateIPaddresstoapublicIPaddresswithoutchangingtheTCP/UDPportnumbersinpacketscrossingtheboundary.BasicNATisgenerallyonlyusefulwhentheNAThasapoolofpublicIPaddressesfromwhichtomakeaddressbindingsonbehalfofinternalhosts.

基础NAT

基础NAT将私网主机的私有IP地址转换成公网IP地址,但并不将TCP/UDP端口信息进行转换。

基础NAT一般用在当NAT拥有很多公网IP地址的时候,它将公网IP地址与内部主机进行绑定,使得外部可以用公网IP地址访问内部主机。

(译者注:

实际上是只将IP转换,192.168.0.23<->210.42.106.35,这与直接设置IP地址为公网IP还是有一定区别的,特别是对于企业来说,外部的信息都要经过统一防火墙才能到达内部,但是内部主机又可以使用公网IP)

NetworkAddress/PortTranslator(NAPT)

Byfarthemostcommon,aNetworkAddress/PortTranslatorexaminesandmodifiesboththeIPaddressandtheTCP/UDPportnumberfieldsofpacketscrossingtheboundary,allowingmultipleinternalhoststoshareasinglepublicIPaddresssimultaneously.

Referto[NAT-TRAD]and[NAT-TERM]formoregeneralinformationonNATtaxonomyandterminology.AdditionaltermsthatfurtherclassifyNAPTaredefinedinmorerecentwork[STUN].WhenaninternalhostopensanoutgoingTCPorUDPsessionthroughanetworkaddress/porttranslator,theNAPTassignsthesessionapublicIPaddressandportnumbersothatsubsequentresponsepacketsfromtheexternalendpointcanbereceivedbytheNAPT,translated,andforwardedtotheinternalhost.TheeffectisthattheNAPTestablishesaportbindingbetween(privateIPaddress,privateportnumber)and(publicIPaddress,publicportnumber).

TheportbindingdefinestheaddresstranslationtheNAPTwillperformforthedurationofthesession.AnissueofrelevancetoP2PapplicationsishowtheNATbehaveswhenaninternalhostinitiatesmultiplesimultaneoussessionsfromasingle(privateIP,privateport)pairtomultipledistinctendpointsontheexternalnetwork.

网络地址和端口转换(NAPT)

这是最普遍的情况,网络地址/端口转换器检查、修改包的IP地址和TCP/UDP端口信息,这样,更多的内部主机就可以同时使用一个公网IP地址。

请参考[NAT-TRAD]和[NAT-TERM]两个文档了解更多的NAT分类和术语信息。

另外,关于NAPT的分类和术语,[STUN]在最近做了更多的定义。

当一个内部网主机通过NAT打开一个“外出”的TCP或UDP会话时,NAPT分配给这个会话一个公网IP和端口,用来接收外网的响应的数据包,并经过转换通知内部网的主机。

这样做的效果是,NAPT在[私有IP:

私有端口]和[公网IP:

公网端口]之间建立了一个端口绑定。

端口绑定指定了NAPT将在这个会话的生存期内进行地址转换任务。

这中间存在一个这样的问题,如果P2P应用程序从内部网络的一个[私有IP地址:

端口]对同时发出多条会话给不同的外网主机,那么NAT会怎样处理呢?

请看以下几种方案。

ConeNAT

Afterestablishingaportbindingbetweena(privateIP,privateport)tupleanda(publicIP,publicport)tuple,aconeNATwillre-usethisportbindingforsubsequentsessionstheapplicationmayinitiatefromthesameprivateIPaddressandportnumber,foraslongasatleastonesessionusingtheportbindingremainsactive.

锥形NAT

(译者注:

为什么叫做锥形呢?

请看以下图形,终端和外部服务器,都通过NAT分派的这个绑定地址对来传送信息,就象一个漏斗一样,筛选并传递信息)

当建立了一个[私有IP:

端口]-[公网IP:

端口]端口绑定之后,对于来自同一个[私有IP:

端口]会话,锥形NAT服务器允许发起会话的应用程序重复使用这个端口绑定,一直到这个会话结束才解除(端口绑定)。

Forexample

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1