討論前提
考慮到UDP的無(wú)狀態(tài)特性,目前針對(duì)其的NAT實(shí)現(xiàn)大致可分為Full Cone、Restricted Cone、Port Restricted Cone和Symmetric NAT四種。值得指出的是,對(duì)于TCP協(xié)議而言,一般來(lái)說(shuō),目前NAT中針對(duì)TCP的實(shí)現(xiàn)基本上是一致的,其間并不存在太大差異,這是因?yàn)門(mén)CP協(xié)議本身便是面向連接的,因此無(wú)需考慮網(wǎng)絡(luò)連接無(wú)狀態(tài)所帶來(lái)復(fù)雜性。
用語(yǔ)定義
1.內(nèi)部Tuple:指內(nèi)部主機(jī)的私有地址和端口號(hào)所構(gòu)成的二元組,即內(nèi)部主機(jī)所發(fā)送報(bào)文的源地址、端口所構(gòu)成的二元組
2.外部Tuple:指內(nèi)部Tuple經(jīng)過(guò)NAT的源地址/端口轉(zhuǎn)換之后,所獲得的外部地址、端口所構(gòu)成的二元組,即外部主機(jī)收到經(jīng)NAT轉(zhuǎn)換之后的報(bào)文時(shí),它所看到的該報(bào)文的源地址(通常是NAT設(shè)備的地址)和源端口
3.目標(biāo)Tuple:指外部主機(jī)的地址、端口所構(gòu)成的二元組,即內(nèi)部主機(jī)所發(fā)送報(bào)文的目標(biāo)地址、端口所構(gòu)成的二元組
詳細(xì)釋義
1. Full Cone NAT:所有來(lái)自同一個(gè)內(nèi)部Tuple X的請(qǐng)求均被NAT轉(zhuǎn)換至同一個(gè)外部Tuple Y,而不管這些請(qǐng)求是不是屬于同一個(gè)應(yīng)用或者是多個(gè)應(yīng)用的。除此之外,當(dāng)X-Y的轉(zhuǎn)換關(guān)系建立之后,任意外部主機(jī)均可隨時(shí)將Y中的地址和端口作為目標(biāo)地址和目標(biāo)端口,向內(nèi)部主機(jī)發(fā)送UDP報(bào)文,由于對(duì)外部請(qǐng)求的來(lái)源無(wú)任何限制,因此這種方式雖然足夠簡(jiǎn)單,但卻不那么安全
2. Restricted Cone NAT:它是Full Cone的受限版本:所有來(lái)自同一個(gè)內(nèi)部Tuple X的請(qǐng)求均被NAT轉(zhuǎn)換至同一個(gè)外部Tuple Y,這與Full Cone相同,但不同的是,只有當(dāng)內(nèi)部主機(jī)曾經(jīng)發(fā)送過(guò)報(bào)文給外部主機(jī)(假設(shè)其IP地址為Z)后,外部主機(jī)才能以Y中的信息作為目標(biāo)地址和目標(biāo)端口,向內(nèi)部主機(jī)發(fā)送UDP請(qǐng)求報(bào)文,這意味著,NAT設(shè)備只向內(nèi)轉(zhuǎn)發(fā)(目標(biāo)地址/端口轉(zhuǎn)換)那些來(lái)自于當(dāng)前已知的外部主機(jī)的UDP報(bào)文,從而保障了外部請(qǐng)求來(lái)源的安全性
3. Port Restricted Cone NAT:它是Restricted Cone NAT的進(jìn)一步受限版。只有當(dāng)內(nèi)部主機(jī)曾經(jīng)發(fā)送過(guò)報(bào)文給外部主機(jī)(假設(shè)其IP地址為Z且端口為P)之后,外部主機(jī)才能以Y中的信息作為目標(biāo)地址和目標(biāo)端口,向內(nèi)部主機(jī)發(fā)送UDP報(bào)文,同時(shí),其請(qǐng)求報(bào)文的源端口必須為P,這一要求進(jìn)一步強(qiáng)化了對(duì)外部報(bào)文請(qǐng)求來(lái)源的限制,從而較Restrictd Cone更具安全性
4. Symmetric NAT:這是一種比所有Cone NAT都要更為靈活的轉(zhuǎn)換方式:在Cone NAT中,內(nèi)部主機(jī)的內(nèi)部Tuple與外部Tuple的轉(zhuǎn)換映射關(guān)系是獨(dú)立于內(nèi)部主機(jī)所發(fā)出的UDP報(bào)文中的目標(biāo)地址及端口的,即與目標(biāo)Tuple無(wú)關(guān);在Symmetric NAT中,目標(biāo)Tuple則成為了NAT設(shè)備建立轉(zhuǎn)換關(guān)系的一個(gè)重要考量:只有來(lái)自于同一個(gè)內(nèi)部Tuple 、且針對(duì)同一目標(biāo)Tuple的請(qǐng)求才被NAT轉(zhuǎn)換至同一個(gè)外部Tuple,否則的話(huà),NAT將為之分配一個(gè)新的外部Tuple;打個(gè)比方,當(dāng)內(nèi)部主機(jī)以相同的內(nèi)部Tuple對(duì)2個(gè)不同的目標(biāo)Tuple發(fā)送UDP報(bào)文時(shí),此時(shí)NAT將會(huì)為內(nèi)部主機(jī)分配兩個(gè)不同的外部Tuple,并且建立起兩個(gè)不同的內(nèi)、外部Tuple轉(zhuǎn)換關(guān)系。與此同時(shí),只有接收到了內(nèi)部主機(jī)所發(fā)送的數(shù)據(jù)包的外部主機(jī)才能向內(nèi)部主機(jī)返回UDP報(bào)文,這里對(duì)外部返回報(bào)文來(lái)源的限制是與Port Restricted Cone一致的。不難看出,如果說(shuō)Full Cone是要求最寬松NAT UDP轉(zhuǎn)換方式,那么,Symmetric NAT則是要求最嚴(yán)格的NAT方式,其不僅體現(xiàn)在轉(zhuǎn)換關(guān)系的建立上,而且還體現(xiàn)在對(duì)外部報(bào)文來(lái)源的限制方面。
參考:UDP"打洞"原理
posted on 2007-04-13 15:43
w2001 閱讀(8134)
評(píng)論(1) 編輯 收藏 引用 所屬分類(lèi):
Linux開(kāi)發(fā)