為了更有效地轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)和提高交付成功的機(jī)會(huì)哆姻,在網(wǎng)際層使用了網(wǎng)際控制報(bào)文協(xié)議ICMP坛怪,ICMP允許主機(jī)或路由器報(bào)告差錯(cuò)情況和提供有關(guān)異常情況的報(bào)告簿寂。ICMP報(bào)文是裝在IP數(shù)據(jù)報(bào)中歉铝,作為其數(shù)據(jù)的一部分谬晕。
報(bào)文格式
ICMP報(bào)文分為2種:
ICMP差錯(cuò)報(bào)文
- 終點(diǎn)不可達(dá)
當(dāng)路由器主機(jī)不能交付數(shù)據(jù)報(bào)時(shí)就向源點(diǎn)發(fā)送終點(diǎn)不可達(dá)報(bào)文碘裕。 - 源點(diǎn)抑制
當(dāng)路由器或主機(jī)不能交付數(shù)據(jù)報(bào)時(shí),就像源點(diǎn)發(fā)送終點(diǎn)不可達(dá)報(bào)文攒钳。 - 時(shí)間超過
當(dāng)路由器收到生存時(shí)間為0的數(shù)據(jù)報(bào)時(shí)帮孔,除丟棄數(shù)據(jù)報(bào)外,還要向源點(diǎn)發(fā)送時(shí)間超過報(bào)文。 - 參數(shù)問題
- 改變路由
所有的差錯(cuò)報(bào)文的數(shù)據(jù)字段都具有相同的格式文兢,即把收到的需要進(jìn)行差錯(cuò)報(bào)告的IP數(shù)據(jù)報(bào)的首部和IP數(shù)據(jù)報(bào)內(nèi)容的前8個(gè)字節(jié)提取出來晤斩,作為ICMP報(bào)文的數(shù)據(jù)部分。這樣接收ICMP差錯(cuò)報(bào)文的模塊就能把它與某個(gè)特定的協(xié)議(IP數(shù)據(jù)報(bào)首部中的協(xié)議字段)和用戶進(jìn)程(IP數(shù)據(jù)報(bào)內(nèi)容的前8個(gè)字節(jié)即為TCP和UDP端口號(hào))聯(lián)系起來姆坚。
ICMP詢問報(bào)文
- 回送請(qǐng)求和回答
- 時(shí)間戳請(qǐng)求和回答
PING
ICMP報(bào)文一個(gè)重要的應(yīng)用就是分組網(wǎng)間探測(cè)PING澳泵,用來測(cè)試2個(gè)主機(jī)之間的連通性。
PING使用了ICMP回送請(qǐng)求和回答報(bào)文兼呵,PING是應(yīng)用層直接使用網(wǎng)絡(luò)層ICMP的一個(gè)例子兔辅,它沒有通過運(yùn)輸層的TCP和UDP。
比如PC向目的服務(wù)器發(fā)送4個(gè)ICMP回送請(qǐng)求報(bào)文击喂。如果服務(wù)器正常工作而且響應(yīng)這個(gè)ICMP報(bào)文维苔,那么它就發(fā)回ICMP回送回答報(bào)文。由于往返的ICMP報(bào)文上面都有時(shí)間戳懂昂,因此介时,還可以得出往返時(shí)間RTT。
Traceroute
traceroute用來跟蹤一個(gè)分組從源點(diǎn)到終點(diǎn)的路徑忍法。
Traceroute從源主機(jī)向目的主機(jī)發(fā)送一個(gè)連串的IP數(shù)據(jù)報(bào),IP數(shù)據(jù)報(bào)中封裝的是無法交付的UDP用戶數(shù)據(jù)報(bào)(端口非法)榕吼,第一個(gè)數(shù)據(jù)報(bào)P1的生存時(shí)間TTL設(shè)置為1饿序,當(dāng)P1到達(dá)路徑上的第一個(gè)路由器R1時(shí),路由器R1先收下它羹蚣,接著把TTL的值減1原探,由于TTL等于0了,R1就把P1丟棄了顽素,并向源主機(jī)發(fā)送一個(gè)ICMP時(shí)間超過的差錯(cuò)報(bào)文咽弦。
源主機(jī)接著發(fā)送第二個(gè)數(shù)據(jù)報(bào)P2,并把TTL設(shè)置為2胁出。P2先到到路由器R1型型,R1將TTL減1再轉(zhuǎn)發(fā)給路由器R2。R2將TTL減1變?yōu)?全蝶,于是丟棄p2闹蒜,并向源主機(jī)發(fā)送一個(gè)ICMP時(shí)間超過的差錯(cuò)報(bào)文。
這樣一直繼續(xù)下去抑淫,直到到達(dá)目的主機(jī)绷落,此時(shí)TTL為1,目的主機(jī)不轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)始苇,也不把TTL減1砌烁。但因IP數(shù)據(jù)報(bào)封裝的是無法交付的運(yùn)輸層UDP用戶數(shù)據(jù)報(bào),因此目的主機(jī)向源主機(jī)發(fā)送ICMP終點(diǎn)不可達(dá)差錯(cuò)報(bào)文催式。