首页 > 代码库 > ICMP

ICMP

ICMP全称为internet control message protocol,其IP头为1,是一个网络层协议,开发这个协议的主要目的是用来管理网络,通过在主机与路由器之间传递控制消息,消息是指网络本身的一些消息,如网络通不通,主机是否可达,

服务是否可用等协议。

 

ICMP消息分装在IP头后面,协议号为1,如下图:

wKioL1R3PkOxM4WpAABYhuyUXxA996.jpg

  ICMP报文的格式:

wKiom1R3Pb_x8a4HAABqfaECGyE688.jpg

 

ICMP的消息可以分为错误消息、请求消息、回复消息。

 

ICMP常用的类型和代码

wKioL1R3PkPyctNfAAEmYtJu1HY274.jpg

 

ICMP重定向:ICMP重定向是指在广播网络中,如果路由器发现有比我更好的路径时,会给主机发送一个消息,让主机从更好的路走。

 

报文如下:

wKiom1R3PcDzkD8-AACAXw2fuKk678.jpg

 

 

ICMP路由通告

用于ICMP路由发现协议(IRDP

ICMP还可以为主机发现本地最优的网关,接口下优先级大的优先成为主机的网关。


ICMP重定向实验

wKioL1R3PkPhLnpQAADUXzDYMMs244.jpg

拓扑图如上:

R5默认路由指向R3R3上指了一跳去往192.168.12.0/24网段的静态路由到R2

 

R5访问12网段时,会将数据包发送到R3R3发现有更好的路径去往12网段,于是给R5发送了一个ICMP重定向消息,让他把后续的数据包直接发送到R2

 

R5的路由表中会产生一条指向12网段下一跳是R2的静态路由,抓包如下:

wKiom1R3Pr3x2vHjAAI-q-FMEWk551.jpg


本文出自 “八块排骨加油站” 博客,谢绝转载!

ICMP