利用WireShark分析由Ping产生的Internet 控制报文协议(ICMP)
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
ICMP是(Internet Control Message Protocol)Internet控制報(bào)文協(xié)議。它是TCP/IP協(xié)議族的一個子協(xié)議,用于在IP主機(jī)、路由器之間傳遞控制消息。控制消息是指網(wǎng)絡(luò)通不通、主機(jī)是否可達(dá)、路由是否可用等網(wǎng)絡(luò)本身的消息。這些控制消息雖然并不傳輸用戶數(shù)據(jù),但是對于用戶數(shù)據(jù)的傳遞起著重要的作用
ICMP為TCP/IP協(xié)議簇中的成員,工作在網(wǎng)絡(luò)層,作用是在主機(jī)和路由器之間傳遞控制信息.
上文中Ping命令完成DNS域名解析任務(wù)后,隨即利用得到的第一條主機(jī)資源記錄(A記錄)中的IP地址發(fā)送ICMP請求報(bào)文:
圖中可以看到ICMP報(bào)文格式:
Type(類型)以及Code(代碼)合起來說明ICMP報(bào)文類型.
--這里ICMP的類型是:請求(0x8)表示ping請求; 響應(yīng)(0x0)表示ping響應(yīng)
Checksum(校驗(yàn)和)包含整個ICMP報(bào)文數(shù)據(jù)的校驗(yàn).
ID(標(biāo)識符)和Seq(序列號)由發(fā)送端任意設(shè)置,響應(yīng)報(bào)文返回相同的值,用于配對請求和響應(yīng).
--比如,在這個例子中,ID字段和Seq有兩種表示方式:大端和小端,在請求和響應(yīng)報(bào)文中,ID值始終不變;但是每發(fā)送一次請求,Seq就被加一.
隨后的Data數(shù)據(jù)段長度不固定,ping命令的發(fā)送的Echo請求數(shù)據(jù)是32bytes的a~i字符序列,且沒有終止0,
剛好印證了為什么Ping時會顯示: "Ping xxx 具有32字節(jié)的數(shù)據(jù):" 這里32字節(jié)的數(shù)據(jù)就是a~i字符序列.
ICMP響應(yīng)報(bào)文中:
Type值是0x0,表示 ping reply,這一點(diǎn)顯而易見的.
ID和Seq值和請求報(bào)文中的相同.
Data也是相同的.
在接收到響應(yīng)之后同時計(jì)算出報(bào)文往返的時間,這里是Response time: 47.360ms
這樣就完成了一次Ping
之后的三個Ping其實(shí)是重復(fù)上述操作,只不過Seq序號字段要自增.
今天就到這里,歡迎大家學(xué)習(xí)交流,其實(shí)我更希望得到大家的意見,謝謝點(diǎn)贊~
轉(zhuǎn)載于:https://my.oschina.net/ybusad/blog/291237
總結(jié)
以上是生活随笔為你收集整理的利用WireShark分析由Ping产生的Internet 控制报文协议(ICMP)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php和mysql建立链接
- 下一篇: js中,(function(){})()