隨著本講座開始接觸涉及路由層,,我們必須暫時(shí)停一下。我們需要關(guān)注一下最容易誤解的協(xié)議:ICMP(互聯(lián)網(wǎng)控制消息協(xié)議 ),。經(jīng)理人和網(wǎng)絡(luò)管理員如果計(jì)劃制定防火墻決策就要了解ICMP協(xié)議的真正用途,,而且網(wǎng)絡(luò)管理員要能夠使用ICMP協(xié)議的知識(shí)全面理解路由問題。 既然IP網(wǎng)絡(luò)不可靠并且不能保證信息傳遞,,因此當(dāng)發(fā)生問題時(shí)通知發(fā)送人是很重要的,。ICMP協(xié)議是一種提供有關(guān)阻止數(shù)據(jù)包傳遞的網(wǎng)絡(luò)故障問題反饋信息的機(jī)制。 它讓TCP等上層協(xié)議能夠意識(shí)到數(shù)據(jù)包沒有送達(dá)目的地,,ICMP協(xié)議提供一種查出災(zāi)難性問題的方法,。這些災(zāi)難性的問題包括“TTL exceeded”(超過生存時(shí)間)和“需要分更多的數(shù)據(jù)段”等。ICMP協(xié)議不報(bào)告IP校驗(yàn)失敗等常見的問題,。這是因?yàn)槲覀兗俣═CP或者其它可靠的協(xié)議能夠處理這類數(shù)據(jù)包損壞的問題,。而且,如果我們使用UDP等不可靠的協(xié)議,,我們就不應(yīng)理會(huì)較小數(shù)量的數(shù)據(jù)損失,。 反之,網(wǎng)絡(luò)問題需要立即報(bào)告,。例如,,如果IP TTL值(IP生存時(shí)間)將達(dá)到零,這就可能是網(wǎng)絡(luò)的某個(gè)部分發(fā)生了路由環(huán)路問題,,這樣將沒有任何數(shù)據(jù)包能發(fā)送到目的地,。端點(diǎn)系統(tǒng)需要了解這些類型的故障。ICMP是一種發(fā)送各種消息報(bào)告網(wǎng)絡(luò)狀態(tài)的協(xié)議,,而非僅僅是簡單的ping(聯(lián)通性測(cè)試程序),。回應(yīng)請(qǐng)求(echo request)僅是ICMP協(xié)議提供的眾多消息之一,。Ping信息可以被過濾掉,。但是,大多數(shù)ICMP消息類型是IP,、TCP和其它協(xié)議正常運(yùn)行所需要的,。永遠(yuǎn)不要相信ICMP協(xié)議是邪惡的并且簡單的封鎖這個(gè)協(xié)議。 ICMP協(xié)議本身非常復(fù)雜,。每一種類型的ICMP消息也稱“主要類型(major type)”擁有自己的“子類型編碼(minor codes)”,。ICMP協(xié)議工作在第3層,因此,,它能夠在互聯(lián)網(wǎng)上路由,。一個(gè)ICMP數(shù)據(jù)包實(shí)際上就是一個(gè)IP數(shù)據(jù)部分包含ICMP協(xié)議數(shù)據(jù)的IP數(shù)據(jù)包。每一個(gè)ICMP消息都將包含引發(fā)這條ICMP消息的數(shù)據(jù)包的完全I(xiàn)P包頭,這樣,,端點(diǎn)系統(tǒng)就會(huì)知道實(shí)際上哪一個(gè)數(shù)據(jù)包沒有發(fā)送到目的地,。另外引發(fā)此ICMP消息的數(shù)據(jù)包的前8個(gè)字節(jié)也將包括在內(nèi),這通常是TCP或者UDP包頭,。 簡略的說,,ICMP協(xié)議消息包含永遠(yuǎn)不會(huì)變化的三個(gè)字段,隨后是ICMP數(shù)據(jù),,然后是引發(fā)此消息的源IP數(shù)據(jù)包包頭,。不會(huì)變化的三個(gè)字段中,前8個(gè)字節(jié)包含ICMP類型(主要類型),、第二個(gè)字段包含了類型代碼,、第三個(gè)字段是ICMP消息校驗(yàn)值。 我們需要認(rèn)識(shí)到,,ICMP協(xié)議在某些情況下不會(huì)發(fā)送錯(cuò)誤信息,。ICMP不會(huì)對(duì)ICMP信息做出響應(yīng)。如果ICMP回應(yīng)其它ICMP消息,,這些消息的數(shù)量會(huì)爆炸性增長而演變?yōu)橐粓?chǎng)ICMP消息風(fēng)暴,。為了防止出現(xiàn)廣播風(fēng)暴,ICMP消息也不會(huì)回應(yīng)一個(gè)廣播或者多播地址,。 最有用的ICMP數(shù)
在IPv4協(xié)議中最常用的ICMP消息類型有以下幾種: •回顯應(yīng)答(類型0)和回顯請(qǐng)求(類型8):這是Ping程序發(fā)送的信息,。 •目標(biāo)不可達(dá)(類型3) •源抑制(類型4):這是一種用于通知發(fā)送者路由器或者主機(jī)出現(xiàn)阻塞現(xiàn)象的ICMP消息,發(fā)送者需要降低發(fā)送速度,。 •重定向(類型5):這個(gè)消息用來向可以訪問兩臺(tái)路由器的主機(jī)說“請(qǐng)使用另一臺(tái)路由器”,。我們?cè)诖讼盗兄v座中未來的路由問題中再詳細(xì)討論這個(gè)問題。 •路由器信息應(yīng)答(類型9)和路由器信息請(qǐng)求(類型10) •超時(shí)(類型11):這個(gè)消息有兩種用途,。第一,,當(dāng)超過IP生存期時(shí)向發(fā)送系統(tǒng)發(fā)出錯(cuò)誤信息。第二,,如果分段的IP數(shù)據(jù)報(bào)沒有在某種時(shí)限內(nèi)重新組合,這個(gè)消息將通知發(fā)送系統(tǒng),。 當(dāng)然,,上述各種類型的消息中都包含子類型代碼。類型三消息“目標(biāo)不可達(dá)”本身有15個(gè)子類型代碼,。我們就不提供每一項(xiàng)的細(xì)節(jié)了,。但是,ICMP協(xié)議中有一項(xiàng)非常重要的應(yīng)用要依靠類型三的消息,。 路徑最大傳輸單元(PMTU)是各種協(xié)議用來尋找整條路徑中支持的最大的MTU(最大傳輸單元)的機(jī)制,,小于此限制的數(shù)據(jù)可以不用分段。發(fā)送者在其本地接口設(shè)置最大的數(shù)據(jù)包規(guī)格,,然后,,在IP包頭中使用DF(不要分段)的標(biāo)記發(fā)出數(shù)據(jù)包,。如果有問題發(fā)送者就會(huì)收到第三種類型的ICMP錯(cuò)誤信息,其子類型代碼是“要求分段,,但是已經(jīng)設(shè)置了DF標(biāo)記”,。當(dāng)發(fā)生這種情況是,發(fā)送者知道它必須要減小發(fā)送數(shù)據(jù)的規(guī)格,。如果沒有返回錯(cuò)誤信息,,這就表明MTU的設(shè)置沒有問題。 在查找PMTU時(shí)的主要問題是人們常封鎖ICMP協(xié)議,,阻止這個(gè)報(bào)錯(cuò)信息傳遞到發(fā)送數(shù)據(jù)的主機(jī),。這種情況很多時(shí)候發(fā)生在你設(shè)法連接的遠(yuǎn)程站點(diǎn)。假如你向一臺(tái)Web服務(wù)器發(fā)送一個(gè)請(qǐng)求,,但是,,一個(gè)空白頁卻不斷出現(xiàn)。在虛擬專用網(wǎng)連接上的人們經(jīng)常會(huì)看到這種情況,,這是因?yàn)橛捎谟械奶摂M專用網(wǎng)封裝的額外的文件頭,,它們的MTU比通常的容量要小一些。當(dāng)遠(yuǎn)程Web服務(wù)器向虛擬專用網(wǎng)用戶發(fā)送其要求的內(nèi)容時(shí),,如果數(shù)據(jù)包太大,,用戶前面最后的路由跳數(shù)需要為這個(gè)數(shù)據(jù)分段。如果發(fā)送方設(shè)置DF標(biāo)記之后,,它能做的一切就是通知發(fā)送者必須發(fā)送較小的數(shù)據(jù)包,。但是,發(fā)送者封鎖了ICMP協(xié)議,,因此這個(gè)網(wǎng)站將永遠(yuǎn)不會(huì)看到這種ICMP信息,。不過一個(gè)好消息是大多數(shù)TCP協(xié)議的執(zhí)行都是智能化的。如果它們一直得不到發(fā)送數(shù)據(jù)的許可,,它們會(huì)自己以較小的分段尺寸發(fā)送數(shù)據(jù),。但是,如果你使用某些流行的,、操作方便的操作系統(tǒng),,這種機(jī)制并沒實(shí)現(xiàn)。 簡言之,,封鎖ICMP協(xié)議對(duì)于成功地運(yùn)行網(wǎng)絡(luò)是有害的,。這不僅會(huì)破壞ping,事實(shí)上,,如果ICMP協(xié)議不工作,,許多協(xié)議都將不能完全發(fā)揮作用。 小結(jié) ICMP包括許多種類型的用于各種用途的數(shù)據(jù)包,每一種類型都有子類型代碼,,用于指明這些消息類型的具體內(nèi)容,。 查找路徑最大傳輸單元能夠讓規(guī)格正確的數(shù)據(jù)包在各種數(shù)據(jù)包容量的鏈路上傳送。 ICMP對(duì)于恰當(dāng)?shù)穆酚珊蛿?shù)據(jù)包傳遞是非常重要的,,你只能封鎖你不需要的那一些消息,。據(jù)包類型“目標(biāo)不可達(dá)”(類型三)的消息。錯(cuò)誤消息一般由路由器生成,,并且發(fā)送給數(shù)據(jù)包的來源,。大多數(shù)錯(cuò)誤信息還將發(fā)送給與發(fā)送的數(shù)據(jù)包有關(guān)的應(yīng)用程序。在這種情況下,,TCP協(xié)議將廣泛使用ICMP協(xié)議,。我們?cè)诤竺鎸⒑芸炜吹竭@種情況。 |
|