日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

NAT是什么?

NAT是Net Address Translation的縮寫(xiě),即網(wǎng)絡(luò)地址轉(zhuǎn)換

NAT部署在網(wǎng)絡(luò)出口的位置,位于內(nèi)網(wǎng)跟公網(wǎng)之間,是連接內(nèi)網(wǎng)主機(jī)和公網(wǎng)的橋梁,雙向流量都必須經(jīng)過(guò)NAT,裝有NAT軟件的路由器叫NAT路由器,NAT路由器擁有公網(wǎng)IP。

穿越NAT的迷霧:深入理解NAT和NAT穿透,STUN、TURN、ICE的關(guān)系

 

你的家庭和辦公網(wǎng)絡(luò)環(huán)境大多是經(jīng)過(guò)NAT路由中轉(zhuǎn)的方式聯(lián)網(wǎng)。這也意味著你在家PC通過(guò)WIFI聯(lián)網(wǎng),你在PC上通過(guò)命令行(ifconfig)查看到的IP地址(內(nèi)網(wǎng)),跟通過(guò)baidu查看到的IP地址(公網(wǎng)),不一樣,這也能證明你的PC處于NAT后面。

NAT解決什么問(wèn)題?

NAT主要用來(lái)解決IPv4地址不夠用的問(wèn)題。

IPv4用32位表示網(wǎng)絡(luò)地址,最大能表示2的32次方(2^32=40億)個(gè)IP地址,但隨著各種聯(lián)網(wǎng)設(shè)備的快速增長(zhǎng),IPv4地址不夠用了,IPv6又遠(yuǎn)水不解近渴,怎么辦?NAT技術(shù)應(yīng)運(yùn)而生。

NAT是怎么工作的?

內(nèi)網(wǎng)地址:RFC1918規(guī)定了三個(gè)保留地址段落:

10.0.0.0-10.255.255.255;

172.16.0.0-172.31.255.255;


192.168.0.0-192.168.255.255。

這三個(gè)范圍分別處于A、B、C類(lèi)的地址段,不向特定的用戶(hù)分配,被IANA作為私有地址保留。這些地址可以在任何組織或企業(yè)內(nèi)部使用,和其他Internet地址的區(qū)別就是,僅能在內(nèi)部使用,不能作為全球路由地址。

NAT后面的內(nèi)網(wǎng)主機(jī)使用內(nèi)網(wǎng)地址,也叫本地地址,是主機(jī)上內(nèi)網(wǎng)上的標(biāo)識(shí)。內(nèi)網(wǎng)主機(jī)要跟公網(wǎng)通信,必須經(jīng)過(guò)NAT中轉(zhuǎn),NAT會(huì)自動(dòng)為經(jīng)過(guò)的網(wǎng)絡(luò)包做內(nèi)外網(wǎng)地址轉(zhuǎn)換(這也是NAT的含義),公網(wǎng)地址是主機(jī)在互聯(lián)網(wǎng)上的標(biāo)識(shí)

NAT原理:內(nèi)網(wǎng)主機(jī)向外網(wǎng)主機(jī)發(fā)送的網(wǎng)絡(luò)包,在經(jīng)過(guò)NAT時(shí),IP和PORT會(huì)被替換為NAT為該主機(jī)分配的外網(wǎng)IP/PORT,也就是該內(nèi)網(wǎng)主機(jī)在NAT上的出口IP/PORT,外網(wǎng)主機(jī)收到該網(wǎng)絡(luò)包后,會(huì)視該網(wǎng)絡(luò)包是從NAT發(fā)送的;外網(wǎng)主機(jī)只能通過(guò)NAT為該內(nèi)網(wǎng)主機(jī)分配的外網(wǎng)IP/PORT,向它發(fā)送網(wǎng)絡(luò)包,內(nèi)網(wǎng)主機(jī)的本地地址對(duì)外界不可見(jiàn),網(wǎng)絡(luò)包在經(jīng)過(guò)NAT的時(shí)候,會(huì)被NAT做外網(wǎng)IP/PORT到內(nèi)網(wǎng)IP/PORT的轉(zhuǎn)換。

可見(jiàn),NAT維護(hù)內(nèi)網(wǎng)主機(jī)內(nèi)網(wǎng)地址和在NAT上為它分配的外網(wǎng)地址之間的映射關(guān)系,需要維護(hù)一張關(guān)聯(lián)表。NAT在兩個(gè)傳輸方向上做兩次地址轉(zhuǎn)化,出方向做源(Src)信息替換,入方向做目的(Dst)信息替換,內(nèi)外網(wǎng)地址轉(zhuǎn)換是在NAT上自動(dòng)完成的。NAT網(wǎng)關(guān)的存在對(duì)通信雙方是透明的。

那NAT是如何緩解IPv4地址枯竭問(wèn)題的呢?答案是端口多路復(fù)用,通過(guò)PAT(Port Address Translation),讓NAT背后的多臺(tái)內(nèi)網(wǎng)主機(jī)共享一個(gè)外網(wǎng)IP,最大限度節(jié)省外網(wǎng)IP資源。

NAT背后的多臺(tái)內(nèi)網(wǎng)主機(jī)是如何實(shí)現(xiàn)共享一個(gè)外網(wǎng)IP的呢?它是通過(guò)修改外出數(shù)據(jù)包的源IP和端口。

假設(shè)內(nèi)網(wǎng)主機(jī)H1和H2位于NAT之后,H1通過(guò)本地地址10.0.0.1:port1給公網(wǎng)主機(jī)X發(fā)送數(shù)據(jù)包,在經(jīng)過(guò)NAT的時(shí)候,該數(shù)據(jù)包的IP:PORT被修改為NAT的外網(wǎng)地址1.2.3.4:2222。

H2通過(guò)本地地址10.0.0.2:port2向公網(wǎng)主機(jī)X發(fā)送數(shù)據(jù)包,在經(jīng)過(guò)NAT的時(shí)候,該數(shù)據(jù)包的ip:port被修改為NAT的外網(wǎng)1.2.3.4:3333。

穿越NAT的迷霧:深入理解NAT和NAT穿透,STUN、TURN、ICE的關(guān)系

 

雖然H1和H2的IP都被映射到了相同的NAT外網(wǎng)IP(1.2.3.4),但NAT為它們分配了不同的端口(2222和3333),所以可以通過(guò)端口區(qū)分H1和H2。之后公網(wǎng)主機(jī)X向內(nèi)網(wǎng)主機(jī)H1發(fā)送網(wǎng)絡(luò)包的時(shí)候,只需要把1.2.3.4:2222作為目標(biāo)地址:端口,就可以由NAT自動(dòng)完成轉(zhuǎn)換,正確轉(zhuǎn)交到H1主機(jī)。

這便是基于端口復(fù)用的NAT方式(NPAT)的工作原理。通過(guò)將內(nèi)網(wǎng)不同連接(主機(jī)到NAT)映射到同一公網(wǎng)IP的不同端口,從而實(shí)現(xiàn)公網(wǎng)IP的復(fù)用和解復(fù)用,這種一對(duì)多的方式也叫做端口轉(zhuǎn)換PAT或IP偽裝。

NAT的限制和約束

NAT把網(wǎng)絡(luò)分為公網(wǎng)和內(nèi)網(wǎng),內(nèi)網(wǎng)主機(jī)可以給外網(wǎng)主機(jī)直接發(fā)送網(wǎng)絡(luò)包,而外網(wǎng)主機(jī)卻不能主動(dòng)給內(nèi)網(wǎng)主機(jī)發(fā)送網(wǎng)絡(luò)包,也就是說(shuō)網(wǎng)絡(luò)通信必須由內(nèi)網(wǎng)側(cè)主動(dòng)發(fā)起,公網(wǎng)主機(jī)不能主動(dòng)訪問(wèn)內(nèi)網(wǎng)主機(jī),這是NAT帶來(lái)的限制和約束。

內(nèi)網(wǎng)主機(jī)主動(dòng)給外網(wǎng)主機(jī)發(fā)送過(guò)網(wǎng)絡(luò)包之后,外網(wǎng)主機(jī)才有可能給內(nèi)網(wǎng)主機(jī)發(fā)送網(wǎng)絡(luò)包。

NAT的類(lèi)型

NAT的實(shí)現(xiàn)方式分靜態(tài)轉(zhuǎn)換動(dòng)態(tài)轉(zhuǎn)換端口多路復(fù)用三種,但目前用的最多的還是端口多路復(fù)用,是最典型的一種應(yīng)用模式。

穿越NAT的迷霧:深入理解NAT和NAT穿透,STUN、TURN、ICE的關(guān)系

 

首先,從大的層面上,端口復(fù)用型NAT(Net Address Port Translation)可以分為對(duì)稱(chēng)型NAT和非對(duì)稱(chēng)型NAT。

  1. 對(duì)稱(chēng)型NAT(Symmetric NAT),內(nèi)網(wǎng)某主機(jī)向公網(wǎng)的不同網(wǎng)絡(luò)地址(或端口)發(fā)送2個(gè)不同的網(wǎng)絡(luò)包,對(duì)稱(chēng)型NAT會(huì)為這2個(gè)不同的網(wǎng)絡(luò)包產(chǎn)生2個(gè)不同出口端口號(hào)。換言之,NAT網(wǎng)關(guān)會(huì)把內(nèi)部主機(jī)“地址端口對(duì)”和外部主機(jī)“地址端口對(duì)”完全相同的報(bào)文看作一個(gè)連接,在NAT網(wǎng)關(guān)上創(chuàng)建一個(gè)公網(wǎng)“地址端口對(duì)”作為出口地址,只有收到報(bào)文的外部主機(jī)從對(duì)應(yīng)的端口對(duì)發(fā)送回應(yīng)的報(bào)文,才能被轉(zhuǎn)換。對(duì)稱(chēng)型NAT無(wú)法打洞,只能通過(guò)TURN Server轉(zhuǎn)發(fā)。
  2. 非對(duì)稱(chēng)型NAT(也叫錐型NAT),內(nèi)網(wǎng)某主機(jī)向外網(wǎng)主機(jī)發(fā)送網(wǎng)絡(luò)包,NAT會(huì)為該內(nèi)網(wǎng)主機(jī)生成一個(gè)公網(wǎng)(出口)IP:PORT,之后,不管該內(nèi)網(wǎng)主機(jī)會(huì)通過(guò)該出口IP:PORT跟外網(wǎng)所有(如果可以)主機(jī)通信,而不會(huì)被映射到其他端口(出口IP顯然也不會(huì)變)。

錐型NAT細(xì)分:

  1. Full Cone NAT(全錐型NAT):只要內(nèi)網(wǎng)某主機(jī)給外網(wǎng)地址主動(dòng)發(fā)送過(guò)一個(gè)網(wǎng)絡(luò)包(NAT會(huì)為之生成公網(wǎng)出口IP:PORT),外網(wǎng)任何主機(jī)都可以通過(guò)該內(nèi)網(wǎng)主機(jī)在NAT上的出口IP:PORT,向該內(nèi)網(wǎng)主機(jī)發(fā)送網(wǎng)絡(luò)包,也就是對(duì)外網(wǎng)主機(jī)IP和PORT都不設(shè)限,這是最寬松的類(lèi)型。
  2. Restricted Cone NAT(IP受限型NAT):如果內(nèi)網(wǎng)某主機(jī),給外網(wǎng)某IP發(fā)送過(guò)一個(gè)網(wǎng)絡(luò)包,則外網(wǎng)可以通過(guò)該IP向該內(nèi)網(wǎng)主機(jī)發(fā)送網(wǎng)絡(luò)包,注意,只要以該IP作為網(wǎng)絡(luò)包src ip就行,其他IP作為src不行,不限制端口號(hào)。
  3. 舉個(gè)例子,內(nèi)網(wǎng)主機(jī)10.0.0.1給外網(wǎng)1.2.3.4:2222主動(dòng)發(fā)過(guò)網(wǎng)絡(luò)包,外網(wǎng)主機(jī)可以通過(guò)1.2.3.4:3333(作為src)向內(nèi)網(wǎng)主機(jī)10.0.0.1發(fā)送網(wǎng)絡(luò)包,端口號(hào)不限,但不能通過(guò)其他ip向內(nèi)網(wǎng)主機(jī)發(fā)送網(wǎng)絡(luò)包。
  4. Port Restricted Cone NAT(Port受限型NAT):跟IP受限類(lèi)似,但是它更嚴(yán)格,既限制IP,又限制端口號(hào)。內(nèi)網(wǎng)主機(jī)給外網(wǎng)主機(jī)10.0.0.1:2222發(fā)送過(guò)網(wǎng)絡(luò)包,外網(wǎng)只能以10.0.0.1:2222為src,向內(nèi)網(wǎng)主機(jī)發(fā)送網(wǎng)絡(luò)包。

NAT類(lèi)型檢測(cè)

NAT隔離內(nèi)外網(wǎng),外網(wǎng)不能主動(dòng)訪問(wèn)內(nèi)網(wǎng),但P2P項(xiàng)目,需要位于NAT后的主機(jī)(Peer)建立連接,所以需要檢測(cè)NAT類(lèi)型,再判斷Peer之間能否直接建立連接,以及怎么建立連接。

檢測(cè)NAT類(lèi)型主要是利用上述NAT特點(diǎn),通過(guò)測(cè)試連通性和比對(duì)端口號(hào)來(lái)實(shí)現(xiàn)目的,所以要搞清楚類(lèi)型檢測(cè),必須對(duì)照NAT類(lèi)型定義來(lái)看。

另外,重復(fù)一下:NAT后的主機(jī)給外網(wǎng)發(fā)網(wǎng)絡(luò)包,網(wǎng)絡(luò)包在經(jīng)過(guò)NAT的時(shí)候,NAT會(huì)為該主機(jī)分配出口IP:PORT,NAT會(huì)用該公網(wǎng)(出口)IP:PORT替換網(wǎng)絡(luò)包的SRC,這樣,接收端收到包之后,查閱包的src信息,會(huì)得到NAT出口IP:PORT,如同該包是直接從NAT發(fā)送過(guò)來(lái)的一樣。

NAT類(lèi)型檢測(cè)的前提條件:需要有一臺(tái)位于公網(wǎng)的服務(wù)器(server),且該server擁有2個(gè)公網(wǎng)IP地址,并在ip1:port1和ip2:port2做監(jiān)聽(tīng)

注意:檢測(cè)步驟中的server通過(guò)ip:port向client回包,是指server回包的時(shí)候,會(huì)把ip:port設(shè)置為rsp包的src ip和src port。

檢測(cè)的步驟:

【步驟1】判斷client是否位于NAT后面

很簡(jiǎn)單,位于NAT后面的主機(jī)跟公網(wǎng)通信要做內(nèi)外網(wǎng)地址轉(zhuǎn)換,兩個(gè)IP不一樣。所以,可以通過(guò)以下操作完成:

  1. client向server ip1:port1發(fā)送一個(gè)req UDP包。
  2. server收到udp包之后,從IP頭部取出src IP,從UDP頭部取出src PORT,作為rsp UDP的payload,發(fā)送給client。
  3. client收到rsp UDP,取出payload里的IP和PORT,跟自己的IP對(duì)比,如果相同,則client位于公網(wǎng),擁有公網(wǎng)IP,檢測(cè)完成;否則,client位于NAT背后。

 

【步驟2】判斷是否全錐型Full Cone NAT

client向server ip1:port1發(fā)送一個(gè)req UDP包,請(qǐng)求server通過(guò)ip2:port2(以ip2:port2作為rsp UDP的src)向client回UDP包。

根據(jù)全錐型NAT的定義,如果client收到了rsp UDP,那說(shuō)明NAT對(duì)外網(wǎng)發(fā)包IP都不限制,說(shuō)明client是全錐型NAT。但全錐型NAT很少,大概率收不到rsp UDP包,如果收不到,則需要繼續(xù)判斷。

【步驟3】判斷是否對(duì)稱(chēng)型 Symmetirc NAT

client向server ip2:port2發(fā)送一個(gè)req udp。server收到后,把收到的req udp的src ip和src port取出來(lái),塞進(jìn)rsp UDP的payload字段,通過(guò)ip2:port2(以ip2:port2作為rsp UDP的src)向client回UDP包。

收到的rsp UDP之后,取出payload中的ip和port,跟步驟1中的ip和port對(duì)比,如果不一樣,則是對(duì)稱(chēng)型NAT。

因?yàn)楦鶕?jù)前面的定義,對(duì)稱(chēng)型NAT,會(huì)為同一內(nèi)網(wǎng)IP,根據(jù)不同的外網(wǎng)IP,分配不同的NAT出口PORT。

如果一樣,那么肯定是錐型NAT,步驟2已經(jīng)測(cè)試了全錐型,那剩下的就只有ip受限錐型和port受限錐型兩種NAT類(lèi)型需要繼續(xù)判斷了。

【步驟4】判斷是受限錐型Restricted Cone還是PORT受限錐型

client向server ip2:port2發(fā)送一個(gè)req udp,要求server用ip2、且不同于port2的端口向client回rsp udp。就是用ip2+不同于port2的其他port作為udp的src向client回包。

如果client能收到rsp udp,那說(shuō)明只要ip相同,哪怕port不相同,NAT也放行,所以NAT是IP受限型;如果沒(méi)收到,那就是PORT受限型,說(shuō)明只能通過(guò)port2回包。

至此,所有的NAT類(lèi)型便都檢測(cè)出來(lái)了,是不是很簡(jiǎn)單?

對(duì)稱(chēng)型NAT不能直接建立P2P連接,只能通過(guò)中轉(zhuǎn)服務(wù)器relay包。

分享到:
標(biāo)簽:穿透 NAT
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定