下面是小编为大家整理的网络技术基础知识-深入浅出网工第二个协议icmp,供大家参考。
深入浅出网工第二个协议---Internet 控制报文协议 ICMP ICMP 简介 ICMP(Internet Control Message Protocol)是网络层的一个重要协议 ICMP 的作用:用来在网络设备间传递各种差错和控制信息,它对于收集各种网络信息、诊断和排除各种网络故障具有至关重要的作用。
ICMP 协议中用到的报文类型:Echo-Request 和 Echo-Reply 两种报文 使用的都是单播报文。
ICMP 错误报告 ICMP 定义了各种错误消息,用于诊断网络连接性问题;根据这些错误消息,源设备可以判断出数据传输失败的原因。比如,如果网络中发生了环路,导致报文在网络中循环,最终 TTL 超时,这种情况下网络设备会发送 TTL 超时消息给发送端设备。又比如如果目的不可达,则中间的网络设备会发送目的不可达消息给发送端设备。
总结
注意:ICMP 定义了多种消息类型,用于不同的场景 有些消息不需要 Code 字段来描述具体类型参数,仅用 Type 字段表示消息类型。
有些 ICMP 消息使用 Type 字段定义消息大类,用 Code 字段表示消息的具体类型。
ICMP 重定向 主机 A 希望发送报文到服务器 A,于是根据配置的默认网关地址向网关 RTB 发送报文。网关 RTB 收到报文后,检查报文信息,发现报文应该转发到与源主机在同一网段的另一个网关设备 RTA,因为此转发路径是更优的路径。所以 RTB 会向主机发送一个Redirect 消息,通知主机直接向另一个网关 RTA 发送该报文。主机收到 Redirect 消息后,向 RTA 发送报文,RTA 会将报文转发给服务器 A。
发生重定向的条件: 第一:同接口进出 第二:满足第二条源和下一跳同网段 第三:路由器 RTB 发出的重定向报文
典型应用
PING 应用 Ping 是检测网络连通性的常用工具,同时也能够收集其他相关信息
PING 常用的配置参数说明如下 -a(source-ip-address)参数 指定发送 ICMP ECHO-REQUEST 报文的源 IP 地址。如果不指定源 IP 地址,将采用出接口的 IP 地址作为 ICMP ECHO-REQUEST 报文发送的源地址。
现在全网已经互通了,我们在 R1 上面验证一下 ping 命令的参数
在 R1 上查看到达 3.3.3.3 路由的出接口为 R1 的 G0/0/0 接口
所以:默认情况下,R1 访问目标地址的时候,所携带的源 IP 地址是 12.1.1.1 即自己的接口 IP 地址作为源 IP 地址访问目标 IP 地址 验证-a 参数的用法:
R1 访问目标地址的时候,所携带的源 IP 地址是 1.1.1.1 即自己的 loopback 0 地址
-c(count)参数 指 定 发 送 ICMP ECHO-REQUEST 报 文 次 数 。
缺 省 情 况 下 发 送 5 个 ICMP ECHO-REQUEST 报文。
-h(ttl-value)参数 指定 TTL 的值。缺省值是 255。
-t(timeout)参数 指定发送完 ICMP ECHO-REQUEST 后,等待 ICMP ECHO-REPLY 的超时时间。
注意:ping 命令的输出信息中包括目的地址、ICMP 报文长度、序号、TTL 值、以及往返时间。序号是包含在 Echo 回复消息(Type=0)中的可变参数字段,TTL 和往返时间包含在消息的 IP 头中。
TRACERT 应用 Tracert 是检测网络丢包及时延的有效手段,同时可以帮助管理员发现网络中的路由环路
TRACERT 常用的配置参数如下:
-a (source-ip-address)参数 指定 tracert 报文的源地址。
-f (first-ttl)参数 指定初始 TTL。缺省值是 1。
-m (max-ttl)参数 指定最大 TTL。缺省值是 30。
-name 参数 使能显示每一跳的主机名。
-p (port)参数 指定目的主机的 UDP 端口号。
TRACERT 原理 第一步:发送一个 UDP 报文,TTL 值为 1 RTA 向目的端主机 B 发送一个 UDP 报文,TTL 值为 1,目的 UDP 端口号是大于 30000的一个数,因为在大多数情况下,大于 30000 的 UDP 端口号是任何一个应用程序都不可能使用的端口号。
第一跳(RTB)收到源端发出的 UDP 报文后,判断出报文的目的 IP 地址不是本机 IP地址,将 TTL 值减 1 后,判断出 TTL 值等于 0,则丢弃报文并向源端发送一个 ICMP超时(Time Exceeded)报文(该报文中含有第一跳的 IP 地址 10.0.0.2),这样源端就得到了 RTB 的地址。
第二步:发送一个 UDP 报文,TTL 值为 2 源端收到 RTB 的 ICMP 超时报文后,再次向目的端发送一个 UDP 报文,TTL 值为 2。第二跳(RTC)收到源端发出的 UDP 报文后,回应一个 ICMP 超时报文,这样源端就得到了 RTC 的地址(20.0.0.2)。
第 N 步:发送一个 UDP 报文,TTL 值为 N
以上过程不断进行,直到目的端收到源端发送的 UDP 报文后,判断出目的 IP 地址是本机 IP 地址,则处理此报文。根据报文中的目的 UDP 端口号寻找占用此端口号的上层协议,因目的端没有应用程序使用该 UDP 端口号,则向源端返回一个 ICMP 端口不可达(Destination Unreachable)报文。
源端收到 ICMP 端口不可达报文后,判断出 UDP 报文已经到达目的端,则停止 Tracert程序,从而得到数据报文从源端到目的端所经历的路径(10.0.0.2;20.0.0.2;30.0.0.2)