tag 标签: icmp

相关博文
  • 热度 3
    2024-8-6 10:12
    239 次阅读|
    0 个评论
    ICMPv4协议—互联网控制报文协议
    引言 在车载以太网测试中,因为IP协议本身提供的是不可靠传输,所以如果网络出现丢包、网络错误等问题就需要及时向管理者报告错误和状态信息,此时就需要借助ICMP协议来实现这一功能。 什么是ICMPv4协议 ICMP协议全称是Internet Control Message Protocol,即互联网控制报文协议。其中,ICMPv4和ICMPv6分别指用于IPv4和IPv6的ICMP版本。目前在车载以太网里常用到的IP协议是IPv4,所以本文着重介绍ICMPv4,ICMPv6不涉及。 ICMPv4协议是TCP/IP协议簇的一个子协议,封装在IPv4报文中,主要用于在IPv4主机、路由器之间传递控制消息,用于报告网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于收集各种网络信息、诊断和排除各种网络故障以及用户数据的传递起着重要的作用。 ICMPv4报文格式 ICMPv4报文封装在IPv4数据报里,所以一个ICMPv4报文会包括IPv4头部、ICMPv4头部和ICMPv4 Payload。当IPv4头部的Protocol值为1时,表示为一个ICMPv4报文。 ICMPv4报头格式如下图: ICMP报头格式 类型(Type):ICMPv4报文的类型,如目标不可达报文(Type=3)。 代码(Code):ICMPv4报文类型(Type)下细化的子类型,如对于目标不可达报文(Type=3),code=1表示主机不可达,code=2表示协议不可达。 校验和(Checksum):ICMPv4报文的校验和,校验方法与IP数据报首部校验和算法相同。 报文分类 ICMPv4分为两类报文,1类是查询报文(通过对对端主机发送请求和接收对端主机发送响应的方式去传输消息,可以用来报告网络连通性等消息),1类是差错报文(报告IP数据报在传输过程中出现的错误)。 常见的ICMPv4报文类型如下: 响应请求 平时使用较多的Ping命令就是通过对端主机发送回显请求(Type=8)和接收对端主机发送的回显回答(Type=0)去判断主机之间是否通信连通。 实际测试数据如下: 目标不可达 当路由器无法根据路由表转发IP数据报到指定的目标地址时,会向发送端主机返回一个目标不可达的差错报文,并报告不可达的原因。常见的目标不可达差错报文类型有网络不可达(Code=0)、主机不可达(Code=1)、协议不可达(Code=2)、端口不可达(Code=3)等。 实际测试数据如下: 时间戳 时间戳请求报文(Type=13)和时间戳应答报文(Type=14)用于测试两台主机之间数据报来回一次的传输时间。传输时,主机填充原始时间戳,接收方收到请求后填充接收时间戳后以Type=14的报文格式返回,发送方计算这个时间差。 实际测试数据如下: 参数错误报文 一旦路由器或主机发现错误的数据报首部和错误的数据报选项参数时,便丢弃该数据报,并向源主机发送参数问题(Parameter Problem)报文(Type=12)。代码Code=0表示数据报首部中的某个字段的值有错或不明确,这时ICMP报文首部的指针指向数据报中有问题的字节。 实际测试数据如下: 下表是完整的ICMP报文分类: 表1 ICMP类型 应用 ICMPv4最常见的用法是对网络进行测试和故障诊断,常用的程序是Ping 和tracert。 Ping 使用ping命令确定本地主机是否能与另一台主机成功交换数据包,再根据返回的信息,就可以推断TCP/IP参数是否设置正确,以及运行是否正常、网络是否通畅等。 tracert tracert 命令主要用来显示数据包到达目的主机所经过的路径。通过执行一个tracert到对方主机的命令,返回数据包到达目的主机所经历的路径详细信息,并显示每个路径所消耗的时间。 总结 ICMP协议是TCP/IP协议簇中不可或缺的一部分。通过理解和应用ICMP协议,可以更好地帮助管理员去收集各种网络信息、诊断和排除各种网络故障。 北汇信息是一家专注于汽车电子测试领域的企业,对车载以太网测试有着丰富经验,并可提供相关培训、咨询服务以及测试解决方案,帮助汽车制造商和零部件供应商确保其车载以太网系统的可靠性和安全性。如果需要具体的测试服务或了解更多信息,欢迎大家来联系我们。 参考文献: 【1】《RFC 792》
  • 热度 24
    2013-7-2 14:51
    1087 次阅读|
    0 个评论
    ICMP的全称是 Internet Control Message Protocol  ,它是 TCP/IP协议族 的一个子协议,属于网络层协议,用于在IP 主机 、 路由 器之间传递控制消息。从技术角度来讲,就是让我们能够判断 网络通 不通、 主机 是否可达、 路由 是否可用等等。 在网络中,ICMP协议的应用随处可见,比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。那么当你“Ping”时,具体的ICMP协议是怎么工作的呢? Ping命令 Ping命令利用ICMP回射请求报文和回射应答报文来测试目标系统是否可达。ICMP回射请求和ICMP回射应答报文是配合工作的。当源主机向目标主机发送了ICMP回射请求数据包后,它期待着目标主机的回答。目标主机在收到一个ICMP回射请求数据包后,它会交换源、目的主机的地址,然后将收到的ICMP回射请求数据包中的数据部分原封不动地封装在自己的ICMP回射应答数据包中,然后发回给发送ICMP回射请求的一方。如果校验正确,发送者便认为目标主机的回射服务正常,也即物理连接畅通。如果校验错误,源主机随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据包。注意,ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由源主机完成。 ICMP 重定向 ICMP虽然不是路由协议,但是有时它也可以指导数据包的流向(使数据流向正确的网关)。ICMP协议通过ICMP重定向数据包达到这个目的。 如图所示,主机PC要ping路由器R2的loopback 0地址:192.168.3.1,主机将判断出目标属于不同的网段,因此它要将ICMP请求包发往自己的默认网关192.168.1.253(路由器R1的E0接口)。但是,这之前主机PC首先必须发送ARP请求,请求路由器R1的E0(192.168.1.253)的MAC地址。 当路由器R1收到此ARP请求包后,它首先用ARP应答包回答主机PC的ARP请求(通知主机PC:路由器R1自己的E0接口的MAC地址)。然后,它(路由器R1)将此ICMP请求转发到路由器R2的E0接口:192.168.1.254(要求路由器R1正确配置了到网络192.168.3.0/24的路由)。此外,路由器R1还要发送一个ICMP重定向消息给主机PC,通知主机PC对于主机PC请求的地址的网关是:192.168.1.254。 路由器R2此时会发送一个ARP请求消息请求主机PC的MAC地址,而主机PC会发送ARP应答消息给路由器R2。最后路由器R2通过获得的主机PC的MAC地址信息,将ICMP应答消息发送给主机PC。如果校验正确,就实现了畅通的物理连接。   参考文章:ICMP协议Ping命令的应用   感谢关注! 更多信息与我们交流: WIZnet邮箱:wiznetbj@wiznet.co.kr WIZnet中文主页:http://www.iwiznet.cn WIZnet企业微博:http://e.weibo.com/wiznet2012
  • 热度 14
    2013-7-2 14:34
    941 次阅读|
    0 个评论
    ICMP的全称是 Internet Control Message Protocol  ,它是 TCP/IP协议族 的一个子协议,属于网络层协议,用于在IP 主机 、 路由 器之间传递控制消息。从技术角度来讲,就是让我们能够判断 网络通 不通、 主机 是否可达、 路由 是否可用等等。 在网络中,ICMP协议的应用随处可见,比如我们经常使用的用于检查网络通不通的 Ping 命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。那么当你“Ping”时,具体的ICMP协议是怎么工作的呢? Ping命令 Ping命令利用ICMP回射请求报文和回射应答报文来测试目标系统是否可达。ICMP回射请求和ICMP回射应答报文是配合工作的。当源主机向目标主机发送了ICMP回射请求数据包后,它期待着目标主机的回答。目标主机在收到一个ICMP回射请求数据包后,它会交换源、目的主机的地址,然后将收到的ICMP回射请求数据包中的数据部分原封不动地封装在自己的ICMP回射应答数据包中,然后发回给发送ICMP回射请求的一方。如果校验正确,发送者便认为目标主机的回射服务正常,也即物理连接畅通。如果校验错误,源主机随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据包。注意,ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由源主机完成。 ICMP 重定向 ICMP虽然不是路由协议,但是有时它也可以指导数据包的流向(使数据流向正确的网关)。ICMP协议通过ICMP重定向数据包达到这个目的。 如图所示,主机PC要ping路由器R2的loopback 0地址:192.168.3.1,主机将判断出目标属于不同的网段,因此它要将ICMP请求包发往自己的默认网关192.168.1.253(路由器R1的E0接口)。但是,这之前主机PC首先必须发送ARP请求,请求路由器R1的E0(192.168.1.253)的MAC地址。 当路由器R1收到此ARP请求包后,它首先用ARP应答包回答主机PC的ARP请求(通知主机PC:路由器R1自己的E0接口的MAC地址)。然后,它(路由器R1)将此ICMP请求转发到路由器R2的E0接口:192.168.1.254(要求路由器R1正确配置了到网络192.168.3.0/24的路由)。此外,路由器R1还要发送一个ICMP重定向消息给主机PC,通知主机PC对于主机PC请求的地址的网关是:192.168.1.254。 路由器R2此时会发送一个ARP请求消息请求主机PC的MAC地址,而主机PC会发送ARP应答消息给路由器R2。最后路由器R2通过获得的主机PC的MAC地址信息,将ICMP应答消息发送给主机PC。如果校验正确,就实现了畅通的物理连接。   参考文章: ICMP协议Ping命令的应用   感谢关注! 更多信息与我们交流: WIZnet邮箱:wiznetbj@wiznet.co.kr WIZnet中文主页:http://www.iwiznet.cn WIZnet企业微博:http://e.weibo.com/wiznet2012  
相关资源