這篇日志中的路由選擇過程,是以ping包為例。ICMP協(xié)議請求應答只涉及到網(wǎng)絡層、數(shù)據(jù)鏈路層以及物理層。不涉及第四層傳輸層及高三層(應用層、表示層、會話層)
常見的路由選擇協(xié)議:RIP、RIPv2、EIGRP和OSPF
路由選擇協(xié)議:路由器用于在彼此互聯(lián)的網(wǎng)絡上動態(tài)地發(fā)現(xiàn)所有網(wǎng)絡,通過這一協(xié)議可以確保所有路由器都擁有相同的路由選擇表。
被路由協(xié)議:用來通過這個配置完善的互聯(lián)網(wǎng)發(fā)送用戶數(shù)據(jù),被路由協(xié)議需要被指定到接口上并用來確定分組的遞交方式。
常見的被路由協(xié)議:IPv4、IPv6
IP路由選擇過程(以ping包操作為例)
1、本地主機發(fā)出ICMP請求數(shù)據(jù)包。
2、在IP層,加入目標IP、源IP、以及協(xié)議字段0x01,創(chuàng)建分組。
3、分組創(chuàng)建后,IP協(xié)議根據(jù)目標IP判斷目的方是本地網(wǎng)絡還是遠程網(wǎng)絡。
4、當被判定為遠程網(wǎng)絡后,主機會將數(shù)據(jù)包發(fā)送到本地默認網(wǎng)關(guān)。
5、分組要發(fā)送給默認網(wǎng)關(guān),此時就必須知道路由器上相應接口的硬件地址。只有知道了路由器的硬件地址,本端才可以將分組向下遞交給數(shù)據(jù)鏈路層組幀。然后將數(shù)據(jù)幀根據(jù)硬件地址發(fā)給默認網(wǎng)關(guān)對應的硬件地址。
6、解析硬件地址,查看主機的ARP緩存,查看此默認網(wǎng)關(guān)的IP地址是否已被解析為一個硬件地址(arp -a)。如果沒有被解析,則通過arp廣播方式請求網(wǎng)關(guān)的硬件地址。
7、在數(shù)據(jù)鏈路層完成組幀后,在物理層按比特進行物理傳輸。
8、此時在同一個沖突域的所有設(shè)備都會接收這些比特,并重新組幀。每個設(shè)備都會對接收內(nèi)容進行CRC運算,并與幀中FCS字段的內(nèi)容進行比對。如不匹配,則丟棄接收到的幀。
9、從數(shù)據(jù)幀中取出分組,將其他底層部分丟棄。將分組傳給網(wǎng)絡層。網(wǎng)絡層接收分組后,查看目標IP地址。路由器會在路由選擇表中找到目的IP地址對應的端口,將分組重新組幀送出。如果沒有在路由選擇表中找到相應信息,將會丟棄分組。
10、直到分組順利路由到對端主機。對端的路由器接口會查(sh ip arp)對端主機的硬件地址,然后向?qū)Χ宿D(zhuǎn)發(fā)數(shù)據(jù)幀。
11、對端主機收到數(shù)據(jù)幀后,運行CRC,運算結(jié)果與FCS字段內(nèi)容若匹配,繼續(xù)檢查目標硬件地址,若地址也匹配,查看以太網(wǎng)類型字段,建數(shù)據(jù)幀中分組送上層網(wǎng)絡層進行處理。
12、網(wǎng)絡層,對IP報頭運行CRC。若校驗通過,繼續(xù)檢查目標IP地址。若匹配,繼續(xù)檢查分組的協(xié)議字段,上數(shù)據(jù)包有效負荷部分送上層傳輸層處理。
13、有效負荷遞交給ICMP后,后者知道這是一個回應請求。ICMP負責應答,丟棄接收到的數(shù)據(jù)包,產(chǎn)生一個回應的新的有效負荷回應。(包含目的、源地址,協(xié)議字段,有效負荷)
14、重新進行路由選擇過程,回應請求。