没有合适的资源?快使用搜索试试~ 我知道了~
首页发现网络中的活动主机报告及源代码
发现网络中的活动主机报告及源代码

发现网络中的活动主机报告及源代码,及其源代码的相关分析和作用,设计程序,其功能是发送ICMP数据包,以获取指定网络中的活动主机,并将结果显示在标准输出上。 程序的具体要求如下: l)用命令行形式运行:scanhost Start_IP End_IP 其中scanhost为程序名;StartIP为被搜索网段的开始IP地址; End_IP为搜索网段的结束IP地址。 2)输出格式为: 活动主机1 活动主机2 ┅┅ IP协议的优点是简洁,但缺少差错控制和查询机制,而网际控制报文协议(ICMP)具有补充IP功能的作用。在网络管理中,常常要确定当前网络中处于活动状态的主机,这时可以通过使用ICMP的回送和回送响应消息来完成这项工作。本次综合实验设计的目的就是编制程序,利用ICMP数据包,发现指定网段中的活动主机。通过本实验,使学生更加熟悉ICMP报文的结构,对ICMP协议有更好的理解和认识。
资源详情
资源评论
资源推荐

目 录
一.课程设计目的…………………………………………………………………2
二. 课程设计要求…………………………………………………………………2
三.相关知识………………………………………………………………………2
四.课程设计分析…………………………………………………………………4
五.程序流程图……………………………………………………………………7
六.程序运行结果截图……………………………………………………………10
七. 课程设计心得…………………………………………………………………10
八.附录:参考文献……………………………………………………………… 11
0

一.课程设计目的:
协议的优点是简洁,但缺少差错控制和查询机制,而网际控制报文协议
()具有补充 功能的作用。在网络管理中,常常要确定当前网络中处
于活动状态的主机,这时可以通过使用 的回送和回送响应消息来完成这
项工作。本课程设计的目的就是编制程序,利用 数据包,发现指定网段
中的活动主机。通过课程设计,使学生更加熟悉 报文的结构,对
协议有更好的理解和认识。
二.课程设计要求:
设计程序,其功能是发送 数据包,以获取指定网段中的活动主机,并将
结果显示在标准输出上。
程序的具体要求如下:
)用命令行形式运行:
其中 为程序名; 为被搜索网段的开始 地址;
为被搜索网段的
结束 地址。
)输出格式为:
活动主机
活动主机
三.相关知识:
编制程序前首先要对 报文的格式有一定的了解, 报文是在 数
据报内部传输的,其结构如图 所示:
数据报
首部 报文
报文的格式如图 所示:
(位)
类型字段 代码字段 校验和字段
1

(不同类型和代码有不同内容)
所有报文的前 个字节都是一样的,但是其它字节则互不相同。其中类型字段
可以有 个不同的值,以描述特定类型的 报文,某些 报文还使用
代码字段的值来进一步描述不用的条件。按验和字段为 字节,校验的范围是
整个 报文。检验和是必须的,其计算方法与 协议头部校验和的计算方
法一样。
各种类型的 报文如图 所示(ICMP 报文类型),不同类型由报文中的类
型字段和代码字段来共同决定。
类 型 代 码 描 述
0 0 回送响应(PING 应答)
3 目的不可达
0 网络不可达
1 主机不可达
2 协议不可达
3 端口不可达
4 需要进行分片但设置了禁止分片比特
5 源主机选择路由失败
6 无法识别目的网络
7 无法识别目的主机
8 源主机被隔离
9 目的网络被禁止
10 目的主机被禁止
11 由于服务类型(TOS),网络不可达
12 由于服务类型(TOS),主机不可达
13 由于过滤,通信被强行禁止
14 主机越权
15 优先权终止生效
4 0 源端被关闭(基本流控制)
5 重定向
0 对网络重定向
1 对主机重定向
2 对服务类型和网络重定向
3 对服务类型和主机重定向
8 0 回送请求(PING 请求)
9 0 路由器通告
10 0 路由器请求
2

11 超时
0 传输期间生存期减为 0
1 数据报组装期间生存期减为 0
12 参数问题
0 各种 IP 头部错误
1 缺少必须的选项
13 0 时间戳请求
14 0 时间戳应答
15 0 信息请求(已作废)
16 0 信息应答(已作废)
17 0 地址掩码请求
18 0 地址掩码应答
10-3 报文类型
本课程设计的目的是发现网络中的活动主机,就是使用 的回送和回送
响应消息发现网络中的活动主机,即 消息的请求和应答。那幺,发送的
的数据包类型设置为回送请求(类型号为 )。
四.课程设计分析:
本程序使用原始套接字生成 报文来进行活动主机的探查。这个程序使用
的是回送请求与应答消息。程序的大致思想是把 的数据包类型设置为回
送请求,将它发送给网络上的一个 地址,如果这个 地址已经被占用的话,
那幺使用位于这个 地址的主机上的 软件就能够接收到这个 回
送请求,从而返回一个 回送响应(类型号为 )信息。信息封装在一个
包中,我们需要解析该 包,从中找到 数据信息。相反,如果这个
地址没有人使用,那幺发送的 回送请求在设定的延时内就不可能得到响
应。
在初始化原始套接字之后,本程序就要开始在一个 网段内寻找活动主机。
因为要寻找的主机可能很多,为节省时间可以采用多线程编程。下面接结合核
心代码对程序的具体实现进行讲解,同时为使程序流程更加清晰,去掉了错误
检查等保护性代码。
!使用原始套接字
为了实现发送 监听 报文,必须使用原始套接字,创建原始套接字的代
码如下:
"#"$%&
3

"$%'()"#*)+,-"$%-$..-,/00-
-()+0)1.2$0)34&
在 ()"# 函数中,我们使用 $.. 表示接收 数据包,
为了使用发送超时设置(设置 .$2. 或 .,3.),必须将
标志位置为 ()+0)1.2$0)3。然后调用 #"5 函数设置读取
延迟。
6#7'&
#"5*"$%-80.9-.$2.-
*:4;6#7-<#=*6#74&#"5*"$%-80"#-.
,3.-*:4;6#7-<#=*6#744
在 #"5 函 数 中 , "$% 是 之 前 创 建 的 原 始 套 接 字 , 设 置
80.9 表明使用基本套接字处理 报文。设置 .$2. 表
示使用接收超时设置,.,3. 表示使用发送超时设置,在这里,超时
时间均设置为 6。
.定义 头部和 头部的数据结构
由于 "# 发送 捕获的是 包,因此要分别定义 头部的数据结构
头部数据结构。
报头的数据结构
>5##=75?
7##@#A& 头长度
7#B#A& 版本号
7#& 服务类型
7#@@#& 包总长度
7#&& 3 号
7#C& 标记
7#@& 生存时间
7#5& 协议(/3)
##"76& 校验和
7#7#& 源
7##& 目的
D5E##&
头部的数据结构
>5##=765?
FG>5#& 类型码,回送请求的类型码为
FG#& 子类型码,保存与特定 报文类型相关细节信息
4
剩余25页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论3