ICMP協(xié)議簡(jiǎn)介(一)
1. ICMP介紹
- 架構(gòu)IP網(wǎng)絡(luò)時(shí)需要特別注意兩點(diǎn):
- 1.確認(rèn)網(wǎng)絡(luò)是否正常工作
- 2.遇到異常時(shí)進(jìn)行問題診斷
- ICMP的主要功能:
- 1.確認(rèn)IP包是否成功送達(dá)目標(biāo)地址匣椰。
- 2.通知在發(fā)送過程當(dāng)中IP包被廢棄的具體原因。
- ==ICMP技術(shù)網(wǎng)絡(luò)設(shè)備都配合端礼。==
2. ICMP實(shí)例
image
eg:如果R1到達(dá)R2的包在R2發(fā)現(xiàn)沒有到達(dá)R3的路由禽笑,則發(fā)送ICMP到R1,告知不可達(dá)蛤奥。
3.ICMP頭部
image
- ICMP頭部有8個(gè)字節(jié)
- 前四個(gè)字節(jié)格式固定
- type類型 ==8bit==
- code代碼 ==8bit==
- checksum校驗(yàn)和 ==16bit==
- 后四個(gè)字節(jié)不固定:可能有可能沒有佳镜,和類型有關(guān)系。
4. ICMP報(bào)文的類型
- 不同類型由報(bào)文中的==類型字段==和==代碼字段==共同決定
- ICMP分為兩種類型
- 查詢報(bào)文
- 差錯(cuò)報(bào)文
- 報(bào)文類型如下圖所示:
其中最熟悉的兩個(gè)報(bào)文都是 查詢報(bào)文:++type0-code0++凡桥,++type8-code0++蟀伸。- 0-Echo Reply 0。echo響應(yīng)缅刽,被ping使用
- 8-請(qǐng)求回復(fù) 0啊掏。echo請(qǐng)求
- 差錯(cuò)報(bào)文占大多數(shù)
image
4.1 差錯(cuò)報(bào)文
4.1.1差錯(cuò)報(bào)文結(jié)構(gòu)
- 當(dāng)發(fā)送一份ICMP差錯(cuò)報(bào)文時(shí),報(bào)文始終包含IP的==首部==和產(chǎn)生ICMP差錯(cuò)報(bào)文的IP數(shù)據(jù)包的==前8個(gè)字節(jié)==拷恨。
image
- 差錯(cuò)報(bào)文數(shù)據(jù)前8個(gè)字節(jié)意義:
tcp,udp,arp前8字節(jié)都含有==源端口號(hào)==反饋給源主機(jī)脖律。 - 接收ICMP差錯(cuò)報(bào)文的模塊就會(huì)把它與某個(gè)==協(xié)議==谢肾、和==用戶進(jìn)程==聯(lián)系起來
- 協(xié)議(根據(jù)IP數(shù)據(jù)報(bào)首部中的協(xié)議字段來判斷)
- 用戶進(jìn)程(根據(jù)包含在IP數(shù)據(jù)報(bào)前8字節(jié)中的TCP腕侄、UDP報(bào)文首部中的TCP、UDP端口號(hào)判斷)
4.1.2 不可達(dá)差錯(cuò)
1.路由
- 回復(fù)收到==U.U.U==芦疏,則類型為3:目的不可達(dá)
image
-
==debug ip icmp== 進(jìn)一步解析為哪種不可達(dá)冕杠。發(fā)現(xiàn)==host unreachable==(主機(jī)不可達(dá))
image
- 思科路由器,Telnet一個(gè)IP地址酸茴,如果收到ICMP報(bào)錯(cuò)則會(huì)報(bào)錯(cuò)
image
2.過濾PING
- 同樣 ==debug ip icmp==
- 出現(xiàn)==administratively prohibited unreachable==,表示用戶強(qiáng)制過濾
- 另外可以抓包觀察到++type:3分预,code:13++
image
- 思科路由器Telnet之后會(huì)報(bào)錯(cuò)。
- 當(dāng)然也存在 ==TCP reset==的可能
- 但是微軟計(jì)算機(jī)不會(huì)報(bào)錯(cuò)薪捍,只是堅(jiān)持發(fā)送Telnet SYN包笼痹,直到超時(shí)配喳,程序員不太關(guān)心網(wǎng)絡(luò)。
image
3.MTU
- 調(diào)小MTU凳干,一個(gè)包與出接口MTU有關(guān)晴裹。
image - ICMP flag為df的包不可分片,一旦大于MTU就丟棄救赐,并且發(fā)送不可達(dá)信息涧团。
-
如果因?yàn)镸TU問題回復(fù)ICMP,則ICMP首部后兩個(gè)字節(jié)中會(huì)寫入MTU大小
image
4.端口不可達(dá)
- ==TCP==訪問一個(gè)未開放端口號(hào)立刻會(huì)失敗经磅,(可以利用這個(gè)特性進(jìn)行 ==端口掃描== )
- 有失敗反應(yīng)泌绣,則端口未開放
- 無反應(yīng),反而有可能端口已打開
-
==UDP==訪問未開放端口號(hào)预厌,會(huì)反饋端口不可達(dá)信息
image
4.1.3 關(guān)閉不可達(dá)信息
- 面對(duì)未知的互聯(lián)網(wǎng)阿迈,不必要提供不可達(dá)等重要信息。使用:==no ip unreachable==
image
-思科對(duì)ICMP 報(bào)錯(cuò)速率已經(jīng)夠進(jìn)行了控制轧叽,避免發(fā)送大量的ICMP仿滔。
eg:==ip icmp rate-limit unreachable== 1000。默認(rèn)1000毫秒=1秒犹芹,發(fā)送一個(gè)ICMP
4.1.4 ICMP TTL超時(shí)
- TTL不斷減少顷帖,到0之后超時(shí)。
4.1.5 ICMP Redirect
-ICMP 重定向绳锅,選擇更優(yōu)化更應(yīng)該走的路徑那槽。路由器不會(huì)理會(huì)重定向ICMP,無路由信息的二層設(shè)備會(huì)接收ICMP
image