五分鐘搞懂內網和外網之間的通訊的原理

2021-08-28 11:10:43 字數 1819 閱讀 1089

cpp軟體架構獅 2018-09-25 15:01:33

對於初學者而已,我們學習的網路程式設計(如tcp,udp程式設計),我們通常都是在區域網內進行通訊測試,有時候我們或者會想,我們現在寫的內網網路資料和外網的網路資料有什麼不同,我們內網的資料是如何走出外網的呢?

首先,我們需要了解一下什麼是公有 ip 和私有 ip ?

公有位址(public address):由 inter nic(internet network information center 網際網路資訊中心)負責。這些 ip 位址分配給註冊並向inter nic提出申請的組織機構,公有 ip 全球唯一,通過它直接訪問網際網路(直接能上網)。

而我們平時通過運營商(電信、移動、聯通寬頻等)上網,家裡面通過路由器分出來的 ip 都是私有 ip(區域網 ip),大家可能會疑問,我們可以上網啊,怎麼會是私有 ip 呢?

接下來,給大家介紹一下什麼是埠對映?

埠對映是 nat 的一種,它將外網主機的 ip 位址的乙個埠對映到內網中一台機器,提供相應的服務。當使用者訪問該 ip 的這個埠時,伺服器自動將請求對映到對應區域網內部的機器上。

現在市場上的家庭路由器都具備 nat 功能,也可以實現埠對映。下圖為小公尺路由器的埠對映設定圖:

我們平時經過路由器,通過寬頻,最終去到運營商那邊,資料是從運營商出去,最終資料是回到運營商那邊,運營商再把資料傳送到使用者的電腦。

路由器,至少有兩個埠:wan 口和 lan 口。

這裡,我們簡化這個過程,我們把運營商當做乙個 nat 裝置。

為了方便大家理解,我們把 ip 的轉化方向反過來分析(準確來說,公網轉區域網)。

a 電腦的 ip 是區域網 ip(192.168.31.11),這個 ip(192.168.31.11)是從路由器的 lan口分配的。

首先,我們需要在運營商那邊申請(租用)乙個公有 ip (長城寬頻一年需要 2000 元左右),假如這個公有 ip 為:128.0.0.123。

假如,我們寫的伺服器如下:

接著,找個 nat 裝置進行相應的埠對映,家庭路由器都有這個功能。這裡以小公尺路由器為例:

對映關係如下:

最後,其他人寫客戶端程式時(電腦能上外網),只要指定目的 ip 位址為 128.0.0.123,埠為 8888,通過這個位址,就能找到192.168.31.248:8080,因為這兩者已經建立好對映,如上圖,這樣,我們的伺服器就能收到資料。

五分鐘搞懂內網和外網之間的通訊的原理

寫的通熟易懂,特轉過來備忘!原創鏈結找不到了 對於初學者而已,我們學習的網路程式設計 如tcp,udp程式設計 我們通常都是在區域網內進行通訊測試,有時候我們或者會想,我們現在寫的內網網路資料和外網的網路資料有什麼不同,我們內網的資料是如何走出外網的呢?公有 ip 和私有 ip 的區別 首先,我們需...

內網和外網之間的通訊

對於初學者而已,我們學習的網路程式設計 如tcp,udp程式設計 我們通常都是在區域網內進行通訊測試,有時候我們或者會想,我們現在寫的內網網路資料和外網的網路資料有什麼不同,我們內網的資料是如何走出外網的呢?公有 ip 和私有 ip 的區別 首先,我們需要了解一下什麼是公有 ip 和私有 ip 公有...

內網和外網之間的通訊的原理

對於初學者而已,我們學習的網路程式設計 如tcp,udp程式設計 我們通常都是在區域網內進行通訊測試,有時候我們或者會想,我們現在寫的內網網路資料和外網的網路資料有什麼不同,我們內網的資料是如何走出外網的呢?首先,我們需要了解一下什麼是公有 ip 和私有 ip 公有位址 public address...