一、IP路由
1、路由機制
1、路由表:在Linux環境下,我們可以通過 route 來查看路由表
- Destination:表示網絡或主機
- Gateway:網關地址;
- Genmask:網絡掩碼;
- Flags:路由項標誌,常見的有5種:U(活動的)、H(目標是一臺主機)、G(目標是網關)、D(由重定向生成的)、M(被重定向修改過);
- Metric:路由距離,即到達指定網絡所需的中轉數;
- Ref:路由項被引用的次數(Linux中未被使用);
- Use:該路由項被使用的次數;
- Iface:該路由項對應的輸出網卡接口;
其中路由表中的第一項是 default ,即所謂的默認路由項,該項包含一個 G 標誌,說明路由的下一項就是網關 。
說明:由於歷史的原因,許多有關TCP/IP的文獻曾經把網絡層使用的路由器稱爲網關,在今天很多局域網採用都是路由來接入網絡,因此通常指的網關就是路由器的IP!
2、路由表的工作流程
1、查找路由表中和數據報的目標IP地址完全匹配的主機IP地址。如果找到,就使用該路由項,如果沒有找到就轉到步驟2;
2、查找路由表中和數據報的目標IP地址具有相同網路ID的網絡IP地址,如果找到,就使用,沒有就轉到步驟3;
3、選擇默認路由項,這通常意味着數據報的下一跳路由是網關。
3、路由表的更新
路由表必須能夠更新,以反映網絡連接的變化,這樣IP模塊才能準確、高效的轉發數據報。
可以通過 route 命令或者其它工具來手動修改路由表,是靜態的路由更新方式。對於大型的路由器,他們通常通過BGP(編輯網關協議)、RIP(路由信息協議)、OSPF等協議來發現路徑,並更新自己的路由表。
2、重定向機制
1、ICMP(因特網控制報文協議)重定向報文
ICMP報文主要分爲兩種:
1、差錯類型報文,主要用來回應網絡錯誤,比如目標不可達到(類型3)或者重定向(類型5);
2、查詢類型報文,比如 ping 程序 就是使用 ICMP實現的(類型爲8);
其中重定向的報文格式如下:
ICMP重定向報文的數據部分含義很明確,它給接收方提供了以下信息:
- 引起重定向的IP數據報的源端IP地址;
- 應該使用的路由器IP地址;
2、主機重定向的過程
【注】:文中圖片均剪切自《圖解TCP/IP(第五版)》、《Linux高性能服務器編程》