做路由器的聯(lián)網(wǎng),由于利用了Openwrt操作系統(tǒng),做起來雖然方便,但是很多原理細節(jié)都被忽略了。所以這里再來老生常談一下wan口和lan口的區(qū)別,以及他們之間的工作原理。 基本知識: 熟悉網(wǎng)絡(luò)的朋友都知道WAN是英文Wide Area Network的首字母所寫,即代表廣域網(wǎng);而LAN則是Local Area Network的所寫,即本地(或叫局域網(wǎng))。那么我們不妨給路由器上的WAN口和LAN口取一個中文名稱,分別是廣域網(wǎng)端口和本地網(wǎng)端口。從名稱中不難發(fā)現(xiàn),WAN口主要用來連接外部網(wǎng)絡(luò),如ADSL、LAN、光纖等各種接進線路;而LAN口用來連接內(nèi)部網(wǎng)絡(luò),主要與局域網(wǎng)中的交換機、集線器或PC相連。在家里使用時,路由器WAN口使用的IP地址為網(wǎng)絡(luò)運營商所提供的靜態(tài)或動態(tài)公網(wǎng)IP地址,而LAN口所使用的IP地址則是局域網(wǎng)中分配的內(nèi)網(wǎng)IP地址。因此,每一個路由器都會擁用一個私有IP地址,這樣既可讓路由器充當局域網(wǎng)中的網(wǎng)關(guān),也便于網(wǎng)管對路由器進行治理。寬帶路由器的路由功能就體現(xiàn)在wan口IP地址和lan口IP地址之間的數(shù)據(jù)路由上,通常我們根據(jù)網(wǎng)絡(luò)運營商所提供的接入方式來設(shè)置WAN口的網(wǎng)絡(luò)參數(shù),通常有靜態(tài)IP地址、動態(tài)IP地址或PPPOE等方式,它與網(wǎng)絡(luò)運營商的接入設(shè)備處于同一個外網(wǎng)。而將LAN口的IP地址則設(shè)置為本地局域網(wǎng)內(nèi)的IP地址,通常是我們自己可以在寬帶路由器上自行設(shè)定的IP地址,LAN口下所連接的計算機組成一個“本地網(wǎng)”,路由器的LAN口IP地址是這個網(wǎng)絡(luò)的網(wǎng)關(guān)。 再詳細說說數(shù)據(jù)在同一個路由器上wan口和lan口數(shù)據(jù)是如何走的。其實這個過程就是NAT的一個過程。NAT技術(shù)的出發(fā)點事為了解決IPv4地址不足的問題,提高現(xiàn)有IPv4地址利用率,但他們的實現(xiàn)機制不一樣。VLSM和CIDR也是這個目的,他們是通過調(diào)整子網(wǎng)掩碼長度。而NAT技術(shù)通過允許組織內(nèi)部網(wǎng)絡(luò)使用非全局可路由IP地址的用通過地址轉(zhuǎn)換為全局可路由的IP地址來訪問Internet,以降低對公網(wǎng)IP地址的需求。 NAT就運行在位于內(nèi)外網(wǎng)之間的路由設(shè)備上,在內(nèi)外網(wǎng)用戶之間通信時對數(shù)據(jù)包中的地址進行轉(zhuǎn)換。 主要用于三種情形:(1)無足夠的公網(wǎng)IP地址可用時(2)重構(gòu)網(wǎng)絡(luò)IP地址部署(3)實現(xiàn)簡單的TCP負載均衡。 我們這里用家庭網(wǎng)絡(luò)來做舉例,家庭內(nèi)部網(wǎng)絡(luò)的機器都是接lan口,通過lan口向外部網(wǎng)絡(luò)發(fā)送數(shù)據(jù)包,首先發(fā)送一個請求到默認網(wǎng)關(guān),其實就是cpu上的lan口,這里我們這么理解,一般的路由器上的網(wǎng)關(guān)就是指cpu上的lan口,它一般通過交換芯片擴展出4個lan口,這些lan口就是平時使用的那幾個lan口。路由器在分析下面發(fā)送來的數(shù)據(jù)包后,檢查數(shù)據(jù)包中的內(nèi)網(wǎng)IP地址時會檢查設(shè)備本身的NAT地址轉(zhuǎn)換表。在找到相應(yīng)條目后,把源地址也就是本來的內(nèi)網(wǎng)IP地址換成wan口的IP地址,目的地址不變,發(fā)送到外網(wǎng)上去。外部網(wǎng)絡(luò)接受到數(shù)據(jù)包后,會解析出數(shù)據(jù)包中的路由器wan口IP地址,將響應(yīng)數(shù)據(jù)包返回到這個wan口IP地址,發(fā)送回路由器。路由器將這個返回數(shù)據(jù)包中目的地址(wan口IP)NAT轉(zhuǎn)換為內(nèi)網(wǎng)IP,最終共完成整個數(shù)據(jù)包的發(fā)送和接受。 這里其實有一個問題要深入一下,這么多l(xiāng)an口,你怎么區(qū)別返回數(shù)據(jù)時NAT該怎么轉(zhuǎn)換? 另外路由器是怎么給這些lan口自動分配內(nèi)網(wǎng)IP地址的? 先來回答第一個問題: 當一臺小型商務(wù)企業(yè)的內(nèi)部網(wǎng)計算機用戶連接到 Internet 資源時,該用戶的 TCP/IP 協(xié)議產(chǎn)生一個 IP 數(shù)據(jù)包,該數(shù)據(jù)包包含以下值,這些值位于 IP 和 TCP 或 UDP 標頭中:
· 目標 IP 地址:Internet 資源 IP 地址 · 源 IP 地址:私有 IP 地址 · 目標端口:Internet 資源 TCP 或 UDP 端口 · 源端口: 源應(yīng)用程序 TCP 或 UDP 端口
請求源主機或者其它路由器將此 IP 數(shù)據(jù)包發(fā)送給 NAT, 然后由 NAT 將向外發(fā)送的數(shù)據(jù)包的地址解析如下:
· 目標IP地址:Internet 資源 IP 地址 · 源IP 地址:ISP 分配的公用地址 · 目標端口:Internet 資源 TCP 或 UDP 端口 · 源端口:重新映射的源應(yīng)用程序TCP 或 UDP 端口
NAT 將重新映射的 IP 數(shù)據(jù)包發(fā)送到 Internet 。響應(yīng)計算機將向 NAT 返回一個響應(yīng)。當 NAT 接收到此響應(yīng)時,該數(shù)據(jù)包將包含以下地址信息:
· 目標IP 地址:ISP 分配的公用地址 · 源IP地址:Internet 資源 IP 地址 · 目標端口:重新映射的源應(yīng)用程序 TCP 或 UDP 端口 · 源端口:Internet 資源的 TCP 或者 UDP 端口
當 NAT 完成映射和解析地址后,將向 Internet 客戶端發(fā)送數(shù)據(jù)包,此數(shù)據(jù)包包含以下地址信息:
· 目標 IP 地址:私有 IP 地址 · 源 IP 地址:Internet 資源 IP 地址 · 目標端口:源應(yīng)用程序TCP 或者 UDP 端口 · 源端口:Internet 資源 TCP 或 UDP 端口 看完這段,我的理解是根據(jù)NAT表和端口號來對不同的lan和不同的服務(wù)做區(qū)別的。NAT表應(yīng)該是臨時創(chuàng)建的,哪個lan口發(fā)出請求,NAT表就增加一項,記錄私有(內(nèi)網(wǎng))IP,不同的服務(wù)使用端口號的映射來做區(qū)別。 那么第二個問題就要涉及DHCP了。我們再來了解下這個應(yīng)用層服務(wù)?;A(chǔ)知識可以先百度。 DHCP是一個基于廣播的協(xié)議,它的操作可以歸結(jié)為四個階段,這些階段是IP租用請求、IP租用提供、IP租用選擇、IP租用確認。 從這4個名詞中我們就知道DHCP的基本工作原理了,首先lan廣播找到DCHP服務(wù)器,那么lan廣播的這一段就是DHCP客戶端。接著可能有很多DHCP服務(wù)器返回了OFFER報文進行IP地址預(yù)分配,然后DHCP客戶端選擇(一般是第一個收到的offer)進行確認REQUEST,DHCP服務(wù)器收到確認后,帶著預(yù)先準備好的ip發(fā)送ACK報文,完成整個過程。那么這里的服務(wù)器就是我們的網(wǎng)關(guān)咯,也就是CPU,它是裝過dhcp服務(wù)的openwrt系統(tǒng),但是openwrt系統(tǒng)的dhcp和linux不一樣,完了再慢慢研究吧。不過我想原理是差不多的。 |
|