icmp協(xié)議的應(yīng)用
要使用該協(xié)議,我們可以進(jìn)行相應(yīng)的ICMP設(shè)置,比如在Windows XP中,首先打開“網(wǎng)絡(luò)連接”,右鍵單擊啟用Internet連接防火墻的“網(wǎng)絡(luò)連接”,選擇“屬性”打開屬性窗口。接著,選擇“高級(jí)”選項(xiàng)卡,單擊右下角“設(shè)置”按鈕。然后,在高級(jí)設(shè)置窗口中選擇“ICMP”選項(xiàng)卡,在其中可以進(jìn)行相應(yīng)的設(shè)置,包括允許傳入的回顯請(qǐng)求等。
我們?cè)诰W(wǎng)絡(luò)中經(jīng)常會(huì)使用到ICMP協(xié)議,只不過我們覺察不到而已。比如我們經(jīng)常使用的用于檢查網(wǎng)絡(luò)通不通的Ping命令,這個(gè)“Ping”的過程實(shí)際上是ICMP協(xié)議工作的過程。還有其他的網(wǎng)絡(luò)命令如跟蹤路由的Tracert命令也是基于ICMP協(xié)議的。
ICMP應(yīng)用之pingping是一個(gè)用來查詢網(wǎng)絡(luò)通不通的一個(gè)工具,是系統(tǒng)自帶的,運(yùn)行于內(nèi)核,調(diào)用ICMP協(xié)議。
ping的工作原理:ping通過調(diào)用echo來發(fā)送請(qǐng)求,通過是否收到echo-reply來查詢網(wǎng)絡(luò)層的連通性。ping的結(jié)果會(huì)給出傳送的時(shí)間和TTL的數(shù)據(jù),還可以查看主機(jī)到目的主機(jī)的路由。這是因?yàn)镮CMP的ping請(qǐng)求數(shù)據(jù)報(bào)在每經(jīng)過一個(gè)路由器的時(shí)候,路由器就會(huì)把自己的IP地址放到該數(shù)據(jù)包中,而目的主機(jī)則會(huì)把這個(gè)IP列表復(fù)制到ICMP數(shù)據(jù)包中發(fā)回給主機(jī)。但是,IP頭能記錄的路由列表非常有限,如果要觀看完整的路由信息,就要用到traceroute工具了。
ICMP應(yīng)用之traceroute
traceroute是用來偵測(cè)主機(jī)到目的主機(jī)所經(jīng)路由情況的工具,可以獲取到所經(jīng)路由器的IP地址。
traceroute的工作原理:它收到目的主機(jī)的IP后,首先給目的主機(jī)發(fā)送一個(gè)TTL=1的UDP數(shù)據(jù)包,而經(jīng)過的第一個(gè)路由器收到這個(gè)數(shù)據(jù)包以后,就自動(dòng)將TTL減1.而TTL變?yōu)?以后,路由器就把這個(gè)包給拋棄了,并同時(shí)產(chǎn)生一個(gè)主機(jī)不可達(dá)的ICMP數(shù)據(jù)包給主機(jī)。主機(jī)收到這個(gè)數(shù)據(jù)包以后就發(fā)送一個(gè)TTL=2的數(shù)據(jù)包給主機(jī),然后刺激第二個(gè)路由器給主機(jī)發(fā)送ICMP數(shù)據(jù)包,如此反復(fù)直到到達(dá)目的主機(jī)。這樣,traceroute就拿到了所有的路由器IP,從而避免了IP頭只能記錄有限的路由IP 的問題。
怎么知道UDP到?jīng)]到達(dá)目的主機(jī)呢?這就涉及一個(gè)技巧的問題,TCP和UDP協(xié)議有一個(gè)端口號(hào)定義,而普通的網(wǎng)絡(luò)程序只監(jiān)控少數(shù)的幾個(gè)號(hào)碼較 小的端口,比如說80,比如說23,等等。而traceroute發(fā)送的是端口號(hào)》30000(真變態(tài))的UDP報(bào),所以到達(dá)目的主機(jī)的時(shí)候,目的主機(jī)只能發(fā)送一個(gè)端口不可達(dá)的ICMP數(shù)據(jù)報(bào)給主機(jī)。主機(jī)接到這個(gè)報(bào)告以后就知道,主機(jī)到了,所以,說Traceroute是一個(gè)騙子一點(diǎn)也不為過
traceroute的另外一個(gè)作用是確定路徑MTU。要做的就是發(fā)送分組,并設(shè)置“不分片”標(biāo)志。發(fā)送的第一個(gè)分組的長(zhǎng)度正好與出口MTU相等,每次收到ICMP“不能分片”差錯(cuò)時(shí)就減小分組的長(zhǎng)度。
產(chǎn)生ICMP不可達(dá)的3種情況:TTL為0,端口不可達(dá)(找不到對(duì)應(yīng)的端口號(hào)),IP需要分片卻設(shè)置了不分片的標(biāo)志。