在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶(hù)?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>VHDL/Verilog/EDA源碼>

UDP穿透NAT的原理與實(shí)現(xiàn)(附源代碼)

大小:34 人氣: 2010-02-09 需要積分:0
安德森大的空間

用戶(hù)級(jí)別:注冊(cè)會(huì)員

貢獻(xiàn)文章:

貢獻(xiàn)資料:

UDP穿透NAT的原理與實(shí)現(xiàn)(附源代碼)

論壇上經(jīng)常有對(duì)P2P原理的討論,但是討論歸討論,很少有實(shí)質(zhì)的東西產(chǎn)生(源代碼)。呵呵,在這里我就用自己實(shí)現(xiàn)的一個(gè)源代碼來(lái)說(shuō)明UDP穿越NAT的原理。

首先先介紹一些基本概念:

NAT(Network Address Translators),網(wǎng)絡(luò)地址轉(zhuǎn)換:網(wǎng)絡(luò)地址轉(zhuǎn)換是在IP

地址日益缺乏的情況下產(chǎn)生的,它的主要目的就是為了能夠地址重用。NAT分為兩大類(lèi),基本的NAT和NAPT(Network Address/Port Translator)。

最開(kāi)始NAT是運(yùn)行在路由器上的一個(gè)功能模塊。最先提出的是基本的NAT,它的產(chǎn)生基于如下事實(shí):一個(gè)私有網(wǎng)絡(luò)(域)中的節(jié)點(diǎn)中只有很少的節(jié)點(diǎn)需要與外網(wǎng)連接(呵呵,這是在上世紀(jì)90年代中期提出的)。那么這個(gè)子網(wǎng)中其實(shí)只有少數(shù)的節(jié)點(diǎn)需要全球唯一的IP地址,其他的節(jié)點(diǎn)的IP地址應(yīng)該是可以重用的。

因此,基本的NAT實(shí)現(xiàn)的功能很簡(jiǎn)單,在子網(wǎng)內(nèi)使用一個(gè)保留的IP子網(wǎng)段,這些IP對(duì)外是不可見(jiàn)的。子網(wǎng)內(nèi)只有少數(shù)一些IP地址可以對(duì)應(yīng)到真正全球唯一的IP地址。如果這些節(jié)點(diǎn)需要訪問(wèn)外部網(wǎng)絡(luò),那么基本NAT就負(fù)責(zé)將這個(gè)節(jié)點(diǎn)的子網(wǎng)內(nèi)IP轉(zhuǎn)化為一個(gè)全球唯一的IP然后發(fā)送出去。(基本的NAT會(huì)改變IP包中的原IP地址,但是不會(huì)改變IP包中的端口)關(guān)于基本的NAT可以參看RFC 1631

另外一種NAT叫做NAPT,從名稱(chēng)上我們也可以看得出,NAPT不但會(huì)改變經(jīng)過(guò)這個(gè)NAT設(shè)備的IP數(shù)據(jù)報(bào)的IP地址,還會(huì)改變IP數(shù)據(jù)報(bào)的TCP/UDP端口。基本NAT的設(shè)備可能我們見(jiàn)的不多(呵呵,我沒(méi)有見(jiàn)到過(guò)),NAPT才是我們真正討論的主角。

看下圖:
Server S1
18.181.0.31:1235
|
^ Session 1 (A-S1) ^ |
| 18.181.0.31:1235 | |
v 155.99.25.11:62000 v |
|
NAT
155.99.25.11
|
^ Session 1 (A-S1) ^ |
| 18.181.0.31:1235 | |
v 10.0.0.1:1234 v |
|
Client
A
10.0.0
.1:1234
有一個(gè)私有網(wǎng)絡(luò)10.*.*.*,Client A是其中的一臺(tái)計(jì)算機(jī),這個(gè)網(wǎng)絡(luò)的網(wǎng)關(guān)

(一個(gè)NAT設(shè)備)的外網(wǎng)IP是155.99.25.11(應(yīng)該還有一個(gè)內(nèi)網(wǎng)的IP地址,比如

10.0.0.10)。如果Client A中的某個(gè)進(jìn)程(這個(gè)進(jìn)程創(chuàng)建了一個(gè)UDP Socket,這個(gè)

Socket綁定1234端口)想訪問(wèn)外網(wǎng)主機(jī)18.181.0.31的1235端口,那么當(dāng)數(shù)據(jù)包通

過(guò)NAT時(shí)會(huì)發(fā)生什么事情呢?
首先NAT會(huì)改變這個(gè)數(shù)據(jù)包的原IP地址,改為155.99.25.11。接著NAT會(huì)為這

個(gè)傳輸創(chuàng)建一個(gè)Session(Session是一個(gè)抽象的概念,如果是TCP,也許Session

是由一個(gè)SYN包開(kāi)始,以一個(gè)FIN包結(jié)束。而UDP呢,以這個(gè)IP的這個(gè)端口的第一個(gè)


UDP開(kāi)始,結(jié)束呢,呵呵,也許是幾分鐘,也許是幾小時(shí),這要看具體的實(shí)現(xiàn)了)

并且給這個(gè)Session分配一個(gè)端口,比如62000,然后改變這個(gè)數(shù)據(jù)包的源端口為

62000。所以本來(lái)是(10.0.0.1:1234->18.181.0.31:1235)的數(shù)據(jù)包到了互聯(lián)網(wǎng)

上變?yōu)榱耍?FONT face=宋體>155.99.25.11:62000->18.181.0.31:1235)。
一旦NAT創(chuàng)建了一個(gè)Session后,NAT會(huì)記住62000端口對(duì)應(yīng)的是10.0.0.1的

1234端口,以后從18.181.0.31發(fā)送到62000端口的數(shù)據(jù)會(huì)被NAT自動(dòng)的轉(zhuǎn)發(fā)到

10.0.0.1上。(注意:這里是說(shuō)18.181.0.31發(fā)送到62000端口的數(shù)據(jù)會(huì)被轉(zhuǎn)發(fā),

非常好我支持^.^

(6) 100%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶(hù)評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?
      主站蜘蛛池模板: 亚洲国产精品丝袜在线观看| 91免费网站在线看入口黄| 午夜啪啪免费视频| 久久精品国产免费| 操妞网| 欧美成人伊人久久综合网| 亚洲黄色三级| 性 色 黄 一级| 日韩免费观看一级毛片看看| 性福利视频| 色妞干网| 欧美成人精品欧美一级乱黄| 久久精品高清视频| 日本成人免费在线视频| 亚洲福利二区| 特级片毛片| 欧美色图在线观看| 国产毛片农村妇女aa板| 韩国三级理论在线观看视频| 咪咪爱毛片| 二级黄色大片| 天天色综合2| 五月天婷婷基地| 一级一级一片免费高清| 成人女人a毛片在线看| 亚洲午夜久久久久久91| videosgratis乱色欧美野外| 国产日本在线播放| 4虎影院最近地址| 一级特黄a视频| 欧美超级碰碰| 8888四色奇米在线观看不卡| 亚洲一区二区综合| 在线视频这里只有精品| 成人国产精品一级毛片了| 日本一区二区三区视频在线观看| aaa亚洲| 午夜久久免影院欧洲| 欧美一区二区三区大片| 来吧成人综合网| 九色婷婷|