icmp协议【部分转载】
作者:互联网
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
ICMP 是 TCP/IP 模型中网络层的重要成员,与 IP 协议、ARP 协议、RARP 协议及 IGMP 协议共同构成 TCP/IP 模型中的网络层。虽然 ICMP 是网络层协议,但是它不像 IP 协议和 ARP 协议一样直接传递给数据链路层,而是先封装成 IP 数据包然后再传递给数据链路层。所以在 IP 数据包中如果协议类型字段的值是 1 的话,就表示 IP 数据是 ICMP 报文。IP 数据包就是靠这个协议类型字段来区分不同的数据包的。
从技术角度来说,ICMP就是一个“错误侦测与回报机制”,其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性。当路由器在处理一个数据包的过程中发生了意外,可以通过ICMP向数据包的源端报告有关事件。
其功能主要有:侦测远端主机是否存在,建立及维护路由资料,重导资料传送路径(ICMP重定向),资料流量控制。ICMP在沟通之中,主要是透过不同的类别(Type)与代码(Code) 让机器来识别不同的连线状况。
1. 确认IP包是否成功到达目标地址
2. 通知在发送过程中IP包被丢弃的原因
已经定义的ICMP消息类型大约有10多种,每种ICMP数据类型都被封装在一个IP数据包中。
ICMP大概分为两类报文:
一类是通知出错原因 ;一类是用于诊断查询【1】【3】
封装在IP内部的ICMP报文格式如下:【2】
基于ICMP的常用命令:
ping和traceroute
ping(目标主机是否可达)
traceroute(windows 下是tracert)(追踪路由信息)
linux通过TTL+1递增发送UDP查询路由;windows仍为发送ICMP报文查询路由
参考资料:
【2】(79条消息) ICMP协议详解_honeyRJ的博客-CSDN博客_icmp
【3】深入理解ICMP协议 - 知乎 (zhihu.com)
标签:协议,icmp,ICMP,IP,报文,转载,数据包,路由 来源: https://www.cnblogs.com/Asphyxia/p/16339573.html