91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

UDP打洞,穿透NAT

admin
2014年1月26日 14:22 本文熱度 6127

前天編程做了一下UDP打洞的實(shí)驗(yàn),今天特寫了一篇文章總結(jié)一下。
我們知道網(wǎng)絡(luò)上兩個(gè)主機(jī)進(jìn)行通信,如果其中一臺(tái)主機(jī)擁有公網(wǎng)IP那么,那么進(jìn)行會(huì)話是比較簡(jiǎn)單的,但是如果兩臺(tái)主機(jī)是位于不同內(nèi)網(wǎng)之中的,那么應(yīng)該如何進(jìn)行通信呢。一種想法是再找一臺(tái)公網(wǎng)的服務(wù)器,用來(lái)轉(zhuǎn)發(fā)信息,但是這有一個(gè)問(wèn)題,就是會(huì)給服務(wù)器帶來(lái)壓力,因此我們就來(lái)談?wù)勔环N用于不同內(nèi)網(wǎng)中的主機(jī)互相通信的一個(gè)解決方案——NAT打洞。
原理還是比較簡(jiǎn)單的,我們先了解一下什么是“NAT的洞”。當(dāng)處于內(nèi)網(wǎng)中的一臺(tái)主機(jī)(ClientA/192.168.1.128)向一個(gè)公網(wǎng)的服務(wù)器(Server)發(fā)送數(shù)據(jù)時(shí),這時(shí)NAT(NAT1)將會(huì)打開一個(gè)臨時(shí)性的端口用于與公網(wǎng)的服務(wù)器進(jìn)行通信,并且會(huì)把那個(gè)內(nèi)網(wǎng)主機(jī)發(fā)送出的IP數(shù)據(jù)報(bào)的頭部中源IP地址改為NAT的公網(wǎng)IP(218.7.32.28),將TCP或UDP數(shù)據(jù)報(bào)中源端口(2347)改為那個(gè)臨時(shí)端口(26756)這樣就實(shí)現(xiàn)了由“192.168.1.128:2347”到“218.7.32.28:26756”的源地址源端口的轉(zhuǎn)換。這個(gè)數(shù)據(jù)包到達(dá)公網(wǎng)服務(wù)器后,服務(wù)器就可以根據(jù)這個(gè)包的頭部信息進(jìn)行回復(fù)。當(dāng)服務(wù)器的數(shù)據(jù)包到達(dá)NAT后,NAT在將這個(gè)數(shù)據(jù)發(fā)送到內(nèi)網(wǎng)主機(jī)192.168.1.128的2347端口。那么這個(gè)NAT上的26756端口我們就稱作“洞”。如果這個(gè)NAT不是Full Cone NAT的話(其實(shí)大多數(shù)的NAT確實(shí)不是這種類型的),那么我們說(shuō)這個(gè)“洞”是有方向性的。一個(gè)洞應(yīng)該會(huì)指向一個(gè)(也可以是多個(gè))公網(wǎng)主機(jī)的IP地址。比如上面說(shuō)的例子,在NAT1上打的洞是指向Server的IP地址。來(lái)自其他公網(wǎng)主機(jī)發(fā)向這個(gè)洞(也就是218.7.32.28:26756)的數(shù)據(jù)包會(huì)被非Full Cone類型的NAT所丟棄。所以如果有另一臺(tái)處于另一內(nèi)網(wǎng)的主機(jī)(ClientB/192.168.0.5)向218.7.32.28:26756直接發(fā)送數(shù)據(jù)的話,同樣也會(huì)被NAT1丟棄。
那么如何建立ClientA和ClientB的直接會(huì)話呢?
網(wǎng)絡(luò)環(huán)境描述:
內(nèi)網(wǎng)1NAT:NAT1/218.7.32.28
內(nèi)網(wǎng)1中一臺(tái)主機(jī):ClientA/192.168.1.128
內(nèi)網(wǎng)2NAT:NAT2/218.7.31.221
內(nèi)網(wǎng)2中一臺(tái)主機(jī):ClientB/192.168.0.5
公網(wǎng)服務(wù)器:Server
首先讓ClientA和ClientB登錄到服務(wù)器Server(假如兩臺(tái)主機(jī)都采用2347端口),此時(shí)NAT1和NAT2會(huì)分別為ClientA和ClientB打開一個(gè)指向Server的洞(NAT1上218.7.32.28:26756和NAT2上218.7.31.221:27550)。服務(wù)器應(yīng)改記錄這兩個(gè)客戶端的信息(關(guān)鍵是那兩個(gè)洞的信息)。當(dāng)ClientA與ClientB要建立會(huì)話時(shí),ClientA首先用2347端口向NAT2的洞發(fā)送一個(gè)數(shù)據(jù)包,當(dāng)然這個(gè)數(shù)據(jù)包會(huì)被NAT2所丟棄,但是由于這是從NAT1內(nèi)部向外部發(fā)送數(shù)據(jù),所以NAT1為ClientA打開了一個(gè)指向NAT2的洞。而且這個(gè)新洞與原來(lái)NAT1上指向Server的舊洞的是同一個(gè)洞(因?yàn)槭峭粋€(gè)端口26756),所以這里可以說(shuō)這個(gè)洞具有了兩個(gè)方向,同時(shí)指向Server和NAT2。這時(shí)ClientA應(yīng)該通知Server,告訴ClientB,現(xiàn)在可以向NAT1的那個(gè)洞(218.7.32.28:26756)發(fā)送數(shù)據(jù)包了。當(dāng)ClientB向NAT1的那個(gè)洞發(fā)送數(shù)據(jù)以后,NAT2也為ClientB打了一個(gè)指向NAT1的洞,這是可以說(shuō)ClientA與ClientB的會(huì)話就建立完成了,他們可以不依賴Server進(jìn)行通信了。如果以后ClientA和ClientB還需要建立其他會(huì)話 ,那么這個(gè)牽線的“媒人”可以不是Server,而可以是ClientA或ClientB了。
UDP打洞可以實(shí)現(xiàn)不同內(nèi)網(wǎng)內(nèi)的主機(jī)進(jìn)行通信,而且實(shí)施性比較高,一般用于P2P通信。這也就是為什么常會(huì)看見騰訊QQ在開始傳輸文件時(shí)會(huì)顯示“UDP連接已經(jīng)建立”了。


該文章在 2014/1/26 14:22:38 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产爽到喷水 | 成人a网站 | 三级日韩欧美在线 | 国产网站免费看 | 国产精品自拍第一页 | 精品国产午 | 国产一区福利在线 | 嗨嗨影院伦理电影 | 国产女主播喷水 | 国产丝袜一区二 | 91精品国产现 | 日韩精品国产一级 | 福利影院视频 | 另类在线观看网站 | 国产真实伦 | 国产直播 | 欧美日韩国产综 | 殴美伊人色综合久 | 国产剧情一区二区 | 成人午夜影视一二区 | 精品影片| 国产精品秘A级导航 | 日本不卡不卡 | 岛国成人免费大片在 | 1区2区 | 国产亲子 | 欧美亚洲喷水视 | 国产日韩无 | 九九99九| 91激情福利 | 日本中文字幕乱码 | 国精品午夜福 | 日本欧美大码aⅴ | 日本aaa视频| 黑人在线观看国产 | 欧美日韩精品系 | 精品国产呦系 | 精品一区在线观看 | 国产午夜亚 | 区二区在线欧美 | 国产精品美|