計(jì)算機(jī)網(wǎng)絡(luò)暢通的條件就是數(shù)據(jù)包能去能回,道理很簡(jiǎn)單也很好理解,也是我們排除網(wǎng)絡(luò)故障的理論依據(jù)。
如果A網(wǎng)絡(luò)中的計(jì)算機(jī)到B網(wǎng)絡(luò)中的計(jì)算機(jī)不能通信,就要檢查途徑的路由器的路由表是否有到B網(wǎng)絡(luò)的路由,還要檢查途徑的路由器的路由表是否有到A網(wǎng)絡(luò)的路由。
如圖1所示,網(wǎng)絡(luò)中的計(jì)算機(jī)A要想實(shí)現(xiàn)和計(jì)算機(jī)B的通信,途徑的所有路由器R1、R2和R3必須有到目標(biāo)網(wǎng)絡(luò)192.168.1.0/24的路由。計(jì)算機(jī)B要給計(jì)算機(jī)A返回?cái)?shù)據(jù)包,途經(jīng)的路由器R3、R2和R1必須有到達(dá)192.168.0.0/24網(wǎng)段的路由。

圖1 網(wǎng)絡(luò)暢通的條件
在計(jì)算機(jī)A上ping 192.168.1.2,如果途徑的路由器中有任何一個(gè)缺少到達(dá)目標(biāo)網(wǎng)絡(luò)192.168.1.0/24的路由,該路由器將為計(jì)算機(jī)A返回一個(gè)ICMP差錯(cuò)報(bào)告數(shù)據(jù)包,提示目標(biāo)主機(jī)不可到達(dá),如圖2所示。

圖2 目標(biāo)主機(jī)不可到達(dá)
如果計(jì)算機(jī)A發(fā)送的數(shù)據(jù)包能夠到達(dá)計(jì)算機(jī)B,計(jì)算機(jī)B將給計(jì)算機(jī)A返回響應(yīng)數(shù)據(jù)包,途徑的路由器中只要有任何一個(gè)缺少到達(dá)網(wǎng)絡(luò)192.168.0.0/24的路由,計(jì)算機(jī)B返回的ICMP響應(yīng)數(shù)據(jù)包就不能到達(dá)計(jì)算機(jī)A,將為計(jì)算機(jī)A顯示請(qǐng)求超時(shí),如圖3所示。

圖3 請(qǐng)求超時(shí)
基于以上原理,網(wǎng)絡(luò)故障的排錯(cuò)思路就清晰了。如果網(wǎng)絡(luò)不通,先檢查兩端的計(jì)算機(jī)是否配置了正確的IP地址、子網(wǎng)掩碼以及網(wǎng)關(guān);再逐一檢查沿途路由器上的路由表,查看是否有到達(dá)目標(biāo)網(wǎng)絡(luò)的路由;然后逐一檢查沿途路由器上的路由表,檢查是否有數(shù)據(jù)包返回所需的路由。
路由器如何知道網(wǎng)絡(luò)中有哪些網(wǎng)段,以及到這些網(wǎng)段的下一跳應(yīng)該轉(zhuǎn)發(fā)給哪個(gè)地址或由哪一個(gè)接口發(fā)送出去?路由器上有路由表,里面記錄了到每個(gè)網(wǎng)段的下一跳該轉(zhuǎn)發(fā)給哪個(gè)地址或由哪個(gè)接口發(fā)送出去。
路由器用兩種方式構(gòu)建路由表:一種方式是,管理員在路由器上通過命令添加到各個(gè)網(wǎng)絡(luò)的路由,這就是靜態(tài)路由,適合規(guī)模較小的網(wǎng)絡(luò)或網(wǎng)絡(luò)不怎么變化的情況;另一種方式就是,配置路由器使用路由協(xié)議(RIP或OSPF等)自動(dòng)構(gòu)建路由表,這就是動(dòng)態(tài)路由,動(dòng)態(tài)路由適合規(guī)模較大的網(wǎng)絡(luò),能夠針對(duì)網(wǎng)絡(luò)的變化自動(dòng)選擇最佳路徑。