网络使用ICMP发现局域网内活动主机

上传人:飞*** 文档编号:42001046 上传时间:2018-05-31 格式:PDF 页数:16 大小:138.41KB
返回 下载 相关 举报
网络使用ICMP发现局域网内活动主机_第1页
第1页 / 共16页
网络使用ICMP发现局域网内活动主机_第2页
第2页 / 共16页
网络使用ICMP发现局域网内活动主机_第3页
第3页 / 共16页
网络使用ICMP发现局域网内活动主机_第4页
第4页 / 共16页
网络使用ICMP发现局域网内活动主机_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《网络使用ICMP发现局域网内活动主机》由会员分享,可在线阅读,更多相关《网络使用ICMP发现局域网内活动主机(16页珍藏版)》请在金锄头文库上搜索。

1、天津师范大学Tianjin University of Education 网络课程设计所在学院:信息技术工程学院专业:计算机科学与技术学号:学生姓名:指导教师:二一三年六月信息技术工程学院网络课程设计使用 ICMP发现局域网内活动主机学生姓名:肖磊指导教师:黄彦副教授20 13 年 6 月摘 要本程序使用原始套接字生成ICMP报文来进行活动主机的探查。这个程序使用的是回送请求与应答消息。程序的大致思想是把ICMP的数据包类型设置为回送请求,将它发送给网络上的一个IP 地址,如果这个 IP 地址已经被占用的话, 那幺使用位于这个 IP 地址的主机上的TCP/IP 软件就能够接收到这个ICMP回

2、送请求,从而返回一个 ICMP回送响应(类型号为0)信息。信息封装在一个IP 包中,我们需要解析该IP包,从中找到 ICMP数据信息。相反,如果这个 IP 地址没有人使用, 那幺发送的 ICMP回送请求在设定的延时内就不可能得到响应。在初始化原始套接字之后,本程序就要开始在一个IP 网段内寻找活动主机。因为要寻找的主机可能很多,为节省时间可以采用多线程编程。关键词 : ICMP 协议, Visual c+ 6.0目录引言. 11 课程设计相关技术 . 21.1 ICMP 报文格式及类型 . 21.2 实验平台介绍 . 42.1 使用原始套接字 . 42.2 定义 IP 头部和 ICMP 头部的

3、数据结构 . 52.3 填充并发送回送请求类型的ICMP 报文 . 62.4 程序流程图 . 8结论 . 10参考文献 . 11致谢 . 12信息技术工程学院网络课程设计1 引言IP 协议的优点是简洁, 但缺少差错控制和查询机制, 而网际控制报文协议(ICMP )具有补充 IP 功能的作用。在网络管理中,常常要确定当前网络中处于活动状态的主机,这时可以通过使用ICMP的回送和回送响应消息来完成这项工作。本课程设计的目的就是编制程序, 利用 ICMP数据包,发现指定网段中的活动主机。 通过课程设计,更加熟悉 ICMP报文的结构,对ICMP协议有更好的理解和认识。 。信息技术工程学院网络课程设计2

4、 1 课程设计相关技术1.1 ICMP 报文格式及类型编制程序前首先要对ICMP报文的格式有一定的了解,ICMP报文是在 IP 数据报内部传输的,其结构如图10-1 所示。IP数据报IP首部 ICMP报文图 10-1 ICMP 封装在 IP 内部0 7 8 15 16 31(位)类型字段代码字段校验和字段(不同类型和代码有不同内容)图 10-2 ICMP 报文ICMP报文的格式如图 10-2 所示。所有报文的前4 个字节都是一样的,但是其它字节则互不相同。其中类型字段可以有15个不同的值,以描述特定类型的ICMP报文,某些 ICMP报文还使用代码字段的值来进一步描述不用的条件。按验和字段为 2

5、 字节,校验的范围是整个ICMP报文。检验和是必须的, 其计算方法与 IP 协议头部校验和的计算方法一样。各种类型的 ICMP报文如图 10-3 所示(ICMP报文类型),不同类型由报文中的类型字段和代码字段来共同决定。类型代码描述0 0 回送响应( PING 应答)信息技术工程学院网络课程设计3 3目的不可达0网络不可达1主机不可达2协议不可达3端口不可达4需要进行分片但设置了禁止分片比特5源主机选择路由失败6无法识别目的网络7无法识别目的主机8源主机被隔离9目的网络被禁止10目的主机被禁止11由于服务类型(TOS) ,网络不可达12由于服务类型(TOS) ,主机不可达13由于过滤,通信被强

6、行禁止14主机越权15优先权终止生效4 0 源端被关闭(基本流控制)5 重定向0对网络重定向1对主机重定向2对服务类型和网络重定向3对服务类型和主机重定向8 0 回送请求( PING 请求)9 0 路由器通告10 0 路由器请求11超时0传输期间生存期减为0 1数据报组装期间生存期减为0 12参数问题0各种 IP 头部错误1缺少必须的选项13 0 时间戳请求14 0 时间戳应答15 0 信息请求(已作废)16 0 信息应答(已作废)17 0 地址掩码请求18 0 地址掩码应答10-3 ICMP 报文类型本课程设计的目的是发现网络中的活动主机,就是使用ICMP的回送和回送响应信息技术工程学院网络

7、课程设计4 消息发现网络中的活动主机,即 Ping 消息的请求和应答。 那幺,发送的 ICMP的数据包类型设置为回送请求(类型号为8) 。1.2 实验平台介绍Visual C+ 6.0,简称 VC或者 VC6.0,是微软推出的一款C+ 编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C+ 是一个功能强大的可视化软件开发工具。自1993 年 Microsoft公司推出 Visual C+1.0后,随着其新版本的不断问世,Visual C+ 已成为专业程序员进行软件开发的首选工具。Visual C+6.0 由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、

8、 类向导 Class Wizard 等开发工具。这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。2 课程设计过程2.1 使用原始套接字为了实现发送 / 监听 ICMP报文,必须使用原始套接字,创建原始套接字的代码如下:socket sockRaw; sockRaw = WSAocket (AF_INET, sock_Raw, IPPROTO_ICMP, NULL, 0, WSA_FLAG_OVERLAPPED); 在 WSASocket函数中,我们使用IPPROTO_ICMP 表示接收 ICMP数据包,为了使用发送超时设置(设置SO_RCVTIMEO 或 SO_

9、SNDTIMEO) ,必须将标志位置为WSA_FLAG_OVERLAPPED。然后调用 setsockopt函数设置读取延迟。Int timeout=1000; setsockopt(sockRaw,SQL_SOCKET,SO_RCVTIMEO,(char*) setsockopt(sockRaw,SQL_socket,SO_SNDTIMEO,(char*) 在 setsockopt函数中, sockRaw是之前创建的原始套接字, 设置 SQL_SOCKET表明使用基本套接字处理ICMP报文。设置SO_RCVTIMEO 表示使用接收超时设置,信息技术工程学院网络课程设计5 SO_SNDTIME

10、O表示使用发送超时设置,在这里,超时时间均设置为1000ms 。2.2 定义 IP 头部和 ICMP 头部的数据结构由于 socket 发送/ 捕获的是 IP 包,因此要分别定义IP 头部的数据结构ICMP头部数据结构。/IP报头的数据结构typedef struct iphdr unsigned int headlen:4; /IP头长度unsigned int version:4; /IP版本号unsigned char tos; /服务类型unsigned short totallen; /IP包总长度unsigned short id; /ID号unsigned short flag;

11、 /标记unsigned char ttl; /生存时间unsigned char prot; /协议( UDP TCP )unsigned short checksum; /校验和unsigned int sourceIP; /源 IP unsigned int destIP; /目的 IP IpHeader; /ICMP 头部的数据结构typedef struct icmphdr BYTE type; /ICMP类型码,回送请求的类型码为8 BYTE code; /子类型码,保存与特定ICMP报文类型相关细节信息USHORT checksum; /校验和USHORT id; /ICMP报文 ID 号(一般用进程号作ID)USHORT seq; /ICMP数据报的序列号IcmpHeader; 信息技术工程学院网络课程设计6 2.3 填充并发送回送请求类型的ICMP 报文为了使收到数据包的目的主机发送响应,我们需要向目的主机发送回送请求类型的 ICMP报文。从图 10-3 中可知,回送请求的类型号为8。因此 ICMP报文的填充

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号