日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

解决网络通信中外网和内网之间的通信问题(NAT转换)

發(fā)布時(shí)間:2024/10/12 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解决网络通信中外网和内网之间的通信问题(NAT转换) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文原址?http://www.cnblogs.com/lidabo/p/3828846.html

在網(wǎng)絡(luò)編碼中會(huì)發(fā)現(xiàn)程序在局域網(wǎng)中是可以適用的,但是在外網(wǎng)與內(nèi)網(wǎng)之間和內(nèi)網(wǎng)與內(nèi)網(wǎng)之間就不可行。
問題就在于NAT。首先介紹下NAT。?
NAT的作用NAT(Network Address Translator),網(wǎng)絡(luò)地址轉(zhuǎn)換。顧名思義,它是一種把內(nèi)部私有網(wǎng)絡(luò)IP地址翻譯成公有網(wǎng)絡(luò)IP地址的技術(shù),如圖5-1所示。NAT是在IP地址日益缺乏的情況下產(chǎn)生的,它的主要目的是使地址能夠重用[9]。?
?
圖5-1 NAT模型?
IP地址分為五類:A類,B類,C類,D類,E類(這里不考慮保留的IP地址)。A、B、C類可被計(jì)算機(jī)作為IP地址,D類為組播地址,E類為特殊用途的地址。A、B、C類中,又可分為公有地址和私有地址,私有地址用于內(nèi)網(wǎng),不同的內(nèi)網(wǎng),私有地址可重用,從而節(jié)省了公網(wǎng)地址,它不可在公網(wǎng)中被路由,所以內(nèi)網(wǎng)的主機(jī)要訪問公網(wǎng)的服務(wù)器,便要經(jīng)過NAT。公有地址是全球唯一的,能在公網(wǎng)上被路由。?
?
內(nèi)網(wǎng)主機(jī)用私有地址在內(nèi)網(wǎng)能與其它的內(nèi)網(wǎng)主機(jī)無(wú)誤地通信,但它不能直接用私有地址訪問外網(wǎng)的主機(jī),因?yàn)樗接械刂凡荒鼙宦酚伞Kc外網(wǎng)通信,必須經(jīng)過NAT設(shè)備(如網(wǎng)關(guān),路由器),如圖5-2所示。主機(jī)A與服務(wù)器S通信,它須先通過網(wǎng)關(guān),此時(shí)網(wǎng)關(guān)改變它的數(shù)據(jù)包地址及端口,把私有地址(10.0.0.2)改為公有地址(155.99.25.11),使數(shù)據(jù)包能在公網(wǎng)上被路由,送至服務(wù)器端。服務(wù)器端返回的數(shù)據(jù)包到達(dá)網(wǎng)關(guān)后,網(wǎng)關(guān)把公網(wǎng)地址改為相應(yīng)的私有地址,然后轉(zhuǎn)發(fā)到主機(jī)A。通過這種方法,一個(gè)內(nèi)網(wǎng)只需一個(gè)公有IP地址,就把整個(gè)內(nèi)網(wǎng)的計(jì)算機(jī)接入Internet,從而解決IP地址缺乏的問題。?
NAT功能通常被集成到路由器、防火墻、ISDN路由器或者單獨(dú)的NAT設(shè)備中。也可通過軟件實(shí)現(xiàn)這一功能,Windows 98 SE、Windows 2000?都包含了這一功能。?
NAT的分類及工作原理?
?

基本NAT與NAPT如圖5-3所示,NAT分為兩大類,基本的NAT和NAPT(Network Address/Port Translator)[10][11]。?
基本的NAT,它僅將內(nèi)網(wǎng)主機(jī)的私有IP地址轉(zhuǎn)換成公網(wǎng)IP地址,但并不將TCP/UDP端口信息進(jìn)行轉(zhuǎn)換,有動(dòng)態(tài)與靜態(tài)之區(qū)分。由于現(xiàn)在大部分都屬于另一種類型,即NAPT,故這里不詳細(xì)討論基礎(chǔ)NAT。?
另外一種NAT叫做NAPT(Network Address/Port Translator),從名稱上我們也可以看得出,NAPT不但會(huì)改變經(jīng)過這個(gè)NAT設(shè)備的IP數(shù)據(jù)報(bào)的IP地址,還會(huì)改變IP數(shù)據(jù)報(bào)的TCP/UDP端口。NAPT的地址及端口的轉(zhuǎn)換過程,請(qǐng)看圖5-4:?
?
私有網(wǎng)絡(luò)中某一主機(jī)Client A(10.0.0.2),它的某個(gè)進(jìn)程通過1234端口,想訪問外網(wǎng)服務(wù)器18.181.0.31的1235端口。那么當(dāng)數(shù)據(jù)包通過NAT時(shí),這個(gè)NAT的外網(wǎng)地址是155.99.25.11,首先NAT會(huì)改變這個(gè)數(shù)據(jù)包的原IP地址,改為155.99.25.11。并分配一個(gè)端口(如62000)給Client A,把數(shù)據(jù)包的原端口號(hào)改為62000。所以本來是(10.0.0.2:1234->18.181.0.31:1235)的數(shù)據(jù)包到了互聯(lián)網(wǎng)上變?yōu)榱?#xff08;155.99.25.11:62000->18.181.0.31:1235),如圖5-4左圖所示。NAT會(huì)記住62000端口對(duì)應(yīng)的是10.0.0.2的1234端口,以后從外網(wǎng)服務(wù)器18.181.0.31發(fā)送到62000端口的數(shù)據(jù)會(huì)被NAT自動(dòng)的改變目的IP和端口號(hào),然后轉(zhuǎn)發(fā)到10.0.0.2上(如圖5-4右圖所示)?
錐型NAT與對(duì)稱型NAT?
?

NAPT又分為錐型(Cone)和對(duì)稱型(Symmetric),如圖5-5所示,它們的區(qū)別在于,在NAT已分配端口號(hào)給Client A的情況下,如果Client A繼續(xù)用1235端口與另一外網(wǎng)服務(wù)器通訊,錐型NAT還會(huì)繼續(xù)用原來62000端口,即所分配的端口號(hào)不變。而對(duì)于對(duì)等型NAT,NAT將會(huì)分配另一端口號(hào)(如62001)給Client A的1235端口。也就是說,同一內(nèi)網(wǎng)主機(jī)同一端口號(hào),對(duì)于錐型NAT,無(wú)論與哪一外網(wǎng)主機(jī)通訊,都不改變所分配的端口號(hào);而對(duì)于對(duì)等型NAT,同一內(nèi)網(wǎng)主機(jī)同一端口號(hào),每一次與不同的外網(wǎng)主機(jī)通訊,就重新分配另一個(gè)端口號(hào)。?
完全錐型NAT、受限制錐型NAT與端口受限制型NAT?
錐型NAT可另外分類為完全錐形(Full Cone)NAT,受限制錐形(Restricted Cone)NAT,端口受限制錐形(Port Restricted Cone)NAT。?
①完全錐形(Full Cone)NAT?
這種NAT內(nèi)部的主機(jī)A連接過外網(wǎng)主機(jī)C后,NAT會(huì)打開一個(gè)端口。然后外網(wǎng)的任何發(fā)到這個(gè)打開的端口的UDP數(shù)據(jù)報(bào)都可以到達(dá)A,不管是不是C發(fā)過來的[12]。?
例如 A: 192.168.8.100??NAT: 202.100.100.100??C: 292.88.88.88?
A(192.168.8.100:5000) -> NAT(202.100.100.100:8000) -> C(292.88.88.88:2000)?
任何發(fā)送到NAT(202.100.100.100:8000)的數(shù)據(jù)都可以到達(dá)A(192.168.8.100:5000)。?
②受限制錐形(Restricted Cone)NAT?
這種NAT內(nèi)部的主機(jī)A連接過外網(wǎng)的主機(jī)C后,NAT打開一個(gè)端口。然后C可以用任何端口和A通信,但其他的外網(wǎng)主機(jī)不可以。?
例如 A: 192.168.8.100??NAT: 202.100.100.100??C: 292.88.88.88?
A(192.168.8.100:5000) -> NAT(202.100.100.100:8000) -> C(292.88.88.88:2000)?
任何從C發(fā)送到NAT(202.100.100.100:8000)的數(shù)據(jù)都可以到達(dá)A(192.168.8.100:5000)。?
③端口受限制錐形(Port Restricted Cone)NAT?
這種NAT內(nèi)部的主機(jī)A連接過外網(wǎng)的主機(jī)C后,NAT打開一個(gè)端口。然后C只能用原來的端口和A通信,其他的外網(wǎng)主機(jī)不可以。?
例如 A: 192.168.8.100??NAT: 202.100.100.100??C: 292.88.88.88?
A(192.168.8.100:5000) -> NAT(202.100.100.100:8000) -> C(292.88.88.88:2000)?
只有C(202.88.88.88:2000)發(fā)送到 NAT(202.100.100.100:8000)的數(shù)據(jù)都可以到達(dá)A(192.168.8.100:5000)。?
NAT產(chǎn)生的問題?
NAT很好地解決了地址緊缺的問題,屏蔽了內(nèi)部網(wǎng)絡(luò),但也帶來一些問題。內(nèi)網(wǎng)的主機(jī)向外連接是很容易的(NAT相當(dāng)于透明的,內(nèi)網(wǎng)的和外網(wǎng)的主機(jī)均不用知道NAT的情況)。但如果外部的計(jì)算機(jī)想訪問子網(wǎng)內(nèi)的計(jì)算機(jī)就比較困難了,這可以使內(nèi)網(wǎng)主機(jī)先發(fā)起連接從而解決問題。但是如果兩臺(tái)主機(jī)都分別位于兩不同NAT后面時(shí),兩臺(tái)主機(jī)無(wú)法通信。當(dāng)分別位于兩不同NAT(NAT A,NAT B)后面的兩臺(tái)主機(jī)A和B欲進(jìn)行通訊時(shí),若主機(jī)B主動(dòng)發(fā)起連接,它該連哪個(gè)地址呢?第一種情況:試圖直接連到主機(jī)A的內(nèi)網(wǎng)私有地址(10.0.0.2:1234)肯定會(huì)失敗,因?yàn)?0.0.0.2根本就不是一個(gè)可以在公網(wǎng)上路由的IP地址;第二種情況,試圖直接連到B的NAT公有地址(155.99.25.11:62000),NAT A會(huì)拒絕這個(gè)數(shù)據(jù)包,因?yàn)檫@個(gè)端口并無(wú)綁定內(nèi)網(wǎng)主機(jī)的某個(gè)端口,或即使有所綁定,但這個(gè)端口所綁定的外網(wǎng)地址和端口并不是B的地址和端口。若A主動(dòng)連接B,結(jié)果一樣。?
有兩種方法解決這個(gè)問題。方法一:通過服務(wù)器,服務(wù)器作為中間人,轉(zhuǎn)發(fā)主機(jī)間的數(shù)據(jù)。但若用戶數(shù)量到達(dá)一定數(shù)目時(shí),這方法浪費(fèi)帶寬且給服務(wù)器帶來很大壓力,所以方法不可行。方法二,還是通過服務(wù)器,但服務(wù)器只充當(dāng)“介紹人”,不轉(zhuǎn)發(fā)主機(jī)間的數(shù)據(jù),具體請(qǐng)看下面的“UDP打孔技術(shù)” (UDP hole punching)?
穿透NAT——UDP打孔技術(shù)?
所謂的“打孔技術(shù)”,就是在內(nèi)網(wǎng)的NAT設(shè)備上打上一個(gè)“孔”(也就是在NAT上建立一個(gè)會(huì)話,綁定地址和端口號(hào)),這個(gè)孔不能由外部來打,只能由內(nèi)網(wǎng)內(nèi)的主機(jī)來打。而且這個(gè)孔可能是有方向的,比如從內(nèi)部某臺(tái)主機(jī)(比如:192.168.0.10)向外部的某個(gè)IP(比如:219.237.60.1)發(fā)送一個(gè)UDP包,那么就在這個(gè)內(nèi)網(wǎng)的NAT設(shè)備上打了一個(gè)方向?yàn)?19.237.60.1的“孔”,以后219.237.60.1就可以通過這個(gè)孔與內(nèi)網(wǎng)的192.168.0.10聯(lián)系了[13]。?
下面就根據(jù)NAT的各種類型詳細(xì)解析如何“打孔”,如何穿透NAT。?
1.完全錐形(Full Cone)NAT?
處于不同內(nèi)網(wǎng)的主機(jī)A和主機(jī)B,各自先連接服務(wù)器,從而在各自NAT設(shè)備上打開了一個(gè)“孔”,服務(wù)器收到主機(jī)A和主機(jī)B的連接后,知道A與B的公網(wǎng)地址和NAT分配給它們的端口號(hào),然后把這些NAT地址與端口號(hào)告訴A與B,由于在完全錐形NAT的特點(diǎn),A和B給服務(wù)器所打開的“孔”,能給別的任何的主機(jī)使用。故A與B可連接對(duì)方的公網(wǎng)地址和端口直接進(jìn)行通信。服務(wù)器在這里充當(dāng)“介紹人”,告訴A與B對(duì)方的地址和端口號(hào)。?
2.受限制錐形(Restricted Cone)NAT?
A和B還是要先連接服務(wù)器,服務(wù)器發(fā)送A和B的地址和端口信息給A和B,但由于受限制錐形NAT的特點(diǎn),他們所打開的“孔”,只能與服務(wù)器通信。要使他們可以直接通信,解決辦法如下:?
假如主機(jī)A開始發(fā)送一個(gè)UDP信息到主機(jī)B的公網(wǎng)地址上,與此同時(shí),它又通過服務(wù)器中轉(zhuǎn)發(fā)送了一個(gè)邀請(qǐng)信息給主機(jī)B,請(qǐng)求主機(jī)B也給主機(jī)A發(fā)送一個(gè)UDP信息到主機(jī)A的公網(wǎng)地址上。這時(shí)主機(jī)A向主機(jī)B的公網(wǎng)IP發(fā)送的信息導(dǎo)致NAT A打開一個(gè)處于主機(jī)A的和主機(jī)B之間的會(huì)話,與此同時(shí),NAT B也打開了一個(gè)處于主機(jī)B和主機(jī)A的會(huì)話。一旦這個(gè)新的UDP會(huì)話各自向?qū)Ψ酱蜷_了,主機(jī)A和主機(jī)B之間就可以直接通信了[14]。?
3.端口受限制錐形(Port Restricted Cone)NAT?
對(duì)于該類型的NAT,解決辦法跟上面的方法一樣。?
4.對(duì)稱型(Symmetric)NAT?
對(duì)稱型NAT,對(duì)于不同的外網(wǎng)主機(jī)地址,它都會(huì)分配不同的端口號(hào),所以進(jìn)行UDP打孔比較困難,但也可以進(jìn)行端口預(yù)測(cè)打孔,不過不能保證成功。?
以上的穿透NAT,是對(duì)NAPT來進(jìn)行穿透,主要是針對(duì)UDP協(xié)議。TCP協(xié)議也有可能,但是可行性非常小,要求更高。并且,語(yǔ)音視頻通信是用UDP傳輸?shù)?#xff0c;故針對(duì)TCP的NAT穿透在這里不作討論?;A(chǔ)NAT不修改經(jīng)過的數(shù)據(jù)包的端口號(hào),它們可以看作是完全錐形NAT的精簡(jiǎn)版本,即基礎(chǔ)NAT也可以被穿透。NAT設(shè)備將在一定時(shí)間后關(guān)閉UDP的一個(gè)映射,所以為了保持與服務(wù)器能夠一直通信,服務(wù)器或客戶端必須要周期性地發(fā)送UDP包,保持映射不被關(guān)閉。?
目前比較常用的NAT類型是完全錐型NAT?
 ?
如圖6-7所示,步驟如下:?
①客戶端A發(fā)UDP數(shù)據(jù)報(bào)經(jīng)NAT A,把數(shù)據(jù)發(fā)送到服務(wù)器。NAT A分配端口給客戶端A。服務(wù)器接收到信息后,把客戶端A經(jīng)NAT A后的地址及端口信息記錄下來。?
②客戶端B發(fā)UDP數(shù)據(jù)報(bào)經(jīng)NAT B,把數(shù)據(jù)發(fā)送到服務(wù)器。NAT B分配端口給客戶端B。服務(wù)器接收到信息后,把客戶端B經(jīng)NAT B后的地址及端口信息記錄下來。?
③ 服務(wù)器把客戶端B的地址及端口信息發(fā)送給客戶端A,把客戶端A的地址及端口信息發(fā)送給客戶端B,客戶端A、B就可以通過所獲得的對(duì)方的地址及端口號(hào)進(jìn)行通信了。

轉(zhuǎn)載于:https://www.cnblogs.com/general0878/p/5076470.html

總結(jié)

以上是生活随笔為你收集整理的解决网络通信中外网和内网之间的通信问题(NAT转换)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 夜夜夜网站 | 久久久久国产精品午夜一区 | 91一区二区在线观看 | 内射中出日韩无国产剧情 | 成人免费在线视频网站 | 日本第一页 | 日韩激情在线视频 | 日本黄色精品 | 欧美一区二区三区在线看 | 国产精品精品久久久久久 | 亚洲国产不卡 | 黄色免费网站在线 | 毛片无遮挡高清免费观看 | 亚洲精品中文字幕成人片 | 久久午夜夜伦鲁鲁一区二区 | 人人干天天操 | 亚洲人人夜夜澡人人爽 | 午夜一本 | 人人舔人人干 | 国产精品国产精品国产专区不片 | 欧美偷拍一区二区 | 在线视频久 | 国产porn| 黄色小视频免费观看 | 日韩在线网址 | 在线观看国产视频 | 色就是色综合 | 欧美情趣视频 | 跪求黄色网址 | 精品人妻人伦一区二区有限公司 | 日本少妇一级片 | 亚洲美女自拍视频 | 成人片黄网站久久久免费 | 久久久久久久久网站 | 成人免费无遮挡无码黄漫视频 | 亚洲啊啊啊啊啊 | 国产美女精品一区二区三区 | 久久国产主播 | 最新黄色av网址 | v片在线免费观看 | www.黄色网| 日本黄色性视频 | 国产视频在线免费观看 | 一级生活毛片 | 欧美一区网站 | 欧美大片免费看 | 天天爽夜夜| 中文字幕电影一区二区 | 日本在线观看www | 黑人与亚洲人色ⅹvideos | 主播一区二区 | 就要操就要射 | 国模大胆一区二区三区 | 竹菊影视一区二区三区 | 在线免费看污片 | 人人精品视频 | 色爱AV综合网国产精品 | 超碰2022| 国产乱来视频 | 99国产精品久久久久99打野战 | 夜夜草网站 | 永久av在线免费观看 | 精品久久视频 | 另类亚洲色图 | 狠狠躁天天躁夜夜躁婷婷 | 国产喷水福利在线视频 | 久久综合久色欧美综合狠狠 | 神马福利视频 | 毛片大全免费 | av网在线 | 97人人视频 | 中文字幕第8页 | 成人免费大全 | 老熟妻内射精品一区 | 免看一级a毛片一片成人不卡 | 91精彩视频 | 芒果视频污污 | 在线观看jizz | 二区久久 | 国产一区二区黑人欧美xxxx | 欧美成人精品欧美一级乱 | 探花av在线| 久久系列| 精品一性一色一乱农村 | 毛片大全免费看 | 国产人妻大战黑人20p | 日韩1级片| 五月婷婷综合色 | 亚洲av不卡一区二区 | 这里只有精品6 | 熟女少妇内射日韩亚洲 | 欧洲精品久久久久毛片完整版 | 日韩欧美亚洲国产 | 秋霞7777鲁丝伊人久久影院 | 一级黄色免费片 | 日韩欧美中文字幕在线观看 | 一区二区麻豆 | 男生把女生困困的视频 | 欧美理伦|