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