




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、长春大学计算机学院网络工程专业 TCP/IP协议 实验报告备注:实验包括基本技能、进阶技能和创新技能,如果没有创新技能方案则最高分为90分,实验名称:实验三 ICMP协议分析与设计班 级:网络五班姓 名:董迎顺学 号:041440516实验地点:机房日 期:2015-11-25一、实验目的:1掌握使用Ethereal工具对ICMP协议进行抓包分析的方法。 2理解不同类型ICMP报文的具体意义。3通过实验,进一步了解ICMP协议。二、基本技能实验内容、要求和环境:【实验环境】1安装Windows2000/2003Server/XP操作系统的PC计算机一台。2每台PC具有一块以太网卡,通过双绞线与
2、局域网相连。3每台PC运行网络协议分析软件Ethereal或Wireshark。【实验内容】 1、分析ping程序使用的ICMP信息包启动Ethereal协议分析工具,选择“Capture”“Start”,开始数据包的抓取,接下来点击“开始”菜单,在运行中输入“cmd”,进入Windows系统的命令行模式,在命令行模式下输入“ping n 10 目标IP地址”,ping结束后,停止Ethereal抓包程序,并在Ethereal中的“Filter”域中输入关键字“ICMP”,点击“Apply”按钮,将非ICMP数据包过滤掉。在中间窗口的“Internet Protocol”中可以看到,协议号为0
3、1,表明是一个ICMP格式的数据包。查看数据包内容窗口中的“Internet Control Message Protocol”,可以看到该ICMP数据包的协议类型为8(Type 8),代码为0(Code 0),表明是一个ICMP请求(Request)数据包。请注意其他字段“Identifier”,“Sequence number”和“Data”的内容。分析查看这些ICMP协议数据包,回答以下问题:(1)本机的IP地址是多少?目标主机的IP地址是多少?(2)为什么ICMP协议数据包没有源端口号和目的端口号?(3)查看本机发送的每个Request数据包,回答这些ICMP数据包的类型号(Type)
4、和代码(Code)是多少?这些ICMP数据包中的其他字段有哪些?“Checksum”、“Sequence”和“Identifier”字段分别占多少字节?(4)查看回复的Reply数据包,它们的类型号(Type)和代码(Code)是多少?这些ICMP数据包中还有其他哪些字段?“Checksum”、“Sequence”和“Identifier”字段分别占多少字节 2、分析traceroute程序使用的ICMP信息包启动Ethereal协议分析工具,选择“Capture”“Start”,开始抓取数据包。然后点击“开始”菜单,在运行中输入“cmd”,进入Windows系统的命令行模式,在命令行模式下输
5、入“tracert 某域名”, tracert命令结束后,停止Ethereal抓包程序,并在Ethereal中的“Filter”域中输入关键字“ICMP”,点击“Apply”按钮,将非ICMP数据包过滤掉。分析查看这些ICMP协议数据包,回答以下问题:(1)本机的IP地址是多少?目标主机的IP地址是多少? (2)查看echo数据包,与ping所使用的ICMP包比较一下,看看是否相同,有什么区别?【实验指导】ICMP是Internet Control Message Protocol(Internet控制报文协议)的缩写,是TCP/IP协议族的一个子协议,用于在主机和路由器之间传递控制消息。控制
6、消息是指网络通不通、主机是否可达、路由器是否可用等网络本身的消息。由于IP网络的不可靠并且不能保证信息传递,因此当发生问题时,通知发送者是很重要的。ICMP协议提供有关阻止数据包传递的网络故障问题反馈信息的机制,它让TCP等上层协议能够意识到数据包没有送达目的地,ICMP协议提供一种查出灾难性问题的方法。这些灾难性的问题包括“TTL Exceeded”(超过生存时间)和“需要分更多的数据段”等。ICMP协议不报告IP校验失败等常见的问题。这是因为假定TCP或者其他可靠的协议能够处理这类数据包损坏的问题。而且,如果使用UDP等不可靠的协议,我们就不应理会较小数量的数据损失。反之,如果网络有问题则
7、需要立即报告。例如,当IP的TTL值(IP生存时间)将达到零,这就可能是网络的某个部分发生了路由环路问题,这样将没有任何数据包能发送到目的地。端点系统需要了解这些类型的故障。ICMP是一种发送各种消息,用于报告网络状态的协议,而非仅仅是简单的ping(连通性测试程序)。回应请求(Echo Request)仅是ICMP协议提供的众多消息之一。Ping信息可以被过滤掉。但是,大多数ICMP消息类型是IP、TCP和其他协议正常运行所需要的。ICMP协议本身非常复杂。每一种类型的ICMP消息也称“主要类型(Major Type)”,它拥有自己的“子类型编码(Minor Codes)”。ICMP协议工作
8、在第3层,因此,它能够在互联网上路由。一个ICMP数据包实际上就是一个IP数据部分包含ICMP协议数据的IP数据包。每一个ICMP消息都将包含引发这条ICMP消息的数据包的完全IP包头,这样端点系统就会知道实际上哪一个数据包没有发送到目的地。ICMP协议消息包含不会变化的3个字段,随后是ICMP数据,然后是引发此消息的源IP数据包包头。不会变化的3个字段中,第1个字段包含ICMP类型(主要类型)、第2个字段包含了类型代码、第3个字段是ICMP消息校验值。ICMP协议在某些情况下不会发送错误信息。ICMP不会对ICMP信息做出响应。如果ICMP回应其他ICMP消息,这些消息的数量会爆炸性增长而演
9、变为一场ICMP消息风暴。为了防止出现广播风暴,ICMP消息也不会回应一个广播或者多播地址。 各种ICMP的报文格式如下: 目的不可达报文 类型:3代码:0至12检验和未使用(全0)收到的IP数据报的一部分,包括IP首部以及数据报数据的前8个字节 源端抑制报文 类型:4代码:0检验和未使用(全0)收到的IP数据报的一部分,包括IP首部以及数据报数据的前8个字节 超时报文 类型:11代码:0或1检验和未使用(全0)收到的IP数据报的一部分,包括IP首部以及数据报数据的前8个字节 参数问题 类型:12代码:0或1检验和指针未使用(全0)收到的IP数据报的一部分,包括IP首部以及数据报数据的前8个字
10、节 改变路由 类型:5代码:0到3检验和目标路由器IP地址收到的IP数据报的一部分,包括IP首部以及数据报数据的前8个字节 回送请求和回答 类型:8或0代码:0检验和标识符序号由请求报文发送;由回答报文重复 时间戳请求和回答 类型:13或14代码:0检验和标识符序号原始时间戳接收时间戳发送时间戳 地址掩码请求和回答 类型:17或18代码:0检验和标识符序号地址掩码 路由询问和通告 类型:10代码:0检验和标识符序号类型:9代码:0检验和地址数地址项目长度寿命路由器地址1优先级1路由器地址2优先级2.三、基本技能实验结果与分析:1(1) 在cmd中输入ipconfig查看本机ip 目标主机ip通
11、过ping命令看是否能ping通(2)ICMP是:Internet 控制信息协议(ICMP)是 IP 组的一个整合部分。通过 IP 包传送的 ICMP 信息主要用于涉及网络操作或错误操作的不可达信息。 ICMP 包发送是不可靠的,所以主机不能依靠接收 ICMP 包解决任何网络问题。ICMP不象TCP或UDP有端口,但它确实含有两个域:类型(type)和代码(code)。而且这些域的作用和端口也完全不同。Ping用到的是ICMP协议。不是端口。(3)在cmd中 输入ping 在wireshark中抓取icmp数据包随便找一个icmp的request包分析一下可以看见ICMP数据包的协议类型为8(
12、Type 8),字节为1bit;代码为0(Code 0),字节为1bit;表明是一个ICMP请求(Request)数据包。 “Identifier”为0x0001 ,字节为2bit。“Sequence number”为15(0x000f),字节为2bit;“Data”的为32bit的长度(4)查看回复的Reply数据包可以看见type类型是8,字节为bit。Code为0;表明是一个ICMP reply数据包;identifier为0x0001,字节为2bit ,Sequence number”为11(0x000b),字节为2bit;“Data”的为32bit的长度。其他字段:checksum:
13、0x5550;sequence number(le)2(1) 在cmd中输入ipconfig 显示本机的ip地址是192.168.31.113目标主机的IP地址是119.75.217.109(百度)(2)在命令行模式下输入“tracert 某域名”,在wieshark中抓icmp查看echo数据包四、进阶技能的任务与要求 设计一个程序,实现类似ping命令的功能。5、 进阶技能的规划设计与步骤 #include#include#pragma comment(lib,ws2_32.lib)#include/#include/定义一个结构体,来表示ICMP报文的头。typedef struct i
14、cmp_headunsigned char icmp_type;/消息类型unsigned char icmp_code;/代码unsigned short icmp_checksum; /校验和DWORD icmp_id; /请求id号,进程号DWORD icmp_sequence; /序列号DWORD icmp_timestamp; /时间戳ICMP_HEAD, *PICMP_HEAD;/计算校验和的通用算法unsigned short checksum(PICMP_HEAD picmp, int leng)long sum = 0;unsigned short *pusIcmp = (u
15、nsigned short *)picmp;while (leng 1)sum += *(pusIcmp+);if (sum & 0x8000000)sum = (sum & 0xffff) + (sum 16);leng -= 2;if (leng)sum += *(unsigned char *)pusIcmp;while (sum 16)sum = (sum & 0xffff) + (sum 16);return (unsigned short)sum; /取反int main(int argc, char *argv)WSADATA wsaData;SOCKET client; /原始
16、套接字SOCKADDR_IN destAddr;struct hostent * host = NULL;int nTimeOut = 1000;char szSendBuffersizeof(ICMP_HEAD) + 32 = 0 ; /定义ICMP报文的发送缓冲区char szRecvBuffer1024;PICMP_HEAD picmp = (PICMP_HEAD)szSendBuffer;/PICMP指向发送缓冲区if (argc h_addr);destAddr.sin_port = htons(0);/ICMP报文的封装/ICMP_HEAD封装picmp-icmp_type = 8
17、;picmp-icmp_code = 0;picmp-icmp_checksum = 0;picmp-icmp_id = GetCurrentProcessId();/封装数据memcpy(szSendBuffer + sizeof(ICMP_HEAD), AQWERTYUIOPPASDFGHJKLZXCVBNM, 32);/计算校验和picmp-icmp_checksum = checksum(PICMP_HEAD)szSendBuffer, sizeof(szSendBuffer);/向目标主机发送ICMP报文并接受回射ICMP报文struct sockaddr_in fromAddr;i
18、nt sizeFrom = sizeof(SOCKADDR_IN);memset(szRecvBuffer, 0, 1023);/向目标主机发送ICMP报文int sendBytes = sendto(client, szSendBuffer, sizeof(szSendBuffer), 0, (SOCKADDR *)&destAddr, sizeof(destAddr);if (sendBytes = SOCKET_ERROR)printf(发送错误:错误代码%dn, WSAGetLastError();system(pause);return 1;elseprintf(发送ICMP报文成功
19、!发送的字节数:%dn, sendBytes);/从目标主机接收回射的ICMP报文int reciveBytes = recvfrom(client, szRecvBuffer, sizeof(szRecvBuffer), 0, (SOCKADDR *)&fromAddr, &sizeFrom);if (reciveBytes = SOCKET_ERROR)printf(接收错误:错误码%dn, WSAGetLastError();system(pause);return 1;elseprintf(接收成功!收到的字节数:%dn, reciveBytes);PICMP_HEAD PTEMP =
20、 (PICMP_HEAD)szRecvBuffer + 20;/跳过报文的ip头部DWORD t2 = GetTickCount();int time = t2 - picmp-icmp_timestamp;/经过的时间int datalen = reciveBytes - 20 - sizeof(ICMP_HEAD);/发送的字节数if (strcmp(inet_ntoa(fromAddr.sin_addr), inet_ntoa(destAddr.sin_addr) = 0)/保持地址一致printf(来自%s的回复:字节=%d 时间=%d msn, inet_ntoa(destAddr.sin_addr), datalen, time);system(pause);retur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 夫妻忠诚保障与情感补偿协议
- 商业地产项目全产业链招商运营与品牌孵化合作协议
- 宠物美容院品牌合作、专业技术培训、设备采购与品牌授权协议
- 知识产权改编作品收益分成权益补充协议
- 电动跑车全面升级维护及保养合同
- 宠物领养及长期抚养费用保障协议
- 企业员工股权激励与公司社会责任履行协议
- DB42-T 2025-2023 马铃薯-玉米-大豆复合种植模式技术规程
- 2023年软件测试基础期末试卷及参考答案
- 高一历史备课组期末工作总结模版
- 利用热释光剂量探测器测量射线剂量
- 大病历模板-住院病历
- GB/T 602-2002化学试剂杂质测定用标准溶液的制备
- GB/T 18657.1-2002远动设备及系统第5部分:传输规约第1篇:传输帧格式
- GB/T 15608-2006中国颜色体系
- GB/T 14315-2008电力电缆导体用压接型铜、铝接线端子和连接管
- 中考语文二轮专题复习:散文和小说阅读
- 【人卫九版内分泌科】第十一章-甲状腺功能减退症课件
- 护理人员业务技术档案 模板
- 金融监管学-金融监管学课件
- 语文一年级上册:拼音9《y-w》ppt教学课件
评论
0/150
提交评论