




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 西北工業(yè)大學(xué)<<計(jì)算機(jī)網(wǎng)絡(luò)原理>> project專用紙 No8題目:發(fā)送icmp echo請(qǐng)求姓名: 學(xué)號(hào) 班號(hào): 時(shí)間:2016/11/16計(jì)算機(jī)學(xué)院時(shí)間:2016/11/16目 錄摘 要1 目的12 要求13相關(guān)知識(shí)14實(shí)現(xiàn)原理及流程圖錯(cuò)誤!未定義書簽。5程序代碼76運(yùn)行結(jié)果與分析77參考文獻(xiàn)15題目:發(fā)送icmp echo請(qǐng)求1、 目的 理解ICMP協(xié)議完成的功能,了解ICMP報(bào)文格式,理解Ping程序的工作原理。2、要求針對(duì)某個(gè)主機(jī)發(fā)送ICMP echo報(bào)文。2、 相關(guān)知識(shí)ICMP報(bào)文分析一.概述:1. ICMP允許主機(jī)或路
2、由報(bào)告差錯(cuò)情況和提供有關(guān)異常情況。ICMP是因特網(wǎng)的標(biāo)準(zhǔn)協(xié)議,但I(xiàn)CMP不是高層協(xié)議,而是IP層的協(xié)議。通常ICMP報(bào)文被IP層或更高層協(xié)議(TCP或UDP)使用。一些ICMP報(bào)文把差錯(cuò)報(bào)文返回給用戶進(jìn)程。2. ICMP報(bào)文作為IP層數(shù)據(jù)報(bào)的數(shù)據(jù),加上數(shù)據(jù)報(bào)的首部,組成數(shù)據(jù)報(bào)發(fā)送出去。3. ICMP報(bào)文的種類有兩種,即ICMP差錯(cuò)報(bào)告報(bào)文和ICMP詢問(wèn)報(bào)文。二.ICMP報(bào)文的格式1. 類型:占8位2. 代碼:占8位3. 檢驗(yàn)和
3、:占16位說(shuō)明:ICMP所有報(bào)文的前4個(gè)字節(jié)都是一樣的,但是剩下的其他字節(jié)則互不相同。4. 其它字段都ICMP報(bào)文類型不同而不同。1> ICMP報(bào)文的前4個(gè)字節(jié)是統(tǒng)一的格式,共有三個(gè)字段:即類型,代碼和檢驗(yàn)和。2> 8位類型和8位代碼字段一起決定了ICMP報(bào)文的類型。類型8,代碼0:表示回顯請(qǐng)求(ping請(qǐng)求)。類型0,代碼0:表示回顯應(yīng)答(ping應(yīng)答)類型11,代碼0:超時(shí)3>16位的檢驗(yàn)和字段:包括數(shù)據(jù)在內(nèi)的整個(gè)ICMP數(shù)據(jù)包的檢驗(yàn)和;其計(jì)算方法和IP頭部檢驗(yàn)和的計(jì)算方法一樣的。ICMP報(bào)文具體分為查詢報(bào)文和差錯(cuò)
4、報(bào)文(對(duì)ICMP差錯(cuò)報(bào)文有時(shí)需要做特殊處理,因此要對(duì)其進(jìn)行區(qū)分。如:對(duì)ICMP差錯(cuò)報(bào)文進(jìn)行響應(yīng)時(shí),永遠(yuǎn)不會(huì)生成另一份ICMP差錯(cuò)報(bào)文,否則會(huì)出現(xiàn)死循環(huán))三.ICMP差錯(cuò)報(bào)文(56字節(jié))1. ICMP差錯(cuò)報(bào)告報(bào)文共有5種1> 終點(diǎn)不可達(dá):終點(diǎn)不可達(dá)分為:網(wǎng)絡(luò)不可達(dá),主機(jī)不可達(dá),協(xié)議不可達(dá),端口不可達(dá),需要分片但DF比特已置為1,以及源路由失敗等六種情況,其代碼字段分別置為0至5。當(dāng)出現(xiàn)以上六種情況時(shí)就向源站發(fā)送終點(diǎn)不可達(dá)報(bào)文。說(shuō)明:端口不可達(dá):UDP的規(guī)則之一是:如果收到UDP數(shù)據(jù)報(bào)而且目的端口與某個(gè)正在使用的進(jìn)程不相符,那么UDP返回一個(gè)IC
5、MP不可達(dá)報(bào)文。2> 源站抑制:當(dāng)路由器或主機(jī)由于擁塞而丟棄數(shù)據(jù)報(bào)時(shí),就向源站發(fā)送源站抑制報(bào)文,使源站知道應(yīng)當(dāng)將數(shù)據(jù)報(bào)的發(fā)送速率放慢。3> 時(shí)間超過(guò):當(dāng)路由器收到生存時(shí)間為零的數(shù)據(jù)報(bào)時(shí),除丟棄該數(shù)據(jù)報(bào)外,還要向源站發(fā)送時(shí)間超過(guò)報(bào)文。當(dāng)目的站在預(yù)先規(guī)定的時(shí)間內(nèi)不能收到一個(gè)數(shù)據(jù)報(bào)的全部數(shù)據(jù)報(bào)片時(shí),就將已收到的數(shù)據(jù)報(bào)片都丟棄,并向源站發(fā)送時(shí)間超過(guò)報(bào)文。4> 參數(shù)問(wèn)題:當(dāng)路由器或目的主機(jī)收到的數(shù)據(jù)報(bào)的首部中的字段的值不正確時(shí),就丟棄該數(shù)據(jù)報(bào),并向源站發(fā)送參數(shù)問(wèn)題報(bào)文。5> 改變路由(重定向)路由器將改變路由報(bào)文發(fā)送給主機(jī),讓主機(jī)知
6、道下次應(yīng)將數(shù)據(jù)報(bào)發(fā)送給另外的路由器。說(shuō)明:以下幾種情況都不會(huì)導(dǎo)致產(chǎn)生ICMP差錯(cuò)報(bào)文1>ICMP差錯(cuò)報(bào)文(但是,ICMP查詢報(bào)文可能會(huì)產(chǎn)生ICMP差錯(cuò)報(bào)文)2>目的地址是廣播地址或多播地址的IP數(shù)據(jù)報(bào)3>作為鏈路層廣播的數(shù)據(jù)報(bào)4>不是IP分片的第一片5>源地址不是單個(gè)主機(jī)的數(shù)據(jù)報(bào)。即源地址不能為零地址、環(huán)回地址、廣播地址或多播地址。這些規(guī)則是為了防止過(guò)去允許ICMP差錯(cuò)報(bào)文對(duì)廣播分組響應(yīng)所帶來(lái)的廣播風(fēng)暴。2.所有的ICMP差錯(cuò)報(bào)告報(bào)文中的數(shù)據(jù)字段都具有同樣的格式。將收到的需要進(jìn)行差錯(cuò)報(bào)告IP數(shù)據(jù)報(bào)的首部和數(shù)據(jù)字段的前8個(gè)字節(jié)提取出來(lái),作為ICMP報(bào)文的數(shù)據(jù)字段。再
7、加上響應(yīng)的ICMP差錯(cuò)報(bào)告報(bào)文的前8個(gè)字節(jié),就構(gòu)成了ICMP差錯(cuò)報(bào)告報(bào)文。提取收到的數(shù)據(jù)報(bào)的數(shù)據(jù)字段的前8個(gè)字節(jié)是為了得到運(yùn)輸層的端口號(hào)(對(duì)于TCP和UDP)以及運(yùn)輸層報(bào)文的發(fā)送序號(hào)(對(duì)于TCP)。注:一下情況不發(fā)送ICMP差錯(cuò)報(bào)告報(bào)文四.ICMP詢問(wèn)報(bào)文(40字節(jié))1.ICMP詢問(wèn)報(bào)文有四種回送請(qǐng)求和回答,時(shí)間戳請(qǐng)求和回答,掩碼地址請(qǐng)求和回答,以及路由器詢問(wèn)和通過(guò)。1>ICMP回送請(qǐng)求報(bào)文是由主機(jī)或路由器向一個(gè)特定的目的主機(jī)發(fā)出的詢問(wèn)。收到此報(bào)文的機(jī)器必須給源主機(jī)發(fā)送ICMP回送應(yīng)答報(bào)文。這種詢問(wèn)報(bào)文用來(lái)測(cè)試目的站是否可達(dá)以及了解其有關(guān)狀態(tài)。2>ICMP時(shí)間戳請(qǐng)求允許系統(tǒng)向另一個(gè)
8、系統(tǒng)查詢當(dāng)前的時(shí)間。該ICMP報(bào)文的好處是它提供了毫秒級(jí)的分辨率,而利用其他方法從別的主機(jī)獲取的時(shí)間只能提供秒級(jí)的分辨率。請(qǐng)求端填寫發(fā)起時(shí)間,然后發(fā)送報(bào)文。應(yīng)答系統(tǒng)收到請(qǐng)求報(bào)文時(shí)填寫接收時(shí)間戳,在發(fā)送應(yīng)答時(shí)填寫發(fā)送時(shí)間戳。大多數(shù)的實(shí)現(xiàn)是把后面兩個(gè)字段都設(shè)成相同的值。3>主機(jī)使用ICMP地址掩碼請(qǐng)求報(bào)文可向子網(wǎng)掩碼服務(wù)器得到某個(gè)接口的地址掩碼。系統(tǒng)廣播它的ICMP請(qǐng)求報(bào)文。ICMP報(bào)文中的標(biāo)識(shí)符和序列號(hào)字段由發(fā)送端任意選擇設(shè)定,這些值在應(yīng)答中將被返回,這樣,發(fā)送端就可以把應(yīng)答與請(qǐng)求進(jìn)行匹配。4>主機(jī)使用ICMP路由器詢問(wèn)和通過(guò)報(bào)文可了解連接在本網(wǎng)絡(luò)上的路由器是否正常工作。主機(jī)將路由器
9、詢問(wèn)報(bào)文進(jìn)行廣播(或多播)。收到詢問(wèn)報(bào)文的一個(gè)或幾個(gè)路由器就使用路由器通過(guò)報(bào)文廣播其路由選擇信息4、實(shí)現(xiàn)原理及流程圖實(shí)現(xiàn)原理:/定義IP首部格式typedef struct _IPHeader u_char VIHL; /版本和首部長(zhǎng)度u_char ToS; /服務(wù)類型u_short TotalLen; /總長(zhǎng)度u_short ID; /標(biāo)識(shí)號(hào)u_short Frag_Flags; /片偏移量u_char TTL; /生存時(shí)間u_char Protocol; /協(xié)議u_short Checksum; /首部校驗(yàn)和struct in_addr SrcIP; /源IP地址struct in_add
10、r DestIP; /目的地址IPHDR, *PIPHDR;/定義ICMP首部格式typedef struct _ICMPHeader u_char Type; /類型u_char Code; /代碼u_short Checksum; /首部校驗(yàn)和u_short ID; /標(biāo)識(shí)u_short Seq; /序列號(hào)char Data; /數(shù)據(jù)ICMPHDR, *PICMPHDR;/定義ICMP回應(yīng)請(qǐng)求typedef struct _ECHOREQUEST ICMPHDR icmpHdr;DWORD dwTime;char cDataREQ_DATASIZE;ECHOREQUEST, *PECHOR
11、EQUEST;/定義ICMP回應(yīng)答復(fù)typedef struct _ECHOREPLY IPHDR ipHdr;ECHOREQUEST echoRequest;char cFiller256;ECHOREPLY, *PECHOREPLY;/計(jì)算校驗(yàn)和u_short checksum(u_short *buffer, int len) register int nleft = len;register u_short *w = buffer;register u_short answer;register int sum = 0;/使用32位累加器,進(jìn)行16位的反饋計(jì)算while (nleft
12、> 1) sum += *w+;nleft -= 2;/補(bǔ)全奇數(shù)位if (nleft = 1) u_short u = 0;*(u_char *)(&u) = *(u_char*)w;sum += u;/將反饋的16位從高位移到低位sum = (sum >> 16) + (sum & 0xffff);sum += (sum >> 16);answer = sum;return (answer);/發(fā)送回應(yīng)請(qǐng)求函數(shù)int SendEchoRequest(SOCKET s, struct sockaddr_in *lpstToAddr) static
13、ECHOREQUEST echoReq;static int nId = 1;static int nSeq = 1;int nRet;/填充回應(yīng)請(qǐng)求消息echoReq.icmpHdr.Type = ICMP_ECHOREQ;echoReq.icmpHdr.Code = 0;echoReq.icmpHdr.Checksum = 0;echoReq.icmpHdr.ID = nId+;echoReq.icmpHdr.Seq = nSeq+;/填充要發(fā)送的數(shù)據(jù)for (nRet = 0; nRet < REQ_DATASIZE; nRet+) echoReq.cDatanRet = '1' + nRet;/存儲(chǔ)發(fā)送的時(shí)間echoReq.dwTime = timeGetTime();/計(jì)算回應(yīng)請(qǐng)求的校驗(yàn)和echoReq.icmpHdr.Checksum = checksum(u_short*)&echoReq, sizeof(ECHOREQUEST);/發(fā)送回應(yīng)請(qǐng)求nRet = sendto(s, (LPSTR)&echoReq, sizeof(ECHOREQUEST),0, (struct sockaddr*)lpstToAdd
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 項(xiàng)目經(jīng)理職業(yè)導(dǎo)則課件
- 項(xiàng)目工程管理培訓(xùn)課件
- 音樂(lè)說(shuō)課課件代做方法
- 市政污水管網(wǎng)改造項(xiàng)目質(zhì)量管理方案
- 汽車配套產(chǎn)業(yè)基地項(xiàng)目招商引資報(bào)告
- 五年級(jí)音樂(lè)下冊(cè)全冊(cè)教案(湘教版)
- 無(wú)錫某中學(xué)中考二模語(yǔ)文試卷(圖片版無(wú)答案)
- 2025年高壓化成箔項(xiàng)目發(fā)展計(jì)劃
- 現(xiàn)代生物技術(shù)概論教案-明東風(fēng)
- 五年級(jí)上冊(cè)心理教案 (一)
- 醫(yī)學(xué)臨床“三基”訓(xùn)練-護(hù)士分冊(cè)-自測(cè)及答案
- 智能樂(lè)器演奏輔助系統(tǒng)-全面剖析
- 第30課 在線安全防范-2024-2025學(xué)年三年級(jí)全一冊(cè)《信息技術(shù)》教案
- 《精密電子天平使用教程》課件
- 液壓與氣壓傳動(dòng)技術(shù) 第四版 課件 任務(wù)三 Q2-8型汽車起重機(jī)液壓系統(tǒng)分析
- 礦泉水行業(yè)面臨的挑戰(zhàn)與風(fēng)險(xiǎn)
- 2025年上半年云南文山州州屬事業(yè)單位選調(diào)工作人員112人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年浙教新版八年級(jí)地理下冊(cè)階段測(cè)試試卷
- 鋼結(jié)構(gòu)管廊施工組織設(shè)計(jì)
- 尾礦庫(kù)在線監(jiān)測(cè)施工方案
- GB/T 45092-2024電解水制氫用電極性能測(cè)試與評(píng)價(jià)
評(píng)論
0/150
提交評(píng)論