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