內(nèi)網(wǎng)和外網(wǎng)之間的通信(端口映射原理)

作者寫的通熟易懂耗绿,特轉(zhuǎn)載過(guò)來(lái)以備忘!

對(duì)于初學(xué)者而已舔糖,我們學(xué)習(xí)的網(wǎng)絡(luò)編程(如TCP,UDP編程)肄梨,我們通常都是在局域網(wǎng)內(nèi)進(jìn)行通信測(cè)試,有時(shí)候我們或者會(huì)想闻丑,我們現(xiàn)在寫的內(nèi)網(wǎng)網(wǎng)絡(luò)數(shù)據(jù)和外網(wǎng)的網(wǎng)絡(luò)數(shù)據(jù)有什么不同漩怎,我們內(nèi)網(wǎng)的數(shù)據(jù)是如何走出外網(wǎng)的呢?

再者,我們大多人都是使用寬帶上網(wǎng)嗦嗡,結(jié)果發(fā)現(xiàn)勋锤,A 和 B 的局域網(wǎng) IP 都是192.168.31.11,當(dāng)他們都訪問(wèn)百度瀏覽網(wǎng)頁(yè)時(shí),百度服務(wù)器回復(fù)數(shù)據(jù)時(shí)侥祭,如何區(qū)分是給 A 還是給 B 呢?

公有 IP 和私有 IP 的區(qū)別

首先叁执,我們需要了解一下什么是公有 IP 和私有 IP ?

公有地址(Public address):由 Inter NIC(Internet Network

Information Center 因特網(wǎng)信息中心)負(fù)責(zé)。這些 IP 地址分配給注冊(cè)并向Inter NIC提出申請(qǐng)的組織機(jī)構(gòu)矮冬,公有 IP

全球唯一谈宛,通過(guò)它直接訪問(wèn)因特網(wǎng)(直接能上網(wǎng))。

私有地址(Private address):屬于非注冊(cè)地址胎署,專門為組織機(jī)構(gòu)內(nèi)部使用吆录,說(shuō)白了,私有 IP 不能直接上網(wǎng)琼牧。

而我們平時(shí)通過(guò)運(yùn)營(yíng)商(電信恢筝、移動(dòng)、聯(lián)通寬帶等)上網(wǎng)巨坊,家里面通過(guò)路由器分出來(lái)的 IP 都是私有 IP(局域網(wǎng)

IP)撬槽,大家可能會(huì)疑問(wèn),我們可以上網(wǎng)啊趾撵,怎么會(huì)是私有 IP 呢?租用(申請(qǐng))公有 IP 是需要錢的恢氯。 運(yùn)營(yíng)商買了一些公有 IP,然后通過(guò)這些公有

IP 分出來(lái),再分給一個(gè)一個(gè)的用戶使用勋拟。這個(gè)過(guò)程有點(diǎn)類似于勋磕,我們?nèi)グ惭b了寬度,通過(guò)路由器分出幾個(gè) IP敢靡,讓好幾個(gè)人都能上網(wǎng)挂滓,當(dāng)然運(yùn)營(yíng)商通過(guò)公有

IP 分出來(lái)的過(guò)程肯定比這個(gè)復(fù)雜多了。所以啸胧,我們平時(shí)上網(wǎng)用的 IP 是私有 IP赶站,真正擁有公有

IP 的是運(yùn)營(yíng)商(當(dāng)然,我們可以租用一個(gè)公有 IP )纺念。所以贝椿,A 家庭的局域網(wǎng) IP 和 B 家庭的局域網(wǎng) IP 相同很正常,但是陷谱,最終 A 和

B 能上網(wǎng)(數(shù)據(jù)走出去)還是通過(guò)運(yùn)營(yíng)商的公有 IP烙博,畢竟,公有 IP

的資源有限烟逊,這一片區(qū)域的用戶使用的很有可能(實(shí)際上就是這樣的)是同一個(gè)公有 IP渣窜,這樣的話,又回到前面的問(wèn)題宪躯,假如 A 和 B 的局域網(wǎng) IP

相同(192.168.31.11)乔宿,當(dāng)他們同時(shí)訪問(wèn)百度服務(wù)器的時(shí)候,百度服務(wù)器如何區(qū)分哪個(gè)是 A访雪,哪個(gè)是 B 呢?

端口映射

接下來(lái)详瑞,給大家介紹一下什么是端口映射?

端口映射是 NAT 的一種,它將外網(wǎng)主機(jī)的 IP 地址的一個(gè)端口映射到內(nèi)網(wǎng)中一臺(tái)機(jī)器臣缀,提供相應(yīng)的服務(wù)坝橡。當(dāng)用戶訪問(wèn)該 IP 的這個(gè)端口時(shí),服務(wù)器自動(dòng)將請(qǐng)求映射到對(duì)應(yīng)局域網(wǎng)內(nèi)部的機(jī)器上肝陪。

現(xiàn)在市場(chǎng)上的家庭路由器都具備 NAT 功能驳庭,也可以實(shí)現(xiàn)端口映射。下圖為小米路由器的端口映射設(shè)置圖:

我們平時(shí)經(jīng)過(guò)路由器氯窍,通過(guò)寬帶饲常,最終去到運(yùn)營(yíng)商那邊,數(shù)據(jù)是從運(yùn)營(yíng)商出去狼讨,最終數(shù)據(jù)是回到運(yùn)營(yíng)商那邊贝淤,運(yùn)營(yíng)商再把數(shù)據(jù)發(fā)送到用戶的電腦。

路由器政供,至少有兩個(gè)端口:WAN 口和 LAN 口播聪。

WAN:接外部 IP 地址用朽基,通常指的是出口,轉(zhuǎn)發(fā)來(lái)自內(nèi)部 LAN 接口的 IP 數(shù)據(jù)包离陶,這個(gè)口的 IP 是唯一的稼虎。

LAN:接內(nèi)部 IP 地址用,LAN 內(nèi)部是交換機(jī)招刨。

這里霎俩,我們簡(jiǎn)化這個(gè)過(guò)程,我們把運(yùn)營(yíng)商當(dāng)做一個(gè) NAT 設(shè)備沉眶。

為了方便大家理解打却,我們把 IP 的轉(zhuǎn)化方向反過(guò)來(lái)分析(準(zhǔn)確來(lái)說(shuō),公網(wǎng)轉(zhuǎn)局域網(wǎng))谎倔。

A 電腦的 IP 是局域網(wǎng) IP(192.168.31.11)柳击,這個(gè) IP(192.168.31.11)是從路由器的 lan口分配的。

當(dāng)我們上百度的時(shí)候片习,經(jīng)過(guò)路由器的 wan口捌肴,進(jìn)行相應(yīng)的IP、端口轉(zhuǎn)化:192.168.31.11:80 -> 10.221.0.24:8080,所以毯侦,從 wan口出去的地址為:10.221.0.24:8080哭靖。

最后具垫,經(jīng)過(guò)運(yùn)營(yíng)商侈离,運(yùn)營(yíng)商那邊會(huì)做相應(yīng)的端口映射(而且是動(dòng)態(tài)端口映射),子網(wǎng) IP(10.221.0.24:8080)轉(zhuǎn)化為公網(wǎng) IP(128.0.0.1:8888)筝蚕,通過(guò)這個(gè)公網(wǎng) IP 去訪問(wèn)百度服務(wù)器卦碾。

同理,B 的過(guò)程也是一樣起宽。通過(guò)這樣的層層端口映射洲胖,最終保證地址(IP + 端口)的唯一性。A 和 B

訪問(wèn)百度服務(wù)器坯沪,盡管它們的局域網(wǎng) IP 是一樣的绿映,但是最終它們?cè)L問(wèn)百度的地址(IP +

端口)是唯一的,所以腐晾,百度服務(wù)器回復(fù)時(shí)叉弦,原路返回時(shí)能夠區(qū)分到底給誰(shuí)回。

如何讓外網(wǎng)能夠訪問(wèn)自己寫的網(wǎng)絡(luò)程序(服務(wù)器)

首先藻糖,我們需要在運(yùn)營(yíng)商那邊申請(qǐng)(租用)一個(gè)公有 IP (長(zhǎng)城寬帶一年需要 2000 元左右)淹冰,假如這個(gè)公有 IP 為:128.0.0.123。

假如巨柒,我們寫的服務(wù)器如下:

接著樱拴,找個(gè) NAT 設(shè)備進(jìn)行相應(yīng)的端口映射柠衍,家庭路由器都有這個(gè)功能。這里以小米路由器為例:

映射關(guān)系如下:

最后晶乔,其他人寫客戶端程序時(shí)(電腦能上外網(wǎng))珍坊,只要指定目的 IP 地址為 128.0.0.123,端口為 8888正罢,通過(guò)這個(gè)地址垫蛆,就能找到192.168.31.248:8080,因?yàn)檫@兩者已經(jīng)建立好映射腺怯,如上圖袱饭,這樣,我們的服務(wù)器就能收到數(shù)據(jù)呛占。

轉(zhuǎn)載自blog.csdn.net/songshimvp1/article/details/51519767

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末虑乖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子晾虑,更是在濱河造成了極大的恐慌疹味,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帜篇,死亡現(xiàn)場(chǎng)離奇詭異糙捺,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)笙隙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門洪灯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人竟痰,你說(shuō)我怎么就攤上這事签钩。” “怎么了坏快?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵铅檩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我莽鸿,道長(zhǎng)昧旨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任祥得,我火速辦了婚禮兔沃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘啃沪。我一直安慰自己粘拾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布创千。 她就那樣靜靜地躺著缰雇,像睡著了一般入偷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上械哟,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天疏之,我揣著相機(jī)與錄音,去河邊找鬼暇咆。 笑死锋爪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的爸业。 我是一名探鬼主播其骄,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼扯旷!你這毒婦竟也來(lái)了拯爽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤钧忽,失蹤者是張志新(化名)和其女友劉穎毯炮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耸黑,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡桃煎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了大刊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片为迈。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖奈揍,靈堂內(nèi)的尸體忽然破棺而出曲尸,到底是詐尸還是另有隱情赋续,我是刑警寧澤男翰,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站纽乱,受9級(jí)特大地震影響蛾绎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鸦列,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一租冠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧薯嗤,春花似錦顽爹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)捏题。三九已至,卻和暖如春肉渴,著一層夾襖步出監(jiān)牢的瞬間公荧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工同规, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留循狰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓券勺,卻偏偏與公主長(zhǎng)得像绪钥,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子关炼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容