1. 程式人生 > >路由器內網與外網的資料互動

路由器內網與外網的資料互動

0x00 公有IP與私有IP

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

公有地址(Public address):由 Inter NIC(Internet Network Information Center 因特網資訊中心)負責。這些 IP 地址分配給註冊並向Inter NIC提出申請的組織機構,公有 IP 全球唯一,通過它直接訪問因特網(直接能上網)。

私有地址(Private address):屬於非註冊地址,專門為組織機構內部使用,說白了,私有 IP 不能直接上網。

而我們平時通過運營商(電信、移動、聯通寬頻等)上網,家裡面通過路由器分出來的 IP 都是私有 IP(區域網 IP),大家可能會疑問,我們可以上網啊,怎麼會是私有 IP 呢?租用(申請)公有 IP 是需要錢的。 運營商買了一些公有 IP,然後通過這些公有 IP 分出來,再分給一個一個的使用者使用。這個過程有點類似於,我們去安裝了寬度,通過路由器分出幾個 IP,讓好幾個人都能上網,當然運營商通過公有 IP 分出來的過程肯定比這個複雜多了。

0x01 內網對外網發出請求

假如A有一臺電腦,位於路由器的內網中,IP地址為192.168.1.100,現在A想要訪問CSDN,應該怎麼辦呢?我們知道,192.168.1.100這個IP只是在本身的區域網下唯一,但在網際網路中,CSDN怎麼才能知道是哪個192.168.1.100訪問了它呢。

其實,A在訪問CSDN時會發送一個數據包,這個資料包中包含了請求資訊,還包含源IP和目標IP。這個資料包會首先通過路由器,路由器檢測到資料包的目標IP不在這個區域網中時,會將資料包中的源IP改成外網IP,併為其分配一個埠號,同時在埠對映表中隨機生成一個埠號(>1023),對應該區域網下的192.168.1.1的埠號,然後這個資料包會被髮送至網際網路中,去請求CSDN伺服器。

0x02 外網應答內網請求

熟悉TCP三次握手的人會知道,CSDN在收到請求資料包後,會返回一個應答資料包,這個應答資料包中,同樣包含源IP和目標IP,這時這個目標IP就是A所在路由器的外網IP。應答資料包傳送到路由器的隨機埠號上後,路由器會根據對映表中對映關係,將目標IP再次轉換成內網IP,將資料包傳送給A。至此,雙方的資料互動關係就理清了。