一口Linux 發表於 2021-01-02 10:14:00
0. 粉絲提問
粉絲提問:「我們的電腦是如何獲得路由器自動分配的ip地址,並實現上網的?」
粉絲提問,一口君必須滿足!好在一口君對網絡協議還是比較熟悉的,畢竟當年也有幾篇專利,做過的網絡協議模塊一大堆。
【本文默認大家了解了IP位址,及其分類】
粉絲提問一、家庭網
這個問題說難不難,但是要想解釋清楚,我們還是需要一些基礎知識。
1. 家庭網絡簡介
如上圖是一口君家庭網絡組網環境。
要連接公網,必須通過Modem撥號才能上網,撥號通過pppoe協議撥號wlan路由器的wan口連結ADSL 貓,會動態獲取一個公網IP位址100.87.59.254,在廣域網內,任何一個主機,均可以訪問到該ip地址臺式機、手機、ipad、筆記本等終端可以通過有線或者無線的方式通過共享無線路由器的wan口訪問公網終端通過路由器的dhcp協議自動獲取的地址是區域網地址,pc獲得地址是192.168.0.104,網段是192.168.0.0/24,但是我們無法使用該地址直接訪問公網區域網內終端通過共享WAN地址上網,所有走wlan路由器的數據包都要通過NAT協議進行源、目的IP,源、目的埠號的轉換區域網內終端之間通信運行的是乙太網協議,網卡通過mac地址過濾數據幀要獲取區域網內其他網口的mac地址需要通過arp協議公網內路由器之間數據傳輸一般是ppp協議
WAN口地址:「100.87.59.254」
2. 本地IP位址
一口君的pc是通過無線連接的無線路由器。PC網絡信息如下:
ipconfig /all
本機無線網卡信息:
ip地址:「192.168.0.104」mac地址:「44-33-4C-FF-5A-22」子網掩碼:「255.255.255.0」默認網關:「192.168.0.1」DHCP伺服器:「192.168.0.1」
後面幾章我們普及下一些網絡的基礎知識。
二、router路由器
路由器(Router)是網際網路的主要結點設備。路由器通過路由決定數據的轉發。
轉發策略稱為路由選擇(routing),這也是路由器名稱的由來(router,轉發者)。
作為不同網絡之間互相連接的樞紐,路由器系統構成了基於TCP/IP 的國際網際網路Internet 的主體脈絡,也可以說,路由器構成了Internet的骨架。
第一章圖中的無線路由器就是我們最常用的路由器。
通常有一個wan口,4個物理連接網口。既可以通過網線連接,也可以通過無線連接,通常帶寬100M到450M。
此外還有隻有在一些大型的機房中才能看到的大型路由器。這些路由器性能強悍,帶寬可高達T一級。
路由器
以下是1個企業級網絡的組網拓撲圖,我們通常用圖中的圖標表示路由器:
企業級網絡拓撲結構
路由器的一些使用規則:
路由器工作在IP(網絡)層;路由器用來連接不同的網絡;路由器的每一個接口都必須是不同網段的;路由器之間互聯是接口直接連接,一般用ppp協議通信;處於不同網絡中的2個設備要想互相通信,必須通過路由器;一個成熟穩定的網絡,路由器必須知道每一個網絡設備到達另外一個網絡的通路,否則會直接丟棄,路由器通過路由表來維護這些通路;路由器只解析到數據包的IP層(傳輸層和應用層不會查看)
三、路由表
剛才我們說了,公網裡,數據包要想到達目的地,必須通過設備路由器,那麼路由器是如何知道把數據包送到目的地的呢?
就要通過路由表。
1. 「ip頭」
公網中的數據包都是ip數據包,ip數據包頭中有個非常重要的協議欄位:「目的地址」。
一口君隨機抓取了一個本機網絡通信的ip數據包:
如上圖所示,源ip地址是:192.168.0.104目的ip地址是:140.246.147.33
很顯然,源地址是一個c類地址,就是本機地址,也是一個私網地址,目的地址是一個公網地址。
路由器之所以能轉發數據包就是靠路由表和ip數據包的目的ip地址+源ip地址。
2. 路由表
以下是windows下的路由表
route print
windows路由表
路由表中包含了若干個路由條目。
「PC路由條目:」
名稱說明網絡目標表示要到達某個網段的網絡,可以查詢該條路由條目網絡掩碼點分十進位法,配合網絡目標,可得出最終的目標網絡號網關數據包要發送給哪個網口所在的路由器接口表示數據包要從哪個本地的接口發送出去躍點數數據包在網絡中最多能經過多少個路由器,放置數據包在網絡中無限轉發
永久路由:
網絡地址網絡掩碼網關地址躍點數0.0.0.00.0.0.0192.168.0.1默認
該條路由其實是一條默認路由,表示如果查找不到路由條目,就將數據包發送給192.168.0.1這個ip地址所在的路由器。
3. 公網中路由器非常的多,路由器是如何知道到達所有的網絡的通路的呢?
通常藉助ospf、rip等協議可以動態學會到達各個網絡的協議。
廣域網中的設備路由協議更加複雜,往往需要專業的網絡工程師搭建網絡。
此塊內容不再
四、DHCP+wlan
家用路由器也是路由器一種,只是他只能連接兩個網絡,一個是區域網,一個是與運營商連接的那個網絡。
無線路由器上設置撥號帳號以及設置無線ssid、密碼在此不討論。
1. PPPOE撥號
家用路由器上網通常是通過PPPoE撥號上網,帳號密碼由運營商提供。
撥號成功後會獲得一個公網IP。
如果擁有一個固定的公網IP,那麼此處也可以設置固定ip。
「一口君當年第一份工作是在ZTE,參與開發的第一個項目就是在路由器中實現PPPoE client模塊,一把辛酸淚啊。」
2. DHCP
DHCP(動態主機配置協議)是一個區域網的網絡協議。指的是由伺服器控制一段IP位址範圍,客戶機登錄伺服器時就可以自動獲得伺服器分配的IP位址和子網掩碼。
如上,地址池地址是192.168.0.100~192.168.0.199;這就是為什麼我們的終端連接家用路由器之後,獲得地址「192.168.0.104」。
分配動態ip地址的時候,同時也會分配DNS伺服器地址和網關地址。這也就是為什麼,我們並沒有設置任何路由條目,但是我們能上網的原因。
以下是連接到無線路由器的客戶端的MAC地址和IP位址信息:
3. 區域網
乙太網是一種區域網,但是因為現在大部分的區域網均為乙太網,因此一般提及區域網都會默認為乙太網。
乙太網是一種總線型區域網,它並不是一種具體網絡,而是一種技術規範,由施樂公司創建,並由施樂、Intel和Dec公司聯合開發的區域網規範。
上述家用的無線網絡,大多數是無線區域網,是基於IEEE802.11標準,在這個標準下的無線區域網大多使用的是2.4GHz 或5GHz的射頻。
「工作原理:」
採用載波監聽多點接入/碰撞檢測(CSMA/CD)機制。
乙太網中結點都可以收到在網絡中傳送的所有信息。因此,乙太網是一種廣播網絡。
「實例:」
總線上的每一個工作的計算機都能檢測到 B 發送的數據信號。由於只有計算機 D 的地址與數據幀首部寫入的地址一致,因此只有 D 才接收這個數據幀。其他所有的計算機(A, C 和 E)都檢測到不是發送給它們的數據幀,因此就丟棄這個數據幀而不能夠收下來。這樣就在具有廣播特性的總線上實現了一對一的通信。
4. Mac地址
在乙太網中,硬體地址又稱為物理地址,或 MAC 地址,6個字節,共48 位。
IEEE 的註冊管理機構 RA 負責向廠家分配地址欄位的前三個字節(即高位 24 位)。
適配器從網絡上每收到一個 MAC 幀就首先用硬體檢查 MAC 幀中的 MAC 地址.
如果是發往本站的幀則收下,然後再進行其他的處理,否則就將此幀丟棄,不再進行其他的處理。
5. ARP
假如我們要訪問區域網中的另外一個pc上的進程,假設我們只知道對方的IP位址,那麼如何才能知道對方的mac地址呢?
可以通過ARP協議。
ARP(地址解析)協議是一種解析協議,本來主機是完全不知道這個IP對應的是哪個主機的哪個接口,當主機要發送一個IP包的時候,會首先查一下自己的ARP高速緩存(就是一個IP-MAC地址對應表緩存),如果查詢的IP-MAC值不存在,那麼主機就向網絡發送一個ARP協議廣播包。
這個廣播包裡面就有待查詢的IP位址,而直接收到這份廣播的包的所有主機都會查詢自己的IP位址,如果收到廣播包的某一個主機發現自己符合條件,那麼就準備好一個包含自己的MAC地址的ARP包傳送給發送ARP廣播的主機。
而廣播主機拿到ARP包後會更新自己的ARP緩存(就是存放IP-MAC對應表的地方)。發送廣播的主機就會用新的ARP緩存數據準備好數據鏈路層的的數據包發送工作。
windows 的arp表查詢:
arp -a
如上圖所示,是PC緩存的arp表。其中192.168.0.1 80-8f-1d-c7-a6-07就是無線路由器的LAN口ip地址、MAC地址。
5. NAT
最後一個知識點是,區域網內的終端是如何共用一個wan口來上網的?
主要通過NAT(Network Address Translation,網絡地址轉換)協議來實現的。
NAT是1994年提出的。當在專用網內部的一些主機本來已經分配到了本地IP位址(即僅在本專用網內使用的專用地址),但現在又想和網際網路上的主機通信(並不需要加密)時,可使用NAT方法。
這種方法需要在專用網連接到網際網路的路由器上安裝NAT軟體。裝有NAT軟體的路由器叫做NAT路由器,它至少有一個有效的外部全球IP位址。這樣,所有使用本地地址的主機在和外界通信時,都要在NAT路由器上將其本地地址轉換成全球IP位址,才能和網際網路連接。
另外,這種通過使用少量的公有IP 地址代表較多的私有IP 地址的方式,將有助於減緩可用的IP位址空間的枯竭。在RFC 2663中有對NAT的說明。
「舉例:」
經過NAT轉換的數據包IP位址替換見下圖:
NAT
如上圖所示:
從區域網內部發往路由器的數據包,源ip:192.168.0.104,經過路由器之後源ip替換為WAN口地址:100.87.59.254從伺服器返回的數據包目的ip地址:100.87.59.254,經過路由器之後又被替換成了192.168.0.104,這樣數據包就可以發送到區域網內部的某個終端了五、 總結
綜上,我們可知,粉絲的問題答案:
路由器的IP位址分wan口和lan口,wan口地址是PPPoE撥號時運營商的其他設備分配的用於公網尋址,lan口地址在路由器中設置, 用於和區域網內終端通信終端連接無線路由器時,路由器通過dhcp協議給終端分配了動態ip地址,通過DHCP的地址池可以設置分配的ip地址的範圍分配ip地址的時候,同時終端會將無線路由器的lan口地址設置為自己的默認網關,所以pc訪問外網,所有的數據包都會發送給網關,就是無線路由器當用戶要訪問外網的時候,需要知道網關的mac地址,如果arp緩存中沒有對應的的arp條目,那麼就通過arp協議找到lan口的mac地址,因為網關地址已分配區域網內終端通過共享WAN地址上網,所有走wlan路由器的數據包都要通過NAT協議進行源、目的IP,源、目的埠號的轉換
責任編輯:PSY
打開APP閱讀更多精彩內容聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴