摘要:網(wǎng)絡地址轉(zhuǎn)換,其基本工作原理是當私有網(wǎng)主機與公共網(wǎng)逐漸通信的經(jīng)過網(wǎng)關(guān)時,將包中的源或目的在私有和的公共之間進行轉(zhuǎn)換。由于包的源已經(jīng)被轉(zhuǎn)換成的公共,響應的包將被發(fā)送到。對于通信雙方而言,這種地址的轉(zhuǎn)換過程是完全透明的。
一:為什么需要NAT
由于IP地址隨著互聯(lián)網(wǎng)的發(fā)展而逐漸稀缺,難以使得每臺主機都擁有一個公網(wǎng)上的IP地址,且并不是所有主機都需要一個公網(wǎng)上的地址,于是就有了NAT技術(shù)。
NAT(The IP Network Address Translator)網(wǎng)絡地址轉(zhuǎn)換,其基本工作原理是:當私有網(wǎng)主機與公共網(wǎng)逐漸通信的IP經(jīng)過NAT網(wǎng)關(guān)時,將IP包中的源IP或目的IP在私有IP和NAT的公共IP之間進行轉(zhuǎn)換。
假設(shè)NAT網(wǎng)關(guān)有2個網(wǎng)絡端口,其中公共網(wǎng)絡端口的IP地址是統(tǒng)一分配的公共IP,為202.204.65.2;私有網(wǎng)絡端口的IP地址是保留地址,為192.168.1.1。私有網(wǎng)中的主機 192.168.1.2向公共網(wǎng)中的主機166.111.80.200發(fā)送了1個IP包(Des=166.111.80.200,Src=192.168.1.2)。
當IP包經(jīng)過NAT網(wǎng)關(guān)時,NAT會將IP包的源IP轉(zhuǎn)換為NAT的公共 IP并轉(zhuǎn)發(fā)到公共網(wǎng),此時IP包(Des=166.111.80.200,Src=202.204.65.2)中已經(jīng)不含任何私有網(wǎng)IP的信息。由于IP 包的源IP已經(jīng)被轉(zhuǎn)換成NAT的公共IP,響應的IP包(Des=202.204.65.2,Src=166.111.80.200)將被發(fā)送到NAT。 這時,NAT會將IP包的目的IP轉(zhuǎn)換成私有網(wǎng)中主機的IP,然后將IP包(Des=192.168.1.2,Src=166.111.80.200)轉(zhuǎn) 發(fā)到私有網(wǎng)。對于通信雙方而言,這種地址的轉(zhuǎn)換過程是完全透明的。
二、NAT類型 (一)Full-cone NAT:一旦一個內(nèi)網(wǎng)地址 (iAddr:iPort) 被映射到一個外部地址 (eAddr:ePort), 來自 iAddr:iPort 的任何數(shù)據(jù)包將通過 eAddr:ePort 發(fā)送。
任何外部主機能夠通過eAdder:ePort這個地址發(fā)送數(shù)據(jù)包到iAddr:iPort
(二)Address-restricted-cone NAT:一旦一個內(nèi)網(wǎng)地址(iAdder:iPort)被映射到一個外部地址(eAddr:ePort),來自iAddr:iPort的任何數(shù)據(jù)包將通過eAddr:ePort發(fā)送。
僅只有接收到主機(iAddr:iPort)通過eAddr:ePort發(fā)送的數(shù)據(jù)包的外部主機通過該主機的任何端口發(fā)送到eAddr:ePort的數(shù)據(jù)包才能夠被正確的轉(zhuǎn)發(fā)到iAddr:iPort.也就是說主機有關(guān)端口無關(guān)
(三)Port-restricted cone NAT類似于address restricted cone NAT, 但是端口號有限制.
一旦一個內(nèi)網(wǎng)地址 (iAddr:iPort) 被映射到一個外部地址 (eAddr:ePort), 來自 iAddr:iPort 的任何數(shù)據(jù)包將通過 eAddr:ePort 發(fā)送.
僅只有接收到主機(iAddr:iPort)通過eAddr:ePort發(fā)送的數(shù)據(jù)包的外部主機通過該主機的相同端口發(fā)送到eAddr:ePort的數(shù)據(jù)包才能夠被正確的轉(zhuǎn)發(fā)到iAddr:iPort.
(四)Symmetric NAT來自相同內(nèi)部ip和port發(fā)送到相同目的地ip和port的請求被映射到唯一的外部ip和port地址;如果相同的內(nèi)部主機采用相同的ip和port地址發(fā)送到不同的目的地,那么重新分配映射地址。
只有先前收到內(nèi)部主機發(fā)送包的外部主機才能夠發(fā)送返回包到內(nèi)部主機。
針對前面三種NAT類型,只要通信雙方彼此知道對方的內(nèi)部地址和外部地址的映射關(guān)系,然后通過UDP打洞的方式就可以建立相互連接的通信;但是第四種也就是Symmetric NAT的話由于每次向不同目的地發(fā)送數(shù)據(jù)包時采用不同的外部地址,也就沒辦法通過直接的方式建立P2P連接。
三:為什么要做NAT穿透:我們知道在日常的互聯(lián)網(wǎng)交互中,所有的信息流必須要通過NAT,經(jīng)過服務器,而這對服務器的壓力可想而知。
這時就有人提出,我們能不能不從服務器經(jīng)過,直接對兩個端口進行連接。這樣不僅能減輕服務器壓力,也可以節(jié)省大量的流量。這時發(fā)現(xiàn),之前幫助端口實現(xiàn)“溝通”的NAT現(xiàn)在成了直接連接的阻力。NAT穿透是實現(xiàn)P2P所需的基礎(chǔ)。
四:如何做NAT穿透:NAT穿透目前主要有:ALG、MII3COM、STUN、TURN、ICE和Full?Proxy等6種方式,這里主要介紹一下ICE方式:
ICE是一種NAT穿透技術(shù),通過offer/answer模型建立基于UDP的媒介流。ICE是offer/answer模型的擴展,通過在offer和answer的SDP里面包含的IP地址和端口,然后對本地SDP和遠程SDP里面的IP地址進行配對,然后通過P2P連通性檢查進行連通性測試工作,如果測試通過即表明該傳輸?shù)刂穼梢越⑦B接。其中IP地址和端口有以下幾種:本機地址、通過STUN服務器反射后獲取的server-reflexive地址(內(nèi)網(wǎng)地址被NAT映射后的地址)、relayed地址(和TURN轉(zhuǎn)發(fā)服務器相對應的地址)及Peer reflexive地址等。
在通常的ICE部署環(huán)境中,我們有兩個端想要建立通信連接,他們可以直接通過signaling服務器(如SIP服務器)執(zhí)行offer/answer過程來交換SDP消息。
在ICE過程開始的時候,客服端會忽略他們各自的網(wǎng)絡拓撲結(jié)構(gòu),不管是不是在NAT或多個NAT后面,ICE允許客服端發(fā)現(xiàn)他們所在網(wǎng)絡的拓撲結(jié)構(gòu)的信息,然后找出一個或更多可以建立通信連接的路徑。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/11061.html
摘要:和相關(guān)的操作的子命令是。之間的通信新創(chuàng)建的默認不能和主機網(wǎng)絡,以及其他通信。下面顯示兩個之間通信的網(wǎng)絡拓撲創(chuàng)建使用命令指定的名字。 本文首發(fā)于我的公眾號 CloudDeveloper(ID: cloud_dev),專注于干貨分享,號內(nèi)有大量書籍和視頻資源,后臺回復「1024」即可領(lǐng)取,歡迎大家關(guān)注,二維碼文末可以掃。 本文通過 IP 命令操作來簡單介紹 network namespac...
閱讀 2253·2019-08-30 15:56
閱讀 3050·2019-08-30 13:48
閱讀 1105·2019-08-30 10:52
閱讀 1479·2019-08-29 17:30
閱讀 405·2019-08-29 13:44
閱讀 3480·2019-08-29 12:53
閱讀 1066·2019-08-29 11:05
閱讀 2607·2019-08-26 13:24