網絡包經過集線器和交換機之后,現在到達了路由器,并在此被轉發到 下一個路由器。這一步轉發的工作原理和交換機類似,也是通過查表判斷包 轉發的目標。
不過在具體的操作過程上,路由器和交換機是有區別的。
因為路由器是基于IP設計的,而交換機是基于以太網設計的 。
什么是路由器呢?為什么手機連接路由器wifi后可以上網呢?
我們都用過路由器,比如手機連接WIFI的時候,就是使用了無線路由器的信號連接的。
路由器和交換機雖然外觀類似,但內部卻不同,路由器的內部結構如下圖所示:
我們都知道計算機通過更換無線網卡可以支持無線局域網,同樣路由器也一樣,如果路由器的端口模塊安裝了支持無線局域網的硬件(就是那幾根天線),就可以支持無線局域網了,就是說可以發射WIFI信號了。
此外,路由器不僅支持無線通信模塊,還支持ADSL、FTTH等寬帶專線,只要端口模塊安裝了支持這些技術的硬件即可。
路由器在網絡中和交換機類似充當一個快遞員的角色,但是路由器比交換機高級,可以認為它是一個高級快遞員,為什么?
因為交換機是基于mac地址查找目的地的,而路由器是基于IP地址的。簡單來說就是,交換機比較底層,查找目的主機的方式比較少,比較簡單,而路由器是高層的設備,查找目的主機的方式比較多也比較高級。
路由器在收到數據包后會根據收到包的IP頭部中記錄的IP地址,在路由表中進行查詢,以此判斷轉發目標。
然后,轉發模塊將包轉移到轉發目標對應的端口,端口再按照硬件的規則將包發送出去,也就是轉發模塊委托端口模塊將包發送出去的意思。
這就是路由器的基本原理,下面再做一些補充。剛才我們講到端口模塊會根據相應通信技術的規范來執行包收發的操作,這意味著端口模塊是以實際的發送方或者接收方的身份來收發網絡包的。
以以太網端口為例,路由器的端口和交換機不同,它是具有MAC 地址的,因此它就能夠成為以太網的發送方和接收方。
端口還具有 IP 地址,從這個意義上來說,它和計算機的網卡是一樣的。當轉發包時,首先路由器端口會接收發給自己的以太網包,然后查詢轉發目標,再由相應的端口作為發送方將以太網包發送出去。
這一點和交換機是不同的,交換機只是將進來的包轉發出去而已,它自己并不會成為發送方或者接收方。
路由器的各個端口都具有 MAC 地址和 IP 地址,可以作為一臺普通的計算機收發數據包。
在“查表判斷轉發目標”這一點上,路由器和交換機的大體思路是類似的,不過具體的工作過程有所不同。
交換機是通過 MAC 頭部中的接收方 MAC 地址來判斷轉發目標的,而路由器則是根據 IP 頭部中的 IP 地址來判斷的。
由于使用的地址不同,記錄轉發目標的表的內容也會不同,交換機根據MAC地址表轉發數據,而路由器根據路由表轉發數據。
如下圖是一個路由器的路由表,路由器就是根據類似下圖中的表來判斷,收到的數據包應該發往哪個端口的。
從上圖可以看出,路由表的記錄還有一個叫子網掩碼的東西,這個只是用來在匹配目標地址時告訴路由器應該匹配多少個比特。
此外,通過上述方法,我們也可以將某臺具體計算機的地址寫入路由表中,這時的子網掩碼為 255.255.255.255,也就是說地址中的全部 32 個比 特都為 1。
這樣一來,主機號部分比特全部為 0 可以表示一個子網,主機號部分比特不全部為 0 可以表示某一臺計算機,兩種情況可以用相同的規則來處理。
最后一列是躍點計數(也叫做跳數),它表示距離目標 IP 地址還有多少個路由器。這個數字越小,表示距離目的地越近;數字越大,表示距離目的地越遠。
對于路由表的維護,有2種方法:
一是,手工維護,一般企業級路由器都是可以人工添加、刪除、修改記錄的。
二是,自動維護,根據路由器的協議,通過路由器之間的信息交換,路由器可以自行維護路由表的記錄。
我們最后再來總結一下,路由器的工作步驟,首先路由器收到數據包后,查詢路由表確定輸出端口,然后再根據路由表的情況更新路由表,如果找不到匹配的路由時就會選擇一條默認的路由,最后根據匹配的路由表記錄轉發數據到下一個設備。
默認路由一般是路由表的最后一行,這一行的子網掩碼為 0.0.0.0,意思是網絡包接收方 IP 地址和路由表目標地址的匹配中需要匹配的比特數為 0,換句話說,就是根本不需要匹配。
只要將子網掩碼設置為 0.0.0.0,那么無論任何地址都能匹配到這一條記錄,這就是默認路由了。