网络使用ICMP发现局域网内活动主机
- 格式:doc
- 大小:114.50 KB
- 文档页数:16
ICMP实验总结1. 引言互联网控制消息协议(Internet Control Message Protocol,简称ICMP)是TCP/IP协议族中的一个网络层协议,它用于在IP网络中传递控制消息和错误报告。
ICMP协议通过发送控制消息和错误报告,帮助网络管理员诊断网络问题,并提供一些基本的错误处理机制。
本次实验旨在深入了解ICMP协议的工作原理、常见的消息类型以及如何利用ICMP进行网络诊断和攻击。
2. 实验环境本次实验使用以下工具和环境: - 操作系统:Linux(Ubuntu) - 网络模拟器:GNS3 - 抓包工具:Wireshark3. 实验步骤与结果3.1 ICMP协议工作原理首先,我们需要了解ICMP协议的工作原理。
ICMP使用IP数据报来传输控制消息,它被封装在IP数据报的数据字段中。
ICMP数据报由一个8字节的头部和一个变长的数据部分组成。
3.2 ICMP消息类型ICMP定义了多种不同类型的消息,每种消息都有不同的目的和功能。
常见的ICMP消息类型包括: - 回显请求(Echo Request)和回显应答(Echo Reply):用于测试主机之间的连通性,类似于ping命令。
- 目的不可达(Destination Unreachable):用于指示数据包无法到达目的地的原因。
- 超时(Time Exceeded):用于指示数据包在传输过程中发生超时。
- 重定向(Redirect):用于告知主机发送数据包时优化路由选择。
3.3 ICMP网络诊断ICMP协议可以用于网络诊断,帮助管理员检测和解决网络问题。
常见的ICMP网络诊断工具包括ping、traceroute和ping-of-death等。
3.3.1 ping命令ping命令使用ICMP回显请求和回显应答消息来测试两台主机之间的连通性。
通过发送一个回显请求消息到目标主机,然后等待目标主机返回一个回显应答消息来判断是否能够正常通信。
icmp功能作用
一、ICMP功能作用
1、 ICMP协议是Internet控制报文协议,是TCP/IP协议族中的第三层协议,它利用IP数据包在主机之间传送控制消息。
它是TCP/IP协议中实现互联网层(IP)控制信息和错误检测的协议,主要用于报告IP包处理的错误信息和状态信息,比如网络路由无法完成、端口不可用、重定向IP包等。
2、 ICMP协议允许各个网络节点之间沟通,帮助网络管理员发现和改正当前和预计的网络问题。
ICMP协议对网络性能有重要的影响。
它可以检测IP网络中是否存在问题,帮助网络管理员发现和改正当前和预计的网络问题。
3、 ICMP协议有三种消息类型:询问消息、报告消息和控制消息。
其中询问消息是用于测量的,报告消息是用于报告错误的,控制消息用于控制IP数据数据包的传输。
4、 ICMP协议主要有一些类型号,比如echo request(网络诊断),echo reply(针对echo request的回复),destination unreachable(发送端的任何接收端不可达),time exceeded(时间过期),redirect(重定向)等。
5、 ICMP协议常用的工具有ping,tracert等,它们被用来测试网络中节点间的网络连接状态,检查路由是否正常,帮助网络管理员提前发现网络问题,并且也可以对网络问题有个大体的了解。
- 1 -。
ICMP的分类一、ICMP简介Internet控制消息协议(Internet Control Message Protocol,简称ICMP)是一种网络协议,用于在IP网络中传递控制信息和错误报告。
ICMP消息通常由网络设备(如路由器、防火墙等)生成并发送给源IP地址。
ICMP协议位于网络层,它的主要作用是提供一种机制,使网络设备能够相互通信并进行故障诊断。
ICMP消息通常是由网络设备在出现错误或需要发送控制信息时自动生成和发送的。
二、ICMP的分类ICMP消息根据其功能和目的可以分为以下几类:1. 差错报告消息差错报告消息用于向源IP地址通知网络中发生的错误。
这些错误可能包括目标主机不可达、端口不可达、超时等。
差错报告消息的目的是让源主机或设备了解网络中的问题,以便采取适当的措施。
差错报告消息的常见类型包括: - 目标不可达(Destination Unreachable) - 超时(Time Exceeded) - 参数问题(Parameter Problem) - 源抑制(Source Quench)2. 询问消息询问消息用于向目标主机或设备发送请求,以获取一些特定的信息。
这些信息可能包括目标主机的网络可达性、MTU(最大传输单元)等。
询问消息的常见类型包括: - 回显请求(Echo Request) - 回显应答(Echo Reply)3. 重定向消息重定向消息用于向源主机或设备发送提示,告知其通过其他路径发送数据。
这些重定向消息通常由路由器生成,以优化数据传输路径。
重定向消息的常见类型包括: - 重定向(Redirect)4. 其他消息除了差错报告消息、询问消息和重定向消息之外,ICMP还包括一些其他类型的消息,用于特定的网络功能和信息传递。
其他消息的常见类型包括: - 时间戳请求(Timestamp Request) - 时间戳应答(Timestamp Reply) - 地址掩码请求(Address Mask Request) - 地址掩码应答(Address Mask Reply)三、ICMP消息格式ICMP消息由固定的报头和可变的数据字段组成。
netdiscover的用法
netdiscover是一款网络发现工具,可以帮助用户扫描局域网内的活跃主机,并提供它们的IP地址、MAC地址、主机名等信息。
使用netdiscover可以帮助用户快速发现局域网中的设备,方便管理和维护网络。
netdiscover的使用方法比较简单,用户只需在终端输入“sudo netdiscover”命令,即可开始扫描局域网。
扫描完成后,程序会列出所有发现的主机信息,并以表格形式展示出来。
用户可以通过表格来查看每个主机的IP地址、MAC地址、主机名以及状态等信息。
除了基本的扫描功能之外,netdiscover还支持一些高级功能。
例如,用户可以使用“-r”参数指定扫描的IP地址范围;使用“-p”参数指定扫描时使用的协议;使用“-i”参数指定扫描时使用的网卡接口等等。
这些高级功能可以帮助用户更加灵活地使用netdiscover,以适应不同的网络扫描需求。
总之,netdiscover是一款非常实用的网络发现工具,可以帮助用户快速发现局域网中的设备,方便管理和维护网络。
无论是普通用户还是网络管理员,都可以从中受益。
- 1 -。
ICMP协议是什么1. ICMP协议简介ICMP(Internet Control Message Protocol)协议是一种网络协议,用于在IP网络中传递错误、控制和诊断信息。
它是TCP/IP协议族中的一个重要组成部分,常用于网络故障排查、网络管理和网络性能测量等方面。
ICMP协议主要通过发送控制消息来实现其功能。
它封装在IP数据包中,作为IP协议的一个扩展,用于向网络中的其他设备发送消息。
ICMP消息通常由操作系统或网络设备生成,用于报告错误、确认连接、请求回应等。
2. ICMP消息类型ICMP协议定义了多种消息类型,每种类型都有其特定的目的和功能。
以下是常见的几种ICMP消息类型:2.1 回显请求和回显应答(Echo Request/Reply)回显请求(Echo Request)消息用于测试网络连接和延迟。
当一台主机发送回显请求消息时,目标主机会返回一个回显应答(Echo Reply)消息,以确认网络连接正常。
2.2 目的不可达(Destination Unreachable)目的不可达消息用于报告数据包发送失败的原因。
当一个数据包无法到达目的地时,中间路由器会向源主机发送目的不可达消息,以便源主机能够得知发送失败的原因。
2.3 超时(Time Exceeded)超时消息用于报告数据包在传输过程中发生超时的情况。
当一个数据包的生存时间(TTL)超过设定的阈值或在路由过程中出现环路时,中间路由器会向源主机发送超时消息,以便源主机能够得知数据包传输失败的原因。
2.4 参数问题(Parameter Problem)参数问题消息用于报告IP数据包中的参数错误。
当一个数据包的头部信息不符合规范或存在错误时,中间路由器会向源主机发送参数问题消息,以便源主机能够纠正错误并重新发送数据包。
2.5 重定向(Redirect)重定向消息用于通知源主机修改其路由表。
当一个中间路由器发现一个数据包的最佳路径发生变化时,它会向源主机发送重定向消息,以便源主机能够更新其路由表,选择更优的路径。
icmp名词解析
ICMP是Internet控制消息协议(Internet Control Message Protocol)的缩写,是一个用于在IP网络中传递错误消息和操
作状态信息的协议。
ICMP由于其功能的特殊性,它不能直接用于应用层的数据传输,而是在IP层使用,在IP数据报发送过程中用来进行错误
诊断和网络状态监测。
一般来说,ICMP主要用于以下几个方面:
1. 错误报告:当IP层发生错误时,ICMP可以将错误报告返回给发送者,以便发送者可以相应地进行处理。
例如,当目的主机不可达、超时、生命周期过期等情况发生时,ICMP会发送
相应的错误消息给发送者。
2. 网络探测:ICMP提供了用于探测网络是否可达的工具,例
如使用ping命令时会发送ICMP Echo请求消息,通过接收目
标主机返回的ICMP Echo应答消息来判断目标主机是否可达。
3. 路由选择:ICMP可以通过发送路由请求消息来获取路由器
的信息,并根据接收到的路由器应答消息来选择最佳的路由路径。
4. 流量控制:ICMP可以发送一些控制消息来对网络流量进行
限制,用于防止网络拥塞和超载。
总之,ICMP在IP网络中扮演着非常重要的角色,不仅可以帮
助诊断和解决网络问题,还可以提供一些网络控制和管理的手段。
ICMP的两个应用原理ICMP简介Internet Control Message Protocol(ICMP)是Internet协议族中的一个核心协议,用于在IP网络中发送控制消息和错误报告。
ICMP是一种面向连接的协议,主要用于网络设备之间的信息交流和故障诊断。
ICMP的应用原理ICMP有许多应用,其中最常用的两个应用原理分别是PING和Traceroute。
PINGPING是ICMP的一种基本应用,它用于测试两台主机之间的连通性。
PING工具发送一个ICMP Echo请求消息给目标主机,如果目标主机响应了一个ICMP Echo 回应消息,则说明两台主机之间网络连通。
PING应用原理如下:1.发送端主机通过发送ICMP Echo请求消息到目标主机的IP地址。
2.目标主机收到ICMP Echo请求消息后,会立即回复一个ICMP Echo回应消息。
3.发送端主机接收到ICMP Echo回应消息后,计算出往返时间(RTT),并显示出来。
PING应用的列点示例:•PING工具是跨平台的,可以在Windows、Linux和macOS等操作系统上运行。
•PING工具使用ICMP协议发送和接收消息。
•PING工具提供了一种简单而有效的方法来测试两台主机之间的网络连通性。
•PING工具还可以用于测量往返时间(RTT),以评估网络的性能。
TracerouteTraceroute是另一种使用ICMP的应用,它用于发现数据包从源主机到目标主机所经过的路由路径。
Traceroute通过发送一系列的ICMP数据包,每个数据包的生存时间(TTL)从1开始逐渐递增,直到达到目标主机。
Traceroute应用原理如下:1.发送端主机发送第一个TTL为1的ICMP数据包到目标主机。
2.当第一个路由器接收到ICMP数据包时,将会将生存时间减1,并将数据包转发给下一个路由器。
3.如果TTL为1的ICMP数据包到达目标主机,目标主机会发送一个ICMP Echo回应消息给发送端主机。
ICMP(Internet Control Message Protocol)攻击是一种利用ICMP协议进行网络攻击的方式。
ICMP协议是用于在IP网络中传递控制信息的协议,它通常用于网络诊断、错误报告和网络管理等方面。
ICMP攻击的原理是利用ICMP协议的特性进行攻击,主要包括以下几种类型:ICMP洪水攻击(ICMP Flooding):攻击者向目标主机发送大量的ICMP请求消息,使目标主机的网络资源(如带宽、CPU、内存等)耗尽,导致服务不可用。
ICMP回显请求攻击(ICMP Echo Request Attack):攻击者发送大量的ICMP回显请求消息(也称为Ping请求),使目标主机不断回复这些请求,消耗目标主机的网络资源和处理能力。
ICMP分片攻击(ICMP Fragmentation Attack):攻击者发送经过特殊处理的ICMP分片消息,目的是使目标主机的IP堆栈产生异常行为,如崩溃或拒绝服务。
ICMP重定向攻击(ICMP Redirect Attack):攻击者发送伪造的ICMP重定向消息,使目标主机误导路由表,导致流量被重定向到攻击者控制的恶意主机。
这些攻击方法都利用了ICMP协议的一些弱点和漏洞,通过发送大量的恶意ICMP消息或利用协议本身的设计缺陷,造成目标主机的资源消耗、服务中断或网络异常。
为了防范ICMP攻击,可以采取以下措施:网络入口设备上配置ICMP过滤规则,限制ICMP流量的数量和频率。
配置防火墙或入侵检测系统(IDS)来检测和阻止异常的ICMP流量。
更新和维护系统的操作系统和网络设备的软件补丁,以修复可能存在的ICMP漏洞。
启用流量限制和流量监控,及时发现异常流量并采取相应措施。
使用网络安全设备和解决方案,如DDoS防护设备,来保护网络免受大规模的ICMP攻击。
总体而言,ICMP攻击是一种常见的网络攻击手段,网络管理员和安全专业人员需要采取相应的防护措施来保护网络和系统的安全。
ICMP协议协议名称:Internet控制消息协议(ICMP)1. 引言Internet控制消息协议(ICMP)是一种在Internet协议套件中广泛使用的网络层协议。
它主要用于在IP网络中传递错误消息、网络状况和其他控制信息。
本协议旨在详细描述ICMP协议的标准格式和功能。
2. 协议概述ICMP协议是通过IP数据报传输的。
它使用IP协议的头部来封装ICMP消息,并使用ICMP报文类型字段来标识不同类型的消息。
ICMP协议可以用于以下几个方面:2.1 错误报告当IP数据报在传输过程中发生错误时,ICMP协议可用于发送错误报告给源主机。
例如,当目标主机不可达、超时或发生错误时,ICMP会发送相应的错误消息给源主机。
2.2 网络状况ICMP协议还可以用于报告网络状况,例如网络拥塞或路由器故障。
这些信息对于网络管理员来说是非常有用的,可以帮助他们监测和维护网络的正常运行。
2.3 重定向ICMP协议还支持重定向功能,即当一台主机接收到数据报时,如果发现更好的路径存在,它可以使用ICMP重定向消息通知发送方主机使用更佳的路径。
3. 协议格式ICMP协议的标准格式如下所示:0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 类型 | 代码 | 校验和 |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| 数据 |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+3.1 类型(Type)类型字段占一个字节,用于标识ICMP消息的类型。
天津师范大学 Tianjin University of Education
网络课程设计 所在学院: 信息技术工程学院 专 业: 计算机科学与技术 学 号: 学生姓名: 指导教师:
二〇一三年六月 信息技术工程学院网络课程设计 使用ICMP发现局域网内活动主机 学生姓名:肖磊 指导教师:黄彦 副教授
20 13 年 6月 摘 要 本程序使用原始套接字生成ICMP报文来进行活动主机的探查。这个程序使用的是回送请求与应答消息。程序的大致思想是把ICMP的数据包类型设置为回送请求,将它发送给网络上的一个IP地址,如果这个IP地址已经被占用的话,那幺使用位于这个IP地址的主机上的TCP/IP软件就能够接收到这个ICMP回送请求,从而返回一个ICMP回送响应(类型号为0)信息。信息封装在一个IP包中,我们需要解析该IP包,从中找到ICMP数据信息。相反,如果这个IP地址没有人使用,那幺发送的ICMP回送请求在设定的延时内就不可能得到响应。 在初始化原始套接字之后,本程序就要开始在一个IP网段内寻找活动主机。因为要寻找的主机可能很多,为节省时间可以采用多线程编程。
关键词: ICMP协议,Visual c++ 6.0目 录 引 言 .................................................................................................................................... 1 1 课程设计相关技术 ........................................................................................................... 2 1.1 ICMP报文格式及类型 ........................................................................................... 2 1.2实验平台介绍 .......................................................................................................... 4 2.1 使用原始套接字 ..................................................................................................... 4 2.2 定义IP头部和ICMP头部的数据结构 ................................................................ 5 2.3 填充并发送回送请求类型的ICMP报文 ............................................................. 6 2.4程序流程图 .............................................................................................................. 8 结论 ..................................................................................................................................... 10 参考文献 ............................................................................................................................. 11 致谢 ..................................................................................................................................... 12 信息技术工程学院网络课程设计
1 引 言
IP协议的优点是简洁,但缺少差错控制和查询机制,而网际控制报文协议(ICMP)具有补充IP功能的作用。在网络管理中,常常要确定当前网络中处于活动状态的主机,这时可以通过使用ICMP的回送和回送响应消息来完成这项工作。本课程设计的目的就是编制程序,利用ICMP数据包,发现指定网段中的活动主机。通过课程设计,更加熟悉ICMP报文的结构,对ICMP协议有更好的理解和认识。。 信息技术工程学院网络课程设计
2 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字节,校验的范围是整个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 由于过滤,通信被强行禁止 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的回送和回送响应信息技术工程学院网络课程设计 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、类向导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_SNDTIMEO),必须将标志位置为WSA_FLAG_OVERLAPPED。然后调用setsockopt函数设置读取延迟。 Int timeout=1000; setsockopt(sockRaw,SQL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout); setsockopt(sockRaw,SQL_socket,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout); 在setsockopt函数中,sockRaw是之前创建的原始套接字,设置SQL_SOCKET表明使用基本套接字处理ICMP报文。设置SO_RCVTIMEO表示使用接收超时设置,