標籤:style blog http color 使用 資料 ar 2014
前一陣子做路由器的連網,由於利用了Openwrt作業系統,做起來雖然方便,但是很多原理細節都被忽略了。所以這裡再來老生常談一下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 標題中:(粗體內容表示受 NAT 影響的項目):
• 目標 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不一樣,完了再慢慢研究吧。不過我想原理是差不多的。