天天看點

IP路由表的标志前言檢視IP路由表路由表搜尋步驟IP路由表包含的标志

前言

本文主要整理了下IP路由表的幾個标志的意思,至于IP選路機制及詳細過程,如有需要建議查閱相關資料。

檢視IP路由表

  • windows系統

        netstat -r或者route PRINT,route PRINT指令後也可指定比對資訊,具體可看幫助資訊(route --help)

  • linux系統

        netstat -r或者route.

    其實兩個系統的指令都差不多。本文以ubuntu示例說明。

路由表搜尋步驟

        發送本機資料報(或者轉發分組),需要搜尋路由表确定從哪個網絡接口發送到下一跳路由或目的地。下面是搜尋步驟,按序(參考自《TCP/IP詳解 卷一》:

1. 搜尋比對的主機位址;

2. 搜尋比對的網絡位址;

3. 搜尋預設表項(預設表項一般在路由表中被指定為一個網絡表項,其網絡号為0)

       下面提供個示例說明:

       我自己的筆記本上,裝了個虛拟機Ubuntu系統,路由表如下(使用了-n參數,不看網絡名):

IP路由表的标志前言檢視IP路由表路由表搜尋步驟IP路由表包含的标志
  1. 0.0.0.0是預設路由項,如果不加-n參數,就是default
  2. 39.156.66.18(百度的IP)是主機路由表項,打開百度,從路由先搜尋到這個比對的主機位址,就從接口eth0發送了;
  3. 如果目的IP是192.56.76.8,主機路由表項沒有比對的,就會搜尋網絡路由表項,比對到192.56.76.0,從接口eth0發送出去(就這一個網卡,湊合了解吧,反正隻能從這個網卡走)
  4. 如果目的IP是172.88.88.88,主機路由表項不比對,網絡路由表項不比對,就走預設路由了(0.0.0.0),好吧還是從接口eth0出去了。

IP路由表包含的标志

        上面截圖Flags那一列的标志字段。

        p.s. 下面的标志,隻是其中的大部分,還有個别及不确定的未包含。

  • U:路由可用。看上面的示例截圖,除了感歎号那個,其它是都有這個标志。
  • H:目标是一個主機。主機路由:該路由是到一個主機,目的位址是一個完整的主機位址。如果主機比對,直接走這個路由。反之,如果不存在這個标志,如截圖中的網絡路由,說明目的位址是一個網絡号或者網絡号與子網号的組合。
  • G:該路由是路由到一個網關(如路由器)。該項存在,說明是間接路由,下一跳到一個網關,多次路由後可能到達目标主機,與之相反的是直接路由(不存在G标志)。直接路由與間接路由的差別是:直接路由的目的IP位址和目的mac位址都指向最終目的地,而間接路由的話,目的IP位址指向最終目的地的IP,但是目的mac位址是網關的位址。個人認為其實還是因為鍊路層資料幀傳輸不關心IP 。
  • R:恢複動态路由的路由
  • D:由選路守護程序或重定向封包建立的路由,比如重定向封包是不允許主機發送(隻能是路由器),在同一區域網路下,主機A發送一個封包到了路由器A,路由查找路由後發給了路由器B,這個封包主機是可以直接發送給路由器B的,路由器A就是發送一個重定向的ICMP封包給主機,主機在路由表中新增一條到路由器B的路由項
  • M:被重定向封包或選路守護程序修改的路由項
  • !:這個上面截圖有,強制路由失敗的,打個比方,有個主機(或網絡)如果在路由表中比對不到,最終走預設路由,但是如果指定了!這個操作(拒絕),其實在路由表中找到了,不會走預設路由,但作為路由失敗處理(強制路由失敗操作)。

繼續閱讀