路由器WAN口和LAN口詳解

路由器 OpenWrt Linux CPU 運營商 IT信息技術隨筆 2018-12-09

做路由器的聯網,由於利用了Openwrt操作系統,做起來雖然方便,但是很多原理細節都被忽略了。所以這裡再來老生常談一下wan口和lan口的區別,以及他們之間的工作原理。

路由器WAN口和LAN口詳解

基本知識:

熟悉網絡的朋友都知道WAN是英文Wide Area Network的首字母所寫,即代表廣域網;而LAN則是Local Area Network的所寫,即本地(或叫局域網)。那麼我們不妨給路由器上的WAN口和LAN口取一箇中文名稱,分別是廣域網端口和本地網端口。從名稱中不難發現,WAN口主要用來連接外部網絡,如ADSL、LAN、光纖等各種接進線路;而LAN口用來連接內部網絡,主要與局域網中的交換機、集線器或PC相連。在家裡使用時,路由器WAN口使用的IP地址為網絡運營商所提供的靜態或動態公網IP地址,而LAN口所使用的IP地址則是局域網中分配的內網IP地址。因此,每一個路由器都會擁用一個私有IP地址,這樣既可讓路由器充當局域網中的網關,也便於網管對路由器進行治理。寬帶路由器的路由功能就體現在wan口IP地址和lan口IP地址之間的數據路由上,通常我們根據網絡運營商所提供的接入方式來設置WAN口的網絡參數,通常有靜態IP地址、動態IP地址或PPPOE等方式,它與網絡運營商的接入設備處於同一個外網。而將LAN口的IP地址則設置為本地局域網內的IP地址,通常是我們自己可以在寬帶路由器上自行設定的IP地址,LAN口下所連接的計算機組成一個“本地網”,路由器的LAN口IP地址是這個網絡的網關。

再詳細說說數據在同一個路由器上wan口和lan口數據是如何走的。其實這個過程就是NAT的一個過程。NAT技術的出發點事為了解決IPv4地址不足的問題,提高現有IPv4地址利用率,但他們的實現機制不一樣。VLSM和CIDR也是這個目的,他們是通過調整子網掩碼長度。而NAT技術通過允許組織內部網絡使用非全局可路由IP地址的用通過地址轉換為全局可路由的IP地址來訪問Internet,以降低對公網IP地址的需求。

NAT就運行在位於內外網之間的路由設備上,在內外網用戶之間通信時對數據包中的地址進行轉換。

主要用於三種情形:(1)無足夠的公網IP地址可用時(2)重構網絡IP地址部署(3)實現簡單的TCP負載均衡。

我們這裡用家庭網絡來做舉例,家庭內部網絡的機器都是接lan口,通過lan口向外部網絡發送數據包,首先發送一個請求到默認網關,其實就是cpu上的lan口,這裡我們這麼理解,一般的路由器上的網關就是指cpu上的lan口,它一般通過交換芯片擴展出4個lan口,這些lan口就是平時使用的那幾個lan口。路由器在分析下面發送來的數據包後,檢查數據包中的內網IP地址時會檢查設備本身的NAT地址轉換表。在找到相應條目後,把源地址也就是本來的內網IP地址換成wan口的IP地址,目的地址不變,發送到外網上去。外部網絡接受到數據包後,會解析出數據包中的路由器wan口IP地址,將響應數據包返回到這個wan口IP地址,發送迴路由器。路由器將這個返回數據包中目的地址(wan口IP)NAT轉換為內網IP,最終共完成整個數據包的發送和接受。

這裡其實有一個問題要深入一下,這麼多lan口,你怎麼區別返回數據時NAT該怎麼轉換?

另外路由器是怎麼給這些lan口自動分配內網IP地址的?

先來回答第一個問題:

當一臺小型商務企業的內部網計算機用戶連接到 Internet 資源時,該用戶的 TCP/IP 協議產生一個 IP 數據包,該數據包包含以下值,這些值位於 IP 和 TCP 或 UDP 標頭中:

• 目標 IP 地址:Internet 資源 IP 地址

• 源 IP 地址:私有 IP 地址

• 目標端口:Internet 資源 TCP 或 UDP 端口

• 源端口: 源應用程序 TCP 或 UDP 端口

請求源主機或者其它路由器將此 IP 數據包發送給 NAT, 然後由 NAT 將向外發送的數據包的地址解析如下:

• 目標IP地址:Internet 資源 IP 地址

• 源IP 地址:ISP 分配的公用地址

• 目標端口:Internet 資源 TCP 或 UDP 端口

• 源端口:重新映射的源應用程序TCP 或 UDP 端口

NAT 將重新映射的 IP 數據包發送到 Internet 。響應計算機將向 NAT 返回一個響應。當 NAT 接收到此響應時,該數據包將包含以下地址信息:

• 目標IP 地址:ISP 分配的公用地址

• 源IP地址:Internet 資源 IP 地址

• 目標端口:重新映射的源應用程序 TCP 或 UDP 端口

• 源端口:Internet 資源的 TCP 或者 UDP 端口

當 NAT 完成映射和解析地址後,將向 Internet 客戶端發送數據包,此數據包包含以下地址信息:

• 目標 IP 地址:私有 IP 地址

• 源 IP 地址:Internet 資源 IP 地址

• 目標端口:源應用程序TCP 或者 UDP 端口

• 源端口:Internet 資源 TCP 或 UDP 端口

看完這段,我的理解是根據NAT表和端口號來對不同的lan和不同的服務做區別的。NAT表應該是臨時創建的,哪個lan口發出請求,NAT表就增加一項,記錄私有(內網)IP,不同的服務使用端口號的映射來做區別。

那麼第二個問題就要涉及DHCP了。我們再來了解下這個應用層服務。基礎知識可以先百度。

DHCP是一個基於廣播的協議,它的操作可以歸結為四個階段,這些階段是IP租用請求、IP租用提供、IP租用選擇、IP租用確認。

從這4個名詞中我們就知道DHCP的基本工作原理了,首先lan廣播找到DCHP服務器,那麼lan廣播的這一段就是DHCP客戶端。接著可能有很多DHCP服務器返回了OFFER報文進行IP地址預分配,然後DHCP客戶端選擇(一般是第一個收到的offer)進行確認REQUEST,DHCP服務器收到確認後,帶著預先準備好的ip發送ACK報文,完成整個過程。那麼這裡的服務器就是我們的網關咯,也就是CPU,它是裝過dhcp服務的openwrt系統,但是openwrt系統的dhcp和linux不一樣,完了再慢慢研究吧。不過我想原理是差不多的。

相關推薦

推薦中...