计算机网络-学习路由器
記錄一下學習筆記,這篇大多參考《網絡是怎么連接的》,感興趣的同學建議直接讀這本書,我這里做一些自己的筆記
- 路由器是什么
- 路由器的工作原理
- 路由器是如何連上互聯網的
- 路由器和交換機的區別
路由器是什么
路由器是連接兩個或多個網絡的硬件設備,在網絡間起網關的作用。簡單來說,路由器就是用來連接兩個或多個不同的局域網的。即一個局域網里面的網絡請求要訪問外面,就需要路由器作為網關,通過路由器訪問出去。
路由器就是用來連接兩個或多個不同的局域網的
路由器的每個端口都相當一個網卡,都有IP地址,每個端口都可以連接一個局域網,而且每個端口的IP和連接的局域網是同一個網段
路由器也是特殊的計算機,可以理解為精簡的計算機,專門用來處理網絡層,作為網關使用,所以我們的計算機也可以作為路由器,但是我們的計算機包含的功能更多,即計算機包含路由器。
? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ?? ? ? ? ? ?
路由器是如何工作的
路由器的基本原理
路由器的工作位于TCP/IP協議的第三層網絡層,前一篇博客講的交換機位于底層數據鏈路層。路由器在網絡層把數據鏈路層的數據包接收進來,然后IP是否是給自己的,是的話就接收,不是則丟棄。
路由器的各個端口都具有 MAC 地址和 IP 地址
路由器轉發包和上一篇的交換機轉發包類似,路由器在轉發包時,首先會通過端口將發過來的包接收進來,這一步的工作過程取決于端口對應的通信技術。對于以太網端口來說,就是按照以太網規范進行工作,而無線局域網端口則按照無線局域網的規范工作,總之就是委托端口的硬件將包接收進來。接下來,轉發模塊會根據接收到的包的 IP 頭部中記錄的接收方 IP 地址,在路由表中進行查詢,以此判斷轉發目標。然后,轉發模塊將包轉移到轉發目標對應的端口,端口再按照硬件的規則將包發送出去,也就是轉發模塊委托端口模塊將包發送出去的意思。這就是路由器的基本原理
再做一些補充。剛才我們講到端口模塊會根據相應通信技術的規范來執行包收發的操作,這意味著端口模塊是以實際的發送方或者接收方的身份來收發網絡包的。以以太網端口為例,路由器的端口具有 MAC 地址 ,因此它就能夠成為以太網的發送方和接收方 。端口還具有 IP 地址,從這個意義上來說,它和計算機的網卡是一樣的。當轉發包時,首先路由器端口會接收發給自己的以太網包 ,然后查詢轉發目標,再由相應的端口作為發送方將以太網包發送出去。這一點和交換機是不同的,交換機只是將進來的包轉發出去而已,它自己并不會成為發送方或者接收方
路由表是怎么樣的?
路由器是基于IP設計的,故路由器是根據IP來轉發數據包的,,但是交換機是根據MAC地址轉發的,里面有一張MAC地址表,所以路由器內部也有一張路由表,根據路由表里面的IP來轉發相應的端口。
其實我們本地的計算機也有路由表,我們可以看看在windows按win+R輸入cmd,打開命令函,輸入route print可以看到本機的路由表
| 目標地址 | 網段,實際上這里的 IP 地址只包含表示子網的網絡號部分的比特值,而表示主機號部分的比特值全部為 0,路由器會將接收到的網絡包的接收方 IP地址與路由表中的目標地址進行比較,并找到相應的記錄。交換機在地址表中只匹配完全一致的記錄,而路由器則會忽略主機號部分,只匹配網絡號部分 |
| 子網掩碼 | 此列顯示目標地址的子網掩碼,真正的網絡號是通過IP地址和子網掩碼與運算得出,目標地址和子網掩碼是用來計算目標網絡號的 |
| 網關 | 根據目標地址和子網掩碼匹配到某條記錄后,路由器就會將網絡包交給接口列中指定的網絡接口(即端口),并轉發到網關列中指定的 IP 地址,如果網關IP為空,則目標地址就是實際的轉發IP地址 |
| 接口 | 本路由器的出口ip |
| 躍點數 | 躍點計數,它表示距離目標 IP 地址的距離是遠還是近。這個數字越小,表示距離目的地越近;數字越大,表示距離目的地越遠 。一般情況下,如果有多條到達相同目的地的路由記錄,路由器會采用metric值小的那條路由 |
注:
在鏈路上,表示數據傳輸不經過其他網絡和路由器,即目標地址和當前路由是在同一局域網里面,不需要再經過下一跳的路由器
描述目標地址是怎么匹配目的IP地址
這里得先簡單復習一下子網掩碼,子網是用來區分我們的IP地址的網絡號和主機號的
例如我們查看IP地址,我們的IP地址是192.168.1.20,子網掩碼:255.255.255.0,即192.168.1.20/24,那么就表示192.168.1是IP段的網絡號,后面的20是這個IP段的主機號。
在匹配地址的過程中,路由器需要知道網絡號的比特數,因此路由表中還有一列子網掩碼,通過這個值就可以判斷出網絡號的比特數。匹配數據包和路由器的目標地址對上的網絡號的記錄即可。
為什么需要子網掩碼區分網絡號和主機號
就好比寄快遞一樣,得寫明哪個小區哪個房間號,小區就像網絡號,房間號就像主機號。寫明了快遞員就可以把東西寄到相應的小區,再由小區轉發到房間號,這樣分類效率大幅提高。所以我們在路由器也是這樣,找到對應網絡號的就轉出去就可以了,如果沒有網絡號,路由器就要保存大量主機號的IP,數據量多時每次查詢效率就會很低,如果有網絡號路由器保存的記錄就會減少很多。
路由聚合
有一些例外,有時地址本身的子網掩碼和路由表中的子網掩碼是不一致的,這是路由聚合的結果。路由聚合會將幾個子網合并成一個子網,并在路由表中只產生一條記錄。要搞清楚這個問題,我們還是看一個例子。如圖 3.14 所示,我們現在有 3 個子網,分別為路由器會忽略主機號,只匹配網絡號。10.10.1.0/24、10.10.2.0/24、10.10.3.0/24,路由器 B 需要將包發往這 3 個子網。在這種情況下,路由器 B 的路由表中原本應該有對應這 3 個子網的 3條記錄,但在這個例子中,無論發往任何一個子網,都是通過路由器 A 來進行轉發,因此我們可以在路由表中將這 3 個子網合并成 10.10.0.0/16,這樣也可以正確地進行轉發,但我們減少了路由表中的記錄數量,這就是路由聚合。經過路由聚合,多個子網會被合并成一個子網,子網掩碼會發生變化,同時,目標地址列也會改成聚合后的地址。
還有一種情況,如果子網掩碼為 255.255.255.255,也就是說地址中的全部 32 個比特都為 1。這樣一來,主機號部分比特全部為 0 可以表示一個子網,主機號部分比特不全部為 0 可以表示某一臺計算機,這種情況表示目標地址就是實際的主機號,和路由器在同一局域網上。
路由表匹配到多條記錄如何處理
如果匹配符合的記錄有多個,例如192.168.1.10匹配到路由表的目標地址的兩行記錄:192.168.1.0/24,192.168.1.10/32,這種情況,路由器首先尋找網絡號比特數最長的一條記錄 。網絡號比特數越長,說明主機號比特數越短,也就意味著該子網內可分配的主機數量越少,即子網中可能存在的主機數量越少,這一規則的目的是盡量縮小范圍,所以根據這條記錄判斷的轉發目標就會更加準確。
然而,有時候路由表中會存在網絡號長度相同的多條記錄,例如考慮到路由器或網線的故障而設置的備用路由就屬于這種情況。這時,需要根據躍點計數的值來進行判斷。躍點計數越小說明該路由越近,因此應選擇躍點計數較小的記錄。
找不到匹配路由時選擇默認路由
路由器的IP如果匹配不到,就會直接丟失,不會像交換機一樣廣播。但是實際我們路由表還有一行默認路由(發往更高層級的路由),目標地址為0.0.0.0,子網掩碼為 0.0.0.0的記錄,即匹配所有IP,如果找不到其他網絡號更長的記錄,就會把數據包轉發到默認的路由記錄上去。
路由表中子網掩碼為 0.0.0.0 的記錄表示“默認路由”。
如果在路由表中無法找到匹配的記錄,路由器會丟棄這個包,并通過ICMPA 消息告知發送方 。這里的處理方式和交換機不同,原因在于網絡規模的大小。交換機連接的網絡最多也就是幾千臺設備的規模,這個規模并不大 。如果只有幾千臺設備,遇到不知道應該轉發到哪里的包,交換機可以將包發送到所有的端口上,雖然這個方法很簡單粗暴,但不會引發什么問題。然而,路由器工作的網絡環境就是互聯網,它的規模是遠遠大于以太網的,全世界所有的設備都連接在互聯網上,而且規模還在持續擴大,未來的互聯網里到底會有多少設備,我們誰都說不準。在如此龐大的網絡中,如果將不知道應該轉發到哪里的包發送到整個網絡上,那就會產生大量的網絡包,造成網絡擁塞。因此,由器遇到不知道該轉發到哪里的包,就會直接丟棄。
為什么路由器不能找不到對應IP,不能像交換機一樣廣播?因為路由器連接了多個局域網,可能還連接了互聯網,連接的設備數量非常大,廣播會形成網絡擁塞,而交換機只連接了一個局域網,里面的設備有限,所以路由器遇到找不到的IP匹配的記錄,就會丟掉。
路由表的記錄是如何維護的
但是默認路由是怎么配置上去的?正常是通過路由協議自動發現路由器之間的其他路由器后自動配置的。
路由表記錄維護的方式和交換機也有所不同。交換機中對 MAC 地址表的維護是包轉發操作中的記錄MAC地址,而路由器中對路由表的維護是與包轉發操作相互獨立的,也就是說,在轉發包的過程中不需要對路由表的內容進行維護。對路由表進行維護的方法有幾種,大體上可分為以下兩類。
- (a)由人手動維護路由記錄
- (b) 根據路由協議機制,通過路由器之間的信息交換由路由器自行維護路由表的記錄其中(b)中提到的路由協議有很多種,例如 RIP、OSPC、BGP 等都屬于路由協議。
路由器具體的工作流程
來看一看路由器的整個工作過程。
首先,路由器是工作在網絡層的,路由器會接收網絡包。路由器的端口有各種不同的類型,這里我們只介紹以太網端口是如何接收包的。以太網端口的結構和計算機的網卡基本相同,接收包并存放到緩沖區中的過程也和網卡幾乎沒有區別。首先,信號到達網線接口部分,將信號轉換為數字信息,然后通過包末尾的 FCS 進行錯誤校驗,如果沒問題則檢查 MAC 頭部中的接收方 MAC 地址,看看是不是發給自己的包,如果是就放到接收緩沖區中,否則就丟棄這個包。如果包的接收方 MAC地址不是自己,說明這個包是發給其他設備的,如果接收這個包就違反了以太網的規則。
路由器的端口都具有 MAC 地址,只接收與自身地址匹配的包, 遇到不匹配的包則直接丟棄。
完成包接收操作之后,路由器就會丟棄包開頭的 MAC 頭部。MAC 頭部的作用就是將包送達路由器,其中的接收方 MAC 地址就是路由器端口的 MAC 地址。因此,當包到達路由器之后,MAC 頭部的任務就完成了,于是 MAC 頭部就會被丟棄。
通過路由器轉發的網絡包,其接收方 MAC 地址為路由器端口的MAC 地址。
然后根據包里面發送的目的地IP地址,在路由表中進行匹配,匹配到的記錄,如果網關IP不為空,則網關IP是發往下一個的地址,如果網關為空,則目標地址的IP是發往下一個的地址。這里我們有了發往下一個地址的IP,但是在重新封裝包的時候需要寫入的下一個地址的MAC地址,這個時候我們還不知道下一個地址的MAC地址,知道對方的 IP 地址之后,接下來需要通過 ARP 根據 IP 地址查詢 MAC 地址,并將查詢的結果作為接收方MAC 地址。路由器也有 ARP 緩存,因此首先會在 ARP 緩存中查詢,如果找不到則發送 ARP 查詢請求。
路由器也會使用 ARP 來查詢下一個轉發目標的 MAC 地址。
把查詢到的MAC頭部加入數據包(上一個MAC地址包被丟掉),最后網絡包封裝完成后,接下來會將其轉換成電信號并通過端口發送出去。這一步的工作過程和計算機也是相同的。如果輸出端口為以太網,則發送出去的網絡包會通過交換機到達下一個路由器。由于接收方 MAC 地址就是下一個路由器的地址,所以交換機會根據這一地址將包傳輸到下一個路由器。
接下來,下一個路由器會將包轉發給再下一個路由器,經過層層轉發之后,網絡包就到達了最終的目的地。
路由器是如何連上互聯網的
你的電腦先在應用層打包一個 HTTP報文,然后在傳輸層在打包成 TCP報文,然后再根據 DNS 查到的 IP 在網絡層打包成 IP數據報,然后在通過鏈路層打包成以太網數據幀,發送給你的交換機。交換機收到后,重新包裝數據幀,再發送給路由器,路由器根據路由表查詢轉發的下一個路由IP,然后根據ARP協議獲取下一個轉發的IP的MAC地址,路由器重新封裝包發給下一個路由,經過互聯網的多個路由接力,隨著這一過程反復執行,包就會最終到達 IP 的目的地,被服務器接收到,服務器程序處理完后返回這一網頁的HTTP報文,再傳輸回給用戶,這樣用戶的電腦就能看到服務器返回的網頁了。
路由器和交換機的區別
要理解兩者之間的關系,關鍵點在于計算機在發送網絡包時,或者是路由器在轉發網絡包時,都需要在前面加上 MAC 頭部。之前的講解都是說在開頭加上 MAC 頭部,如果看圖 3.16 大家可以發現,準確的說法應該是將 IP 包裝進以太網包的數據部分中。也就是說,給包加上 MAC 頭部并發送,從本質上說是將 IP 包裝進以太網包的數據部分中,委托以太網去傳輸這些數據。IP 協議本身沒有傳輸包的功能,因此包的實際傳輸要委托以太網來進行。路由器是基于 IP 設計的,而交換機是基于以太網設計的,因 此 IP 與以太網的關系也就是路由器與交換機的關系。詳細的后面再總結一篇《計算機網絡-路由器和交換機的區別》
參考:
戶根勤《網絡是怎樣連接的》
總結
以上是生活随笔為你收集整理的计算机网络-学习路由器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多轴控制玻璃行业程序 相机 ST LAD
- 下一篇: 北大青鸟的班主任好当吗_【北大青鸟班主任