計算機網絡——NAT的妙用(網絡地址轉換協議)

點贊後看,養成習慣
喜歡的話 可以點個關注喲
你們的點贊支持對博主們來說很重要哦 !!!

本文將針對以下問題逐條進行解答:

01 IPV4有何實際意義?

02 爲什麼需要進行NAT(網絡地址轉換)?

03 如何進行網絡地址轉換?

爲方便您的閱讀,可點擊下方藍色字體,進行跳轉↓↓↓

在這裏插入圖片描述


01 IPV4的用途

IPV4地址是網絡上唯一的地址,通過這些公網IPV4地址,我們能夠準確定位到某一臺主機。

那我們知道了地址之後,是不是一定能夠找到對方呢? 並不是的,比如,你知道你要去的地方是動物園,那你就一定知道去的路嘛?不一定吧,通常情況下我們還得通過地圖導航軟件來輔助我們到達目的地。

在這裏插入圖片描述
而在網絡上充當這個地圖角色的就是路由器們,路由器再知道了公網IPV4地址之後,就會告訴相鄰的鄰居,鄰居再告訴鄰居,就這樣,一傳十,十傳百,一張網絡的地圖就這麼產生了。

具體來說,如果小明擁有一個公網IP爲:1.1.1.1,那麼路由器A因爲是直連肯定知道要找小明怎麼走。而路由器A不僅自己知道怎麼找A,還會告訴路由器B如果你想找小明的話,你就把IP包發給我就好了。以此類推,最後,路由器D如果想要和小明通信的話,那他把IP包丟給路由器C,路由器C把IP包丟給路由器B,最後路由器B丟給路由器A。

以上,A -> D 是路由擴散的過程,這個過程有路由器上的路由協議完成
D -> A 是用戶IP包接力的過程,像多米諾骨牌一樣,最終找到小明

現在假設連接在路由器A上的小明 1.1.1.1 要和 連接在路由器D上的小美 2.2.2.2 進行通信,過程是怎麼樣的呢?


在這裏插入圖片描述

首先小明發送IP包的時候,IP報頭裏面添加了源IP地址 1.1.1.1 和 目的IP地址 2.2.2.2

這個IP包,以路由器A爲起點開始了尋路,A查路由器,要找2.2.2.2 下一跳是路由器B,於是發給了B,B發給了C,C發給了D。最終IP包被小美接收到了,小美髮現對方的IP是 1.1.1.1 ,於是發一個IP包迴應對方,這個IP包的地址是這樣的:

目的IP 1.1.1.1
源IP 2.2.2.2

這裏要注意一點,IP包途徑的路由器必須都得有小明、小美的路由,只要有一跳出現 路由表缺失或者不正確,就會造成通信的障礙,或IP包無法到達對方,或者IP回包無法回來


在這裏插入圖片描述
當通信出現故障的時候,先要排除是不是路由問題造成的,要保住去向路由、迴向路由都要正確無誤。我們可以使用Ping、Traceroute這兩個中舉協同工作,準確找出到底是那臺路由器造成的。




02 網絡地址轉換由來

我們知道,公網IP地址可以幫我們與他人通信。但是現在有一個問題出現:

小明是有一個公網IP地址,1.1.1.1,但是小明家裏的智能終端很多啊,有IPAD、手機、電腦,每臺設備都需要一個IP地址才能工作,這該怎麼分呢?

在這裏插入圖片描述
有辦法,專門負責IP地址分配的國際機構IANA預留了幾段地址,專門用於局域網使用,這三段地址分別爲:

10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255

假設小明家選擇了 10.1.1.0/24這個私有網段,在路由器的局域網配置了DHCP服務器,專門用於給終端分配這個網段的地址,其中10.1.1.1爲路由器局域網接口的IP,10.1.1.254爲廣播地址,那麼剩下的10.1.1.2 -254這253個地址就可以分配給局域網的終端了。



03 網絡地址轉換具體流程




那麼這種情況下,如果小明的手機 10.1.1.2 想要訪問 小美的網頁 http:// 2.2.2.2 ,該如何通信呢?


1、小明的電腦使用TCP協議來傳輸HTTP應用,他發出IP報文,其中目的IP爲 2.2.2.2 源IP爲10.1.1.2,目的端口號爲 80,源端口號位 1520

這裏的目的端口號可以讓小美的TCP找到服務器進程,這裏的服務器進程就是網頁服務器程序

這裏的源端口號可以讓小明的TCP找到對應的瀏覽器進程,把小美的回覆消息轉交給該進程



2、路由器接收到小明發來的IP報文,路由器發現源IP地址10.1.1.2是私有地址,做地址轉換,動態生成地址轉換表:

其中目的IP爲 2.2.2.2 源IP從10.1.1.2映射爲1.1.1.1,目的端口號爲 80,源端口號位 1520

端口號佔兩個字節,取值範圍是1-65535,端口號1520在路由器上沒有被任何本地經常佔用,所以小明電腦可以原封不動地使用1520這個端口號。



3、經過各個路由器的配合,這個IP報文經過了25跳到達了小美的電腦。

但是到達了電腦還沒有完吶,因爲電腦上的進程特別多,如何知道發給那個進程呢?

舉個例子,福建省福州市長樂區XXX37號,這個IP地址告訴你對方在福建省福州市長樂區XXXX,而端口號告訴你對方在37號

簡單來說,IP地址準確定位電腦,端口號用於準確定位電腦上特定進程,即 IP地址+端口號 ,定位了某一臺電腦的某一個進程



4、小美的網頁服務收到小明的訪問網頁請求後,回覆小明的手機,她打包了一個IP報文,只要把接收到的IP報文,源/目的IP位置調換,源/目的端口互換位置即可

其中目的IP爲 1.1.1.1, 源IP 2.2.2.2,目的端口號爲 1520,源端口號爲 80



5、IP報文到達小明路由器,查NAT映射表,匹配到後做地址替換,替換後的IP報文爲:

目的IP爲10.1.1.2, 源IP 1.1.1.1,目的端口號爲 1520,源端口號爲 80



6、最後IP報文到達小明電腦指定端口完成通信

補充:
如果這個時候小明的電腦也要訪問小美的網頁,恰巧也想將1520作爲源端口會發生什麼呢?

小明電腦發生IP包後,小明路由器接收到該IP報文,發現1520端口已經被佔用,於是在端口號空間 1025-65535挑選了一個空閒端口號1521給電腦使用,動態生成NAT表


公網IP 私網IP 路由器端口號 主機端口號 存活時間
1.1.1.1 10.1.1.2 1520 1520 237
1.1.1.1 10.1.1.3 1521 1520 300

這樣子,最終呈現在小美電腦上的IP報文格式爲:
目的IP爲2.2.2.2, 源IP 1.1.1.1,目的端口號爲 80,源端口號爲 1521

此報文最終可以找到小美的服務器進程,返程的回覆報文,小明的路由器也可以查NAT表,做地址轉換,最終達到小明的手機



總結一下就是,小明的路由器爲了辨別不同用戶(IP地址不同)的流量,或者同一個用戶的不同流量(端口號不同),使用路由器上唯一的端口號來分辨他們





本文完,感謝你的閱讀!!!

最後,如果本文對你有所幫助,希望可以點個贊支持一下。你們的鼓勵將會是博主原創的動力。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章