什麼是公網IP、內網IP和NAT轉換?

一、引言

搞網絡通訊應用開發的程序員,可能會常常聽到外網IP(即互聯網IP地址)和內網IP(即局域網IP地址),但他們的區別是什麼?又有什麼關係呢?另外,內行都知道,提到外網IP和內網IP就不得不提NAT路由轉換這種東西,那這雙是什麼鬼?本文就來簡單講講這些到底都是怎麼回事。 程序員

二、每臺電腦都必需要一個公網IP嗎?

答案:不是。數據庫

咱們都知道,IPv4中的IP地址的數量是有限的(因此如今都在搞IPv6嘛),每次把一部分地址分配出去,那麼就意味着可以用來分配的IP地址就更少了,並且隨着如今手機,電腦等的快速發展,若是每一個手機或者電腦都要求一個IP地址,那麼顯然IP地址是不夠用的。網絡

爲了解決這個問題,咱們能夠採起這樣的策略:例如對於一個公司來講,每一個公司都會有一個屬於本身公司的內網(也能夠稱之爲局域網)。cdn

內網(學名應叫局域網(Local Area Network,LAN))是在一個局部的地理範圍內,通常能夠是是幾米內(好比家庭內網),也能夠是方圓幾公里之內(好比一個大學內網),將各類計算機、外部設備和數據庫等互相聯接起來組成的計算機通訊網。htm

內網主要做用有:blog

1)共享傳輸信道:簡單地理解就是不須要每臺電腦一個外網IP地址; 2)傳輸速率高:內網之間的電腦由於沒有外網網絡拓撲的複雜性,因此互相通訊的網絡能夠很快,好比從一個臺電腦向另外一臺電腦複製一個幾G的文件可能只須要數十秒時間。 3)誤碼率低:由於通訊距離很近,因此誤碼率很低,換句話說就是網絡很穩定(老一點的程序員都知道,讀大學的時候同一個宿舍內網聯網玩C/S遊戲,幾乎不會遇到斷網或卡頓的事情,除非有人下毛片或者把網絡給拔了,哈哈)。遊戲

三、公司的內網是如何實現內網IP地址分配和管理的?

假如咱們給這個公司A分配了一個IP=192.168.1.1。咱們把這個IP做爲這個公司內網的網關吧。路由

在公司A的內網裏面有3臺電腦,若是這三臺電腦要上網的話,咱們須要給他分配一個IP,那麼就像上一節提到的:咱們必定須要去申請3個IP地址來使用嗎?開發

答否。咱們不必定須要去申請3個IP的,在咱們這個內網裏,咱們能夠指定本身的規則,例如,咱們能夠給這三臺電腦隨便分配三個IP(請注意,這三個IP不是去申請的,並且我本身隨意給它分配的)。分別分配電腦A = 192.168.1.2 電腦B = 192.168.1.3 電腦C = 192.168.1.4。get

而這個規則能夠由咱們的內網網關來管理,就像下面這樣:

四、NAT技術:實現內網電腦訪問外網的能力

假如電腦A想要訪問百度,百度的IP咱們假設爲:172.168.30.3:

咱們都知道,電腦A的IP是咱們虛構的,實際上可能並不存在這樣一個IP,若是用電腦A的IP去訪問百度,那確定行不通。

咱們也知道,因爲百度和電腦A不在一個局域網內,因此A要訪問百度,那麼必須得通過網關。而網關的這個IP地址,是真實存在的,是能夠訪問百度的。

爲了讓 A 能夠訪問百度,那麼咱們能夠採起這樣的方法:讓網關去幫助 A 訪問,而後百度把結果傳遞給網關,而網關再把結果傳遞給 A,這樣不就能夠解決了?

不過電腦A、B、C均可能拜託網關去幫忙訪問百度,而百度返回的結果 的目的IP都是網關的IP=192.168.1.1。那麼網關該如何進行區分這結果是A的、B的仍是C的呢?

咱們去訪問百度的時候,不是須要指定一個端口嗎?只要咱們把 A的IP + 端口 映射成 網關的IP+端口,不就能夠惟一肯定身份了?

例如A用端口60去訪問百度,網關把 A的IP+端口60 映射成 網關的IP+端口80 不就能夠了?

百度把結果返回給網關的80端口以後,網關再經過映射表,就能夠把結果返回給 A的60端口了。

若是B也是用60端口去訪問百度的話,也是同樣,能夠把它映射到90端口。

這種方法地址的映射轉換,咱們也稱之爲網絡地址轉換,英文爲 Network Address Translation,簡稱NAT。

而像A、B、C這樣的IP地址咱們也稱之爲內網IP,即內網IP;而像網關,百度這樣的IP咱們稱之爲外網IP(即互聯網公網IP)。

因此,一個典型的內網訪問公網的原理,就像下圖這樣就能夠實現了:

如今知道外網IP和內網IP了吧?

五、本文小結

爲了解決IP地址短缺,技術專家們發明了內網技術,而內網技術的理論支撐就是NAT技術,因此搞網絡通訊的程序員很是有必要對NAT技術有一個深刻的理解。

參考文章:

network.51cto.com/art/201809/… network.51cto.com/art/201901/…

相關文章
相關標籤/搜索