




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 西北工業(yè)大學<<計算機網(wǎng)絡原理>> project專用紙 No8題目:發(fā)送icmp echo請求姓名: 學號 班號: 時間:2016/11/16計算機學院時間:2016/11/16目 錄摘 要1 目的12 要求13相關(guān)知識14實現(xiàn)原理及流程圖錯誤!未定義書簽。5程序代碼76運行結(jié)果與分析77參考文獻15題目:發(fā)送icmp echo請求1、 目的 理解ICMP協(xié)議完成的功能,了解ICMP報文格式,理解Ping程序的工作原理。2、要求針對某個主機發(fā)送ICMP echo報文。2、 相關(guān)知識ICMP報文分析一.概述:1. ICMP允許主機或路
2、由報告差錯情況和提供有關(guān)異常情況。ICMP是因特網(wǎng)的標準協(xié)議,但ICMP不是高層協(xié)議,而是IP層的協(xié)議。通常ICMP報文被IP層或更高層協(xié)議(TCP或UDP)使用。一些ICMP報文把差錯報文返回給用戶進程。2. ICMP報文作為IP層數(shù)據(jù)報的數(shù)據(jù),加上數(shù)據(jù)報的首部,組成數(shù)據(jù)報發(fā)送出去。3. ICMP報文的種類有兩種,即ICMP差錯報告報文和ICMP詢問報文。二.ICMP報文的格式1. 類型:占8位2. 代碼:占8位3. 檢驗和
3、:占16位說明:ICMP所有報文的前4個字節(jié)都是一樣的,但是剩下的其他字節(jié)則互不相同。4. 其它字段都ICMP報文類型不同而不同。1> ICMP報文的前4個字節(jié)是統(tǒng)一的格式,共有三個字段:即類型,代碼和檢驗和。2> 8位類型和8位代碼字段一起決定了ICMP報文的類型。類型8,代碼0:表示回顯請求(ping請求)。類型0,代碼0:表示回顯應答(ping應答)類型11,代碼0:超時3>16位的檢驗和字段:包括數(shù)據(jù)在內(nèi)的整個ICMP數(shù)據(jù)包的檢驗和;其計算方法和IP頭部檢驗和的計算方法一樣的。ICMP報文具體分為查詢報文和差錯
4、報文(對ICMP差錯報文有時需要做特殊處理,因此要對其進行區(qū)分。如:對ICMP差錯報文進行響應時,永遠不會生成另一份ICMP差錯報文,否則會出現(xiàn)死循環(huán))三.ICMP差錯報文(56字節(jié))1. ICMP差錯報告報文共有5種1> 終點不可達:終點不可達分為:網(wǎng)絡不可達,主機不可達,協(xié)議不可達,端口不可達,需要分片但DF比特已置為1,以及源路由失敗等六種情況,其代碼字段分別置為0至5。當出現(xiàn)以上六種情況時就向源站發(fā)送終點不可達報文。說明:端口不可達:UDP的規(guī)則之一是:如果收到UDP數(shù)據(jù)報而且目的端口與某個正在使用的進程不相符,那么UDP返回一個IC
5、MP不可達報文。2> 源站抑制:當路由器或主機由于擁塞而丟棄數(shù)據(jù)報時,就向源站發(fā)送源站抑制報文,使源站知道應當將數(shù)據(jù)報的發(fā)送速率放慢。3> 時間超過:當路由器收到生存時間為零的數(shù)據(jù)報時,除丟棄該數(shù)據(jù)報外,還要向源站發(fā)送時間超過報文。當目的站在預先規(guī)定的時間內(nèi)不能收到一個數(shù)據(jù)報的全部數(shù)據(jù)報片時,就將已收到的數(shù)據(jù)報片都丟棄,并向源站發(fā)送時間超過報文。4> 參數(shù)問題:當路由器或目的主機收到的數(shù)據(jù)報的首部中的字段的值不正確時,就丟棄該數(shù)據(jù)報,并向源站發(fā)送參數(shù)問題報文。5> 改變路由(重定向)路由器將改變路由報文發(fā)送給主機,讓主機知
6、道下次應將數(shù)據(jù)報發(fā)送給另外的路由器。說明:以下幾種情況都不會導致產(chǎn)生ICMP差錯報文1>ICMP差錯報文(但是,ICMP查詢報文可能會產(chǎn)生ICMP差錯報文)2>目的地址是廣播地址或多播地址的IP數(shù)據(jù)報3>作為鏈路層廣播的數(shù)據(jù)報4>不是IP分片的第一片5>源地址不是單個主機的數(shù)據(jù)報。即源地址不能為零地址、環(huán)回地址、廣播地址或多播地址。這些規(guī)則是為了防止過去允許ICMP差錯報文對廣播分組響應所帶來的廣播風暴。2.所有的ICMP差錯報告報文中的數(shù)據(jù)字段都具有同樣的格式。將收到的需要進行差錯報告IP數(shù)據(jù)報的首部和數(shù)據(jù)字段的前8個字節(jié)提取出來,作為ICMP報文的數(shù)據(jù)字段。再
7、加上響應的ICMP差錯報告報文的前8個字節(jié),就構(gòu)成了ICMP差錯報告報文。提取收到的數(shù)據(jù)報的數(shù)據(jù)字段的前8個字節(jié)是為了得到運輸層的端口號(對于TCP和UDP)以及運輸層報文的發(fā)送序號(對于TCP)。注:一下情況不發(fā)送ICMP差錯報告報文四.ICMP詢問報文(40字節(jié))1.ICMP詢問報文有四種回送請求和回答,時間戳請求和回答,掩碼地址請求和回答,以及路由器詢問和通過。1>ICMP回送請求報文是由主機或路由器向一個特定的目的主機發(fā)出的詢問。收到此報文的機器必須給源主機發(fā)送ICMP回送應答報文。這種詢問報文用來測試目的站是否可達以及了解其有關(guān)狀態(tài)。2>ICMP時間戳請求允許系統(tǒng)向另一個
8、系統(tǒng)查詢當前的時間。該ICMP報文的好處是它提供了毫秒級的分辨率,而利用其他方法從別的主機獲取的時間只能提供秒級的分辨率。請求端填寫發(fā)起時間,然后發(fā)送報文。應答系統(tǒng)收到請求報文時填寫接收時間戳,在發(fā)送應答時填寫發(fā)送時間戳。大多數(shù)的實現(xiàn)是把后面兩個字段都設成相同的值。3>主機使用ICMP地址掩碼請求報文可向子網(wǎng)掩碼服務器得到某個接口的地址掩碼。系統(tǒng)廣播它的ICMP請求報文。ICMP報文中的標識符和序列號字段由發(fā)送端任意選擇設定,這些值在應答中將被返回,這樣,發(fā)送端就可以把應答與請求進行匹配。4>主機使用ICMP路由器詢問和通過報文可了解連接在本網(wǎng)絡上的路由器是否正常工作。主機將路由器
9、詢問報文進行廣播(或多播)。收到詢問報文的一個或幾個路由器就使用路由器通過報文廣播其路由選擇信息4、實現(xiàn)原理及流程圖實現(xiàn)原理:/定義IP首部格式typedef struct _IPHeader u_char VIHL; /版本和首部長度u_char ToS; /服務類型u_short TotalLen; /總長度u_short ID; /標識號u_short Frag_Flags; /片偏移量u_char TTL; /生存時間u_char Protocol; /協(xié)議u_short Checksum; /首部校驗和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; /首部校驗和u_short ID; /標識u_short Seq; /序列號char Data; /數(shù)據(jù)ICMPHDR, *PICMPHDR;/定義ICMP回應請求typedef struct _ECHOREQUEST ICMPHDR icmpHdr;DWORD dwTime;char cDataREQ_DATASIZE;ECHOREQUEST, *PECHOR
11、EQUEST;/定義ICMP回應答復typedef struct _ECHOREPLY IPHDR ipHdr;ECHOREQUEST echoRequest;char cFiller256;ECHOREPLY, *PECHOREPLY;/計算校驗和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位累加器,進行16位的反饋計算while (nleft
12、> 1) sum += *w+;nleft -= 2;/補全奇數(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ā)送回應請求函數(shù)int SendEchoRequest(SOCKET s, struct sockaddr_in *lpstToAddr) static
13、ECHOREQUEST echoReq;static int nId = 1;static int nSeq = 1;int nRet;/填充回應請求消息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;/存儲發(fā)送的時間echoReq.dwTime = timeGetTime();/計算回應請求的校驗和echoReq.icmpHdr.Checksum = checksum(u_short*)&echoReq, sizeof(ECHOREQUEST);/發(fā)送回應請求nRet = sendto(s, (LPSTR)&echoReq, sizeof(ECHOREQUEST),0, (struct sockaddr*)lpstToAdd
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年南京審計大學輔導員考試真題
- 2024年婁底雙峰縣林業(yè)局所屬事業(yè)單位選調(diào)真題
- 培養(yǎng)學生合作精神的計劃
- 2025屆廣東省廣州市廣州大附中數(shù)學八下期末考試試題含解析
- 明確職責與任務分配計劃
- 2024年北京市自來水集團招聘筆試真題
- 面對失敗的心態(tài)與反思2024年高考作文試題及答案
- 黑龍江省雞西市虎林市八五八農(nóng)場學校2025年八年級數(shù)學第二學期期末檢測模擬試題含解析
- 業(yè)務連續(xù)性與戰(zhàn)略風險試題及答案
- 安徽省六安市名校2025屆七年級數(shù)學第二學期期末復習檢測模擬試題含解析
- 屋面工程防水施工技術(shù)PPT課件(附圖豐富)
- 農(nóng)業(yè)概論試題及答案
- (完整版)馬克思主義基本原理概論知識點
- 良性陣發(fā)性位置性眩暈完整版本課件
- 液壓系統(tǒng)故障診斷分析課件
- “安全月”安全生產(chǎn)知識競賽參賽隊伍報名表
- 老化箱點檢表A4版本
- 超高性能混凝土研究進展及工程應用199頁PPT_ppt
- 視覺心理學(全套400頁PPT課件)
- 設計學概論設計批評課件
- 員工領(lǐng)用勞保用品表格
評論
0/150
提交評論