icmp协议协议基础详解
- 格式:doc
- 大小:20.50 KB
- 文档页数:4
ICMP协议一、介绍ICMP(Internet Control Message Protocol)是一种网络层协议,用于在IP网络中传递控制消息。
它被用于网络设备之间的通信,主要用于错误报告、网络诊断和路由选择等功能。
本协议旨在规范ICMP协议的标准格式和相关规范,以便确保网络设备之间的正常通信和故障排除。
二、协议格式ICMP协议的标准格式如下:1. 类型(Type):8位字段,表示ICMP消息的类型。
常见的类型包括:- 0:回显应答消息- 3:目的不可达消息- 8:回显请求消息- 11:超时消息- 其他类型根据具体需求定义2. 代码(Code):8位字段,表示ICMP消息的具体代码。
不同类型的消息可能有不同的代码,用于进一步描述消息的详细信息。
3. 校验和(Checksum):16位字段,用于检验ICMP消息的完整性。
校验和的计算基于ICMP消息的所有字段。
4. 数据(Data):可选字段,用于携带特定类型的数据。
不同类型的ICMP消息可能需要携带不同的数据。
三、协议流程ICMP协议的流程如下:1. 发送ICMP消息:- 源主机构建ICMP消息,并填充必要的字段,如类型、代码、校验和等。
- 源主机将ICMP消息封装在IP数据报中,并发送给目标主机。
2. 接收ICMP消息:- 目标主机接收到ICMP消息后,首先验证校验和,确保消息的完整性。
- 目标主机根据消息的类型和代码进行相应的处理,如回复回显请求、发送目的不可达消息等。
- 目标主机可以选择将ICMP消息封装在新的IP数据报中,并发送给源主机。
四、常见类型和代码ICMP协议定义了多种类型和代码,用于不同的控制消息。
以下是一些常见的类型和代码:1. 回显请求和回显应答:- 类型:8(回显请求)、0(回显应答)- 代码:通常为02. 目的不可达消息:- 类型:3- 代码:0(网络不可达)、1(主机不可达)、2(协议不可达)、3(端口不可达)等3. 超时消息:- 类型:11- 代码:0(TTL超时)、1(片段重组超时)等五、应用场景ICMP协议在网络中有广泛的应用场景,包括但不限于以下几个方面:1. 网络故障排除:- ICMP协议可以用于发送目的不可达消息,帮助诊断网络中的故障和错误。
icmp实验报告ICMP实验报告引言:ICMP(Internet Control Message Protocol)是一种网络层协议,用于在IP网络中传递控制消息和错误报告。
在本次实验中,我们将探索ICMP协议的工作原理和应用。
一、ICMP的基本原理ICMP是在IP协议的基础上建立的,它通过封装在IP数据报中进行传输。
ICMP 消息通常由网络设备(如路由器)或主机(如计算机)生成,并通过IP网络发送给目标设备。
ICMP消息可以用于多种目的,包括网络故障排除、错误报告和网络管理。
二、ICMP的消息类型ICMP定义了多种消息类型,每种类型都有不同的目的和用途。
以下是一些常见的ICMP消息类型:1. Echo Request和Echo ReplyEcho Request和Echo Reply消息用于网络设备之间的连通性测试。
当一台设备发送Echo Request消息时,目标设备会收到该消息并发送Echo Reply消息作为响应。
这种机制常用于Ping命令,用于测试网络设备的可达性和延迟。
2. Destination UnreachableDestination Unreachable消息用于指示数据包无法到达目标设备的原因。
例如,当目标设备的端口关闭或网络不可达时,发送方会收到Destination Unreachable消息。
这种消息对于故障排除和网络管理非常重要。
3. Time ExceededTime Exceeded消息用于指示数据包在传输过程中超过了最大生存时间(TTL)。
每个IP数据包都包含一个TTL字段,当数据包通过一个路由器时,TTL值会减少。
如果TTL值减少到零,路由器会发送Time Exceeded消息给发送方。
这种机制对于检测网络中的环路和延迟很有用。
三、ICMP的应用ICMP在网络中有多种应用,以下是一些常见的应用场景:1. 网络故障排除ICMP的错误报告和目的不可达消息对于故障排除非常有帮助。
icmp协议格式的例子ICMP(Internet Control Message Protocol)是一种用于在IP网络中传送控制消息的协议。
它通常与IP协议一起工作,用于网络设备之间的通信,例如路由器、交换机和主机等。
下面是一个ICMP协议格式的例子,以帮助理解它的结构和功能。
ICMP消息由固定长度的报头和一个可选的数据部分组成。
报头的长度为8字节,包含以下字段:1. 类型(Type):指定ICMP消息的类型。
常见的类型包括回显请求(Echo Request)、目的地不可达(Destination Unreachable)、超时(Time Exceeded)等。
2. 代码(Code):为特定类型的ICMP消息提供更多的细分信息。
例如,目的地不可达消息有不同的代码,用于表示不同的不可达原因。
3. 校验和(Checksum):用于验证ICMP消息的完整性。
类似于其他网络协议中的校验和机制,它利用报头和数据部分的值进行计算,以检测传输过程中的错误。
4. 标识符(Identifier)和序列号(Sequence Number):用于在一对请求和响应消息中关联起来。
请求消息的标识符和序列号会在响应消息中被复制,以便发送方可以匹配请求和响应。
5. 数据部分(Data):可选的数据字段,用于传输额外的信息。
它的结构和内容根据不同类型的ICMP消息而变化。
以下是一个回显请求(Echo Request)消息的例子:```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+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Type | Code | Checksum |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Identifier | Sequence Number |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Data |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+```上述例子中,Type字段的值为8,表示这是一个回显请求消息。
icmp是什么协议ICMP协议全称为Internet Control Message Protocol,是一种网络层协议,用于检测和报告有关IP网络连接的错误和异常情况。
ICMP协议主要用于网络故障诊断、测量网络性能以及端到端的错误报告。
ICMP协议是在IP协议之上运行的,它通过在IP数据报的数据字段中携带ICMP消息来进行通信。
ICMP报文通常与IP数据报一起传输,并且没有自己的端口号。
ICMP报文结构包含一个8位的消息类型字段和一个校验和字段,用于检测报文的完整性。
ICMP协议的主要功能包括以下几个方面:1. 错误报告和处理:ICMP协议可以用于向源主机发送错误报告,以便源主机及时调整传输策略。
例如,当目标主机不可达或传输过程中发生错误时,ICMP协议可以返回错误报文给源主机。
2. 连通性检测:ICMP协议可以通过发送Echo请求报文和接收Echo回应报文来检测主机或网络的连通性。
通过Ping命令,我们可以测试目标主机是否可达以及网络的延迟和丢包率。
3. 路由器发现:ICMP协议可以通过发送路由器请求报文来发现本地网络中存在的路由器,并获取路由器的相关信息,如IP地址和最大传输单元大小。
4. 前进分片报文:当一个IP分组分片在一个网络中传输时,如果发生丢包,ICMP协议可以发送分片报文到源主机,以便源主机重新组装原始IP分组。
5. TTL过期报文:ICMP协议可以在分组中设置一个生存时间(TTL),以防止分组在网络中无限循环。
当生存时间(TTL)减少到0时,IP协议就会发送ICMP报文给源主机,通知它有一条路由失效或分组循环的情况。
ICMP协议在网络故障诊断中起着重要的作用。
通过分析ICMP报文,网络管理员可以判断网络的健康状况,及时发现和解决故障。
同时,ICMP协议也被用于进行网络性能测量,包括延迟测量、传输速率测量和链路状态测量等。
然而,由于ICMP报文是和IP数据报一起传输的,所以它也容易受到网络攻击的影响。
个人总结-ICMP的协议详解以及实现ping 的实现:1.首先查本地arp cache信息,看是否有对方的mac地址和IP地址映射条目记录2.如果没有,则发起一个arp请求广播包,等待对方告知具体的mac地址3.收到arp响应包之后,获得某个IP对应的具体mac地址,有了物理地址之后才可以开始通信了,同时对ip-mac地址做一个本地cache4.发出icmp echo request包,收到icmp echo reply包ICMP在网络层协议,不是用端口来说的,它的功能用类型来区别。
ICMP全称Internet Control Message Protocol(网际控制信息协议)。
在网络体系结构的各层次中,都需要控制,而不同的层次有不同的分工和控制内容。
IP层的控制功能是最复杂的,主要负责差错控制、拥塞控制等,任何控制都是建立在信息的基础之上的。
在基于IP数据报的网络体系中,网关必须自己处理数据报的传输工作,而IP协议自身没有内在机制来获取差错信息并处理。
为了处理这些错误,TCP/IP设计了ICMP协议,当某个网关发现传输错误时,立即向信源主机发送ICMP报文,报告出错信息。
让信源主机采取相应处理措施,它是一种差错和控制报文协议,不仅用于传输差错报文,还传输控制报文。
二、ICMP报文格式ICMP报文包含在IP数据报中,属于IP的一个用户,IP头部就在ICMP报文的前面,所以一个ICMP报文包括IP头部、ICMP头部和ICMP报文(见图表,ICMP报文的结构和几种常见的ICMP报文格式),IP头部的Protocol值为1就说明这是一个ICMP报文,ICMP头部中的类型(Type)域用于说明ICMP报文的作用及格式,此外还有一个代码(Code)域用于详细说明某种ICMP报文的类型,所有数据都在ICMP头部后面。
RFC定义了13种ICMP报文格式,具体如下:类型代码类型描述0 响应应答(ECHO-REPLY) 3 不可到达 4 源抑制 5 重定向 8 响应请求(ECHO-REQUEST)11 超时 12 参数失灵 13 时间戳请求 14 时间戳应答 15 信息请求(*已作废) 16 信息应答(*已作废)17 地址掩码请求 18 地址掩码应答其中代码为15、16的信息报文已经作废。
icmp协议端口号ICMP协议端口号。
ICMP(Internet Control Message Protocol)是互联网控制报文协议,是TCP/IP协议族的一个重要组成部分。
它主要用于在IP主机、路由器之间传递控制消息。
ICMP消息通常用于诊断网络故障,或者报告网络不可达情况。
在本文中,我们将重点讨论ICMP协议中的端口号相关内容。
首先,需要明确一点的是,ICMP协议并不使用端口号。
与TCP和UDP协议不同,ICMP协议是无端口的。
它是一种面向无连接的协议,没有端口的概念。
因此,我们无法像TCP和UDP那样直接指定ICMP消息的端口号。
然而,虽然ICMP本身并不使用端口号,但在某些情况下,我们仍然需要关注与ICMP相关的端口号。
这主要是因为在进行网络配置、安全设置或者故障排查时,我们可能会涉及到与ICMP相关的端口号信息。
在实际应用中,有一些工具或者服务会使用ICMP消息来进行通信,虽然它们并不是真正意义上的“端口号”,但我们可以将其视作与端口号类似的概念。
下面我们将介绍一些与ICMP相关的常见工具和服务,以及它们所使用的“伪端口号”。
Ping命令是最常见的使用ICMP消息的工具之一。
当我们使用ping命令来测试网络连通性时,实际上是向目标主机发送ICMP Echo Request消息,并等待对方主机返回ICMP Echo Reply消息。
尽管ping命令并不涉及真正的端口号,但我们可以将它视作使用了ICMP协议的一种“端口号”。
在这种情况下,我们可以认为ping命令使用的是ICMP协议的“端口号”为0。
另一个常见的工具是traceroute(或tracert)命令。
traceroute命令通过发送一系列的ICMP消息来跟踪数据包在网络中的传输路径。
在这个过程中,每个传输节点都会返回一个TTL超时消息,通过这些消息,我们可以获得数据包经过的路由节点信息。
尽管traceroute命令也不涉及真正的端口号,但我们可以将它视作使用了ICMP协议的“端口号”为30。
icmp协议的功能和作用InternetControlMessageProtocol(ICMP)是网络协议中一种替代性协议,它是TCP / IP协议族中的一部分,主要用来报告错误和向其他计算机发出控制消息。
它在IP层上运行,当路径上的端口有问题时,它可以报告错误,以便可以尽快解决问题。
ICMP的主要功能1.路径上的中断检测:ICMP可以通过Echo请求的响应来进行路径上的中断检测。
在发送Echo请求时,它将发送方的地址传递给接收方,接收方可以显示传递的地址,并报告错误;2.络重定向:ICMP可以用来改变连接的路由,在路由器发现有更好的路由可以使用时,它可以通过重定向消息告诉发送端改变方向;3.送请求和应答:ICMP可以发送回送请求和应答,Echo Request 和Echo Reply消息都是目前最常用的ICMP消息,它们被用来检查连接正常;4.径时延检测:ICMP可以用来检测网络中两个网络设备之间的通信时延,因此可以知道网络上的延迟情况;5.用性检查:ICMP还可以用来检查某个网络设备的可用性,当发现某个设备已经不可用时,它可以报告可用性问题;6.找传播路径:ICMP也可以用来查找网络中最快或最短的传播路径,在发现最快或最短路径时,它将传递数据,以便于减少传播时间。
ICMP的安全问题ICMP由于其本身的功能,给网络系统的安全性带来了一定的威胁。
比如,ICMP Echo Request和Echo Reply消息可以被用来检测用户的存在,因此可以被用来找到网络中的主机;此外,ICMP也可能被利用来攻击网络,比如Smurf和Ping of Death攻击等。
因此,在使用ICMP时,应当正确使用它,不要过分依赖它,还要遵守一些安全规则。
有时,也可以考虑关闭ICMP消息,以减少ICMP 的安全风险。
结论ICMP是一种传统的网络协议,它最初是用来报告错误,改变传播路由和检查网络时延等。
ICMP有许多有用的功能,但它也有一定的安全风险,因此使用时应当谨慎。
ICMP是Internet Control Message Protocol 的缩写,即Internet控制报文协议。
它运行在IP协议之上,通常认为它是IP协议的一部分。
那么这个ICMP协议的产生有什么作用呢? Next我们知道,IP协议提供的是一种尽力而为的服务,它提供了无连接和不可靠的数据服务。
并且它没有差错控制和查询机制。
那么在发送数据报时,这个数据报是否到达了目的主机,在传输过程中是否产生了错误,源主机都是不知道的。
这就必须需要有一个差错报告与查询控制机制来了解数据报的相关传输的信息,并决定下一步如何处理。
而ICMP协议提供了这样一种差错控制与查询机制,它对于保证TCP/IP协议的可靠运行至关重要。
ICMP是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。我们在网络中经常会使用到ICMP协议。比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping"的过程实际上就是ICMP协议工作的过程。在我们发送一个ping请求时,实际上是向目的主机发送了一个ICMP回送请求报文,若网络是通的,那么目的主机在收到ICMP 回送请求报文时会返回一个ICMP回送应答数据报,这就实现了网络检查的功能。
还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。从技术角度来说,ICMP就是一个“错误侦测与回报机制",其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性。
ICMP主要通过不同的类别(Type)与代码(Code)让机器来识别不同的连线状况。下面我们来看ICMP的报文是如何封装的。
ICMP报文以IP数据报的形式传送。
报文本身被封装在IP数据报的数据区中,而这个IP数据报又被封装在帧数据中。
网络基础ICMP机制ICMP实际上是IP协议中的一个模块,当IP收到ICMP报文后,首先会交给ICMP模块来处理,因此ICMP被认为是IP协议中不可缺少的组成部分。
同样,ICMP还是IP层中的协议,ICPM报文会被作为IP数据报的数据来封装,加上数据报的首部,组成IP数据报发送出去。
ICMP是一个差错报告机制,它为发生差错的路由器提供了向初始源站点报告差错的方法。
它在RFC792中进行了描述,并在RFC950中进行了更新。
ICMP的具体特征介绍如下:●ICMP是IP的一个组成部分,并且所有IP模块都必须实现它。
●ICMP用来报告错误,而不是使IP可靠。
数据报仍然可能未被送达,但是没有关于损失的任何报告。
可靠性必须通过使用IP服务的更高层协议来实现。
●ICMP不能用来报告ICMP报文的错误,这样就避免了无限循环。
当ICMP查询消息时通过发送ICMP来响应。
●对于被分片的数据报,ICMP报文只发送关于第一个分片中的错误。
即ICMP报文不会引用一个具有非0片偏移量字段的IP数据报。
●响应具有一个广播或者组播目的地址的数据报时,不会发送ICMP报文。
●响应一个没有源主机IP地址的数据报时,也不会发送ICMP报文。
即ICMP不能为0、一个回送地址、一个广播地址或者一个组播地址。
●RFC792规定能够产生ICMP报文来报告IP数据报处理错误。
但这不是必须的,实际上,路由器总会因为错误产生ICMP报文。
对于目的主机,ICMP消息的生成是依赖于实现的。
ICPM报文是在IP数据报内部被传输的,因此ICMP报文要求被封装,如图2-7所示。
每个ICMP报文放在IP数据报的数据部分中通过互联的网络,而数据报本身放在帧的数据部分中通过物理网络。
携带ICMP报文的数据报与携带用户信息的数据报具有完全相同的路由选择,没有增加可靠性或优先级。
因此,差错报文本身可能会丢失或被丢弃。
在一个已经很拥挤的网络中,差错报文还会引起额外的拥挤。
icmp协议协议基础详解
什么是ICMP协议ICMP全称Internet Control Message Protocol(网际控制信息协议)
提起ICMP,一些人可能会感到陌生,实际上,ICMP与我们息息相关。
在网络体系结构的各层次中,都需要控制,而不同的层次有不同的分工和控制内容,IP层的控制功能是最复杂的,主要负责差错控制、拥塞控制等,任何控制都是建立在信息的基础之上的,在基于IP数据报的网络体系中,网关必须自己处理数据报的传输工作,而IP协议自身没有内在机制来获取差错信息并处理。
为了处理这些错误,TCP/IP设计了ICMP协议,当某个网关发现传输错误时,立即向信源主机发送ICMP报文,报告出错信息,让信源主机采取相应处理措施,它是一种差错和控制报文协议,不仅用于传输差错报文,还传输控制报文。
ICMP报文格式IC M P所有报文的前4个字节都是一样的,但是剩下的其他字节则互不相同。
类型字段可以有1 5个不同的值,以描述特定类型的I C M P报文。
某些I C M P报文还使用代码字段的值来进一步描述不同的条件。
表示ICMP头部的数据结构
typedefstruct icmp_hdr
{ unsigned char icmp_type; //消息类型
unsigned char icmp_code; //代码
unsigned short icmp_checksum; //校验和
unsigned short icmp_id; //ID号
unsigned short icmp_sequence; //序列号
unsigned long icmp_TImestamp; //时间戳
} ICMP_HDR,*PICMP_HDR;
ICMP报文的类型ICMP 经常被认为是IP 层的一个组成部分,它传递差错报文以及其他需要注意的信息。
ICMP 报文通常被IP 层或更高层协议(TCP 或UDP)使用。
ICMP。