1. 程式人生 > >網路是怎樣連線的學習筆記-第三章-路由器的附加功能

網路是怎樣連線的學習筆記-第三章-路由器的附加功能

3.4 路由器的附加功能


 

3.4.1 通過地址轉換有效利用 IP 地址

地址轉換功能出現的背景

地址就是用來識別每一臺裝置的標誌,因此每臺裝置都應該有一個唯一不重複的地址。

進入 20 世紀 90 年代之後,接入網際網路的裝置數量也快速增長,過不了多久,可分配的地址就用光了。

如果不能保證每臺裝置有唯一不重複的地址,就會從根本上影響網路包的傳輸,這是一個非常嚴重的問題。

內網使用私有地址

每個公司的網路是相互獨立的,公司內部裝置不需要分配固定地址。

於時規定某些地址是用於內網的,這些地址叫作私有地址,而原來的固定地址則叫作公有地址。

私有地址的規則其實並不複雜,在內網中可用作私有地址的範圍僅限以下這些。

10.0.0.0 ~ 10.255.255.255

172.16.0.0 ~ 172.31.255.255

192.168.0.0 ~ 192.168.255.255

私有地址本身並沒有什麼特別的結構,只是將公有地址中沒分配的一部分拿出來規定只能在內網使用。

這個範圍中的地址和其他公司重複也沒關係,任何人都可以自由使用。

如果在公司內部地址有重複就無法傳輸網路包了,因此必須避免在內網中出現重複的地址。

使用地址轉換將內外網分開

公司內網並不是完全獨立的,而是需要通過網際網路和其他很多公司相連線。

所以當內網和網際網路之間需要傳輸包的時候,問題就出現了。如果很多地方都出現相同的地址,包就無法正確傳輸了。

當公司內網和網際網路連線的時候,需要公司內網分成兩個部分,一部分是對網際網路開放的伺服器,另一部分是公司內部裝置。

其中對網際網路開放的部分分配公有地址,可以和網際網路直接進行通訊,內網部分則分配私有地址。

內網中的裝置不能和網際網路直接收發網路包,而是通過一種特別的機制進行連線,這個機制就叫地址轉換。


 

3.4.2 地址轉換的基本原理

地址轉換的基本原理是在轉發網路包時對 IP 頭部中的 IP 地址和埠號進行改寫。

TCP的包轉發到網際網路時IP地址被路由器改寫

假設現在要訪問Web 伺服器,TCP 連線操作的第一個包被轉發到網際網路時,會像圖 3.18 這樣,將傳送方 IP 地址從私有地址改寫成公有地址。

這裡使用的公有地址是地址轉換裝置的網際網路接入埠的地址。與此同時,埠號也需要進行改寫,地址轉換裝置會隨機選擇一個空閒的埠。

這裡的埠號指的是 TCP 和 UDP 的埠號,不是路由器和集線器連線網線的那個埠。

改寫後的公有私有地址對應關係存在表中

然後,改寫前的私有地址和埠號,以及改寫後的公有地址和埠號,會作為一組相對應的記錄儲存在地址轉換裝置內部的一張表中。

 

具備地址轉換功能的裝置不僅有路由器,有些防火牆也有地址轉換功能,它的工作方式和路由器是相同的,因此這裡我們雖然用了地址轉換裝置這個詞,但在這裡的上下文中指的就是路由器。

改寫傳送方 IP 地址和埠號之後,包就被髮往網際網路,最終到達伺服器,然後伺服器會返回一個包。

伺服器返回的包的目標IP地址時公有地址

伺服器返回的包的接收包是原始包的傳送方,因此返回的包的接收方就是改寫後的公有地址和埠號。

這個公有地址其實是地址轉換裝置的地址,因此這個返回包就會到達地址轉換裝置。

路由器根據表將公有地址轉換為私有地址

接下來,地址轉換裝置會從地址對應表中通過公有地址和埠號找到相對應的私有地址和埠號,並改寫接收方資訊,然後將包發給公司內網,這樣包就能夠到達原始的傳送方了。

在後面的包收發過程中,地址轉換裝置需要根據對應表查詢私有地址和公有地址的對應關係,再改寫地址和埠號之後進行轉發。

斷開後對應記錄被刪除

當資料收發結束,進入斷開階段,訪問網際網路的操作全部完成後,對應表中的記錄就會被刪除。

通過這樣的機制,具有私有地址的裝置就也可以訪問網際網路了。

從網際網路一端來看,實際的通訊物件是地址轉換裝置(這裡指的是路由器)。

家庭網路中的工作過程也是完全相同的,只是規模不同而已。


 

3.4.3 改寫埠號的原因 

早期的地址轉換機制是隻改寫地址,不改寫埠號的。

用這種方法也可以讓公司內網和網際網路進行通訊,而且這種方法更簡單。

但是使用這種方法的前提是私有地址和公有地址必須一一對應,也就是說,有多少臺裝置要上網際網路,就需要多少個公有地址。

一個幾千人的公司裡,有幾百人同時訪問網際網路是很正常的,這樣就需要幾百個公有地址。改寫埠號正是為了解決這個問題。

客戶端一方的埠號本來就是從空閒埠中隨機選擇的,因此改寫了也不會有問題。

埠號是一個 16 位元的數值,總共可以分配出幾萬個埠。

用公有地址加上埠的組合對應一個私有地址,一個公有地址可以對應幾萬個私有地址,這種方法提高了公有地址的利用率。


 

3.4.4 從網際網路訪問公司內網

對於從公司內網訪問網際網路的包,即便其傳送方私有地址和埠號沒有儲存在對應表中也是可以正常轉發的。

因為用來改寫的公有地址就是地址轉換裝置自身的地址,而埠號只要隨便選一個空閒的埠就可以了,這些都可以由地址轉換裝置自行判斷。

然而,對於從網際網路訪問公司內網的包,如果在對應表中沒有記錄就無法正常轉發。

因為如果對應表中沒有記錄,就意味著地址轉換裝置無法判斷公有地址與私有地址之間的對應關係。

換個角度來看,這意味著對於沒有在訪問網際網路的內網裝置,是無法從網際網路向其傳送網路包的。

而且即便是正在訪問的裝置,也只能向和網際網路通訊中使用的那個埠傳送網路包,無法向其他埠傳送包。

也就是說,除非公司主動允許,否則是無法從網際網路向公司內網傳送網路包的。這種機制具有防止非法入侵的效果。

使外網能訪問內網的方法

之所以無法從網際網路訪問內網,是因為對應表裡沒有相應的記錄,那麼我們只要事先手動新增這樣的記錄就可以了。

用於外網訪問的伺服器可以放在地址轉換裝置的外面併為它分配一個公有地址。這種配置中,需要將地址轉換裝置的公有地址新增到 DNS 伺服器中。

也可以將伺服器的私有地址手動新增到地址轉換裝置中,這樣就可以從網際網路訪問到這臺具有私有地址的伺服器了。

 

 


 

3.4.5 路由器的包過濾功能

什麼是包過濾功能

根據 MAC 頭部、IP 頭部、TCP 頭部的內容,按照事先設定好的規則決定是轉發這個包,還是丟棄這個包。

我們通常說的防火牆裝置或軟體,大多數都是利用這一機制來防止非法入侵的。

 也有一些防火牆是用其他機制來防止非法入侵的。

包過濾的原理

要想設定一套恰當的規則來區分非法訪問和正常訪問,只阻止非法入侵而不影響正常訪問,是非常不容易的。

為了防止從網際網路非法入侵內網,我們可以將來自網際網路的所有包都遮蔽掉,如果簡單地阻止來自網際網路的全部包,那麼從內網訪問網際網路的操作也會無法正常進行。

這個話題其實非常有趣,由於包過濾的使用方法和伺服器的工作相關,所以我們在探索伺服器時再詳細介紹吧。

當網路包通過網際網路接入路由器之後,它終於要進入網際網路內部了,下一章將對這一部分進行探索。


 

章節測驗

1. 區域網中使用的雙絞線中為什麼要將訊號線纏繞在一起?

抑制噪聲

2. 將輸入的訊號廣播到所有埠上的裝置是交換機還是集線器?

集線器

3. 用來指定網路號和主機號位元數的值叫什麼?

子網掩碼

4. 將大網路包進行拆分的功能叫什麼?

分片

5. 路由器的路由表中有時可以看到子網掩碼為 0.0.0.0 的記錄,這代表什麼意思?

預設路由