摘要:跟隨報文,從windows主機經過路由器到linux主機上溜達一下吧。
本文分享自華為雲社區《報文在不同設備的奇妙之旅》,原文作者:鼓瑟吹笙。
簡介
在上圖中,HostA的報文轉發到HostB上,需要報文,從本地網關出發,經過路由器RouterA,到達Host B。
Host A:Windows主機;
Router A:路由器;
Host B:Linux主機;
讓我們從Host A的路由表出發,看一下網絡不同位置的路由表。在看路由表之前,先了解一下路由的概念,路由是數據通信網絡中最基本的要素。路由信息就是指導報文發送的路徑信息,路由的過程就是報文中繼轉發的過程。
路由器/主機通過路由表選擇路由,每個路由器/主機中都至少保存着一張路由表。
在主機的路由表中保存着了IP配置的路由和接口生成的直連路由
在路由器的路由表中保存了各種路由協議發現的路由,根據來源不同,路由表中的路由通常可分為以下三類:
- 鏈路層協議發現的路由(也稱為接口路由或直連路由)。
- 由網絡管理員手工配置的靜態路由。
- 動態路由協議發現的路由。
Host A上的路由
配置:主機上必須配置本機的IPV4地址,子網掩碼和默認網關;
網關又稱網間連接器、協議轉換器。網關在網絡層以上實現網絡互連,在通俗易懂一點,網關是轉發路由的一個設置,如果路由的下一跳是網關,說明路由的下一跳是一個路由器,而不是一個主機;
查看Windows在路由表:
第一條路由,由配置的默認網關自動生成的一條路由,掩碼為0.0.0.0,下一跳為默認網關;
網關路由是下一跳為網關的路由,首先明確,網關路由不是一種路由協議,路由協議是路由器之間維護路由表的規則,用於發現路由,生成路由表,並指導報文轉發。
掩碼為0.0.0.0的路由統稱為默認路由, 要了解默認路由,首先要知道路由轉發最長匹配原則,路由查找按位匹配,從前到后,中途出現不匹配的則代表失敗,在所有失敗前,相同位數最多的路由表項就是下一跳。簡單說就是匹配到掩碼最長的路由上為轉發路由。層層在IP樹枝往上查找,最終都會找到0.0.0.0,也就是默認路由。更通俗易懂,就是讓那些無法找到非0地址的路由,最終有個轉發的地方
了解了上面的概念,可以知道,第一條路由為默認網關路由,功能就是從本機出發的報文,如果目的地址不是本機,直接從默認網關轉發出去;
報文的目的地址為10.1.1.1,不是本機IP地址,默認被從網關扔了出去;
Router A上的路由
路由器上有兩個表,一個是位於控制面的路由表,以一個是位於轉發面的轉發表,為了方便了解轉發,我們專門看一下華為路由器的轉發表;
在轉發表中,可以出接口GE1/1/1的配置為
interface GE1/1/1
ip address 10.1.1.10 255.255.255.0
10.1.1.0/24為網段路由,目的地址為IP地址和掩碼相與的結果,下一跳為接口配置的IP地址(無任何轉發意義,僅有顯示意義)。用來將目的地址為同網段的報文從指定接口轉發出去。
10.1.1.10/32為主機路由,目的地址為接口IP地址,所有的主機路由掩碼都是32位,下一跳為環回口地址127.0.0.1,標識本機有1.1.1.1這個地址,對於目的地址為1.1.1.1的IP報文,是需要送到本機處理的,總結一句話,主機路由用來接收發送給本台設備的報文。
10.1.1.255/32為子網廣播路由, 算法為IP地址與取反后的掩碼地址進行異或,IP協議規定網段廣播地址所有的本網段的三層接口都需要接收該地址的報文,實際應用中幾乎沒有任何場景使用到網段廣播特性。
RouterA收到報文后,根據最長匹配原則,查找轉發表,發現10.1.1.0的網段路由,把報文從GE1/1/1轉發出去;
Host B上的路由
Host B是Linux操作系統,它和Windows主機有很多相似的地方
1、網關路由:Linux操作系統需要配置
Linux上的接口配置
在ETH0上,配置的IP地址為10.172.153.72,掩碼長度為24
查看路由表
發現了一個現象:路由表中沒有接口路由生成的主機路由。
這是Linux系統和路由,Windows不同的地方。如果是本機IP地址,直接命中,不需要查路由表。
再說一個有趣的現象,在Linux表中,網關是0.0.0.0的路由,說明報文需要在主機內部查找,在轉發時,會拿着目的地址去查找ARP表單,如果找不到對應的MAC地址,報文丟棄。