ping 簡(jiǎn)介
1.ping介紹
-
用于進(jìn)行通信的主機(jī)或路由器之間显拜,判斷所發(fā)送的數(shù)據(jù)包是否已經(jīng)成功到達(dá)對(duì)端的一種消息笛丙。
- 可以向?qū)Χ酥鳈C(jī)發(fā)送回送請(qǐng)求的消息(ICMP Echo Request Message,類(lèi)型8)
- 也可以接收對(duì)端主機(jī)發(fā)送回來(lái)的回送應(yīng)答消息(ICMP Echo Reply Message,類(lèi)型0)能颁。
Identifier: 表示進(jìn)程標(biāo)識(shí),請(qǐng)求與回復(fù)ID相同
Sequence Number: 表示序列號(hào)倒淫,多發(fā)一次伙菊,序列號(hào)+1
Payload: 在linux中打印時(shí)間,請(qǐng)求出去的時(shí)間敌土,收到回送的時(shí)間镜硕,兩者相減表示時(shí)間差。
- 網(wǎng)絡(luò)上最常用的Ping命令返干,就是利用這個(gè)消息實(shí)現(xiàn)的兴枯。
- ==Echo與Echo Reply為經(jīng)典的查詢(xún)報(bào)文==
1.1 Echo Request
1.1.1 PAT 與 PING
- PAT(端口地址轉(zhuǎn)換)
- 使用Identifier當(dāng)作端口號(hào),進(jìn)行端口轉(zhuǎn)換矩欠,一個(gè)Id只算一個(gè)轉(zhuǎn)換項(xiàng)财剖。
2.IP記錄路由選項(xiàng)
2.1 IP包結(jié)構(gòu)
- 首部長(zhǎng)度:60字節(jié)
- 必填字段: 20字節(jié)=4字節(jié)*5
-
可選字段+填充=40字節(jié)
2.2 IP記錄路徑選項(xiàng)
2.2.1 PING R選項(xiàng)
- 大多數(shù)PING程序都提供==R選項(xiàng)==,==提供記錄路由的功能==晚顷。
- 它使得PING程序在發(fā)送出去的IP數(shù)據(jù)報(bào)中設(shè)置IP RR選項(xiàng)(該IP數(shù)據(jù)包包含ICMP回顯請(qǐng)求報(bào)文)。
- 這樣该默,每個(gè)處理該數(shù)據(jù)報(bào)的路由器都把它的IP地址放入==選項(xiàng)字段==中瞳氓。
- 當(dāng)數(shù)據(jù)包到達(dá)目的端時(shí),IP低脂清淡應(yīng)該復(fù)制到ICMP回顯應(yīng)答中,這樣返回圖中所==經(jīng)過(guò)的路由器==地址也被加入清單中
- 當(dāng)PING程序收到回顯應(yīng)答時(shí)匣摘,它就打印出這份IP地址清單店诗。
2.2.2 IP RR選項(xiàng)
- 源端主機(jī)++生成RR選項(xiàng)++,中間路由器++對(duì)RR選項(xiàng)的處理++音榜,以及把ICMP回顯請(qǐng)求中的RR清單復(fù)制到ICMP回顯應(yīng)答中庞瘸,所有這些都是==選項(xiàng)功能==。
- 現(xiàn)在大多數(shù)系統(tǒng)都支持這些選項(xiàng)功能赠叼,只是有一些系統(tǒng)不把ICMP請(qǐng)求中的清單復(fù)制到ICMP應(yīng)答中
2.2.3 IP首部選項(xiàng)空間
- IP首部中只有有限的空間來(lái)存放途徑路由器的IP地址
- IP首部最長(zhǎng)15*4字節(jié)=60字節(jié)擦囊。
- IP首部固定長(zhǎng)度:20字節(jié)
- RR選項(xiàng):3字節(jié)
- 剩下==37字節(jié)==存放IP地址清單,也就是只能存放==9個(gè)IP地址==
2.2.4 IP記錄路由選項(xiàng)結(jié)構(gòu)
- code嘴办,一字節(jié)瞬场,表明IP選項(xiàng)的類(lèi)型。對(duì)于RR選項(xiàng)來(lái)說(shuō)涧郊,==code=7==贯被。
- len,一字節(jié)妆艘,是RR選項(xiàng)總字節(jié)長(zhǎng)度彤灶,在這種情況下為:==39==。(理論可以存放任何比最大長(zhǎng)度短的數(shù)據(jù)批旺,但是選項(xiàng)空間有限幌陕,一般都設(shè)置成最大長(zhǎng)度)最多可以記錄9個(gè)IP地址。
- ptr,一字節(jié)朱沃,指針字段苞轿。它是基于1的指針,指向存放下一個(gè)IP地址的位置逗物。==它的最小值為4搬卒,指向存放第一個(gè)IP地址的位置。== 隨著每個(gè)IP地址存入清單翎卓,ptr的值分別為8契邀,12,16失暴,最大到36坯门。當(dāng)記錄下9個(gè)IP地址后,ptr的值為40逗扒,表示清單已滿(mǎn)古戴。
- RFC791指定路由器記錄出口IP地址。
- 當(dāng)原始主機(jī)(運(yùn)行PING程序的主機(jī))收到帶有RR選項(xiàng)的ICMP回顯應(yīng)答時(shí)矩肩,它也要把它的入口IP地址放入清單中现恼。
- 實(shí)例:
2.3 IP源站選路選項(xiàng)
2.3.1 IP源站選路概念
- ==源站選路==(source routing)的思想是由發(fā)送者指定路由,可以采取以下兩種形式:
1.嚴(yán)格的源路由選擇。發(fā)送端子明IP數(shù)據(jù)報(bào)所必須采用的確切路由叉袍。如果一個(gè) 路由器發(fā)現(xiàn)源路由所指定的下一個(gè)路由器不在其直接連接的網(wǎng)絡(luò)上始锚,那么它就返回一個(gè)“源站路由失敗”的ICMP差錯(cuò)報(bào)文。
2.寬松的源站選路喳逛,發(fā)送端指明了一個(gè)數(shù)據(jù)報(bào)經(jīng)過(guò)的IP地址清單瞧捌,但是數(shù)據(jù)報(bào)在清單上指明的任意兩個(gè)地址之間可以通過(guò)其他路由器。
2.3.2 IP源站選路選項(xiàng)結(jié)構(gòu)
- 源站選路幀格式與記錄路由選項(xiàng)格式基本一致润文。不同之處是姐呐,對(duì)于源站選路,==我們必須在發(fā)送IP數(shù)據(jù)報(bào)前填充IP地址清單转唉。==(IP地址數(shù)量通常小于9)
- 而對(duì)于記錄路有選項(xiàng)皮钠,我們需要為IP地址清單分配并清空一些空間,并讓路由器填充該清單中的各項(xiàng)赠法。
-
code,一字節(jié)
- 對(duì)于寬松的源站選路來(lái)說(shuō):code=0x83
- 嚴(yán)格源站選路:code=0x89
- ptr乔夯,len同路徑記錄選項(xiàng)一致砖织。
2.3.3 IP源站選路的操作機(jī)制
- 源站路由選項(xiàng)的實(shí)際稱(chēng)呼為“源站及記錄路由”。(對(duì)于寬松的源站選路和嚴(yán)格的源站選路末荐,分別用==LSRR==和==SSRR==表示)侧纯,這是因?yàn)樵跀?shù)據(jù)報(bào)沿路由發(fā)送過(guò)程中,對(duì)IP地址清單進(jìn)行了更新甲脏。下面是運(yùn)行過(guò)程:
- 發(fā)送主機(jī)從應(yīng)用程序接收源站路由清單眶熬,將第1個(gè)表項(xiàng)去掉(它是數(shù)據(jù)報(bào)的最終目的地址),將剩余的項(xiàng)移到1個(gè)項(xiàng)中块请,并將原來(lái)的目的地址作為清單的最后一項(xiàng)娜氏。指針仍然指向清單的第一項(xiàng)(==即ptr=4==)
- 每個(gè)處理數(shù)據(jù)報(bào)的路由檢查其是否為==數(shù)據(jù)報(bào)==的最終地址。如果不是墩新,則正常轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)(在這種情況下贸弥,必須指明寬松源站選路,否則就不能接收到該數(shù)據(jù)報(bào))海渊。
- 如果該路由器是最終目的绵疲,且指針不大于路徑的長(zhǎng)度,那么:
- 由ptr所制定的清單中的下一個(gè)地址就是數(shù)據(jù)報(bào)的最終目的地址
- 由外出接口相對(duì)應(yīng)的IP地址取代剛才使用的原地址
- 指針加4
- Host Requirements RFC指明臣疑,TCP客戶(hù)必須能致命源站選路盔憨,同時(shí),TCP服務(wù)器必須能夠接收源站選路讯沈,并且對(duì)于該TCP連接的所有報(bào)文都能采用==反向路由==郁岩。如果TCP服務(wù)器下面接收到一個(gè)不同的源站選路,那么新的源站路由將取代舊的源站路由。
2.3.4 關(guān)閉源站選路
- 思科安全推薦:no ip source-route