ICMP协议个人分析

Internet控制消息协议CMP(Internet Control Message Protocol)是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息,并对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。使用基于ICMP的应用时,需要对ICMP的工作原理非常熟悉。
 

ICNP是TCP/IP协议簇的核心协议之一,它用于在IP网络设备之间发送控制报文,传递差错、控制、查询等信息,也就是=ping
 

ICMP重定向

 我们PC主机端都有网关,例如主机A网关是100,他要发送报文首先向他的网关路由器打招呼,喊他帮忙整一整,RTB得和他连接得接口ip就是100,所以第一个找他,RTB检查报文信息发现不是找他,而是找他同网段的另一台网关设备,所以RTB会向主机发送redirect(重定向)消息,让他去找200的RTA,RTA则会将报文转发给服务器A。

ICMP差错检测

ICMP Echo Request和ICMP Echo Reply分别用来查询和响应某些信息,进行差错检测。 

主机A向服务器A发送报文为请求报文,也就是request        服务器收到要回复,称为reply

简单来讲,抓包出来的报文,有请求,有回复的就是能够连接的,如果只有请求没有回复就是没链接对。

正常

 错误

 ICMP错误报告

当网络设备无法访问目标网络时,会自动发送CMP目的不可达报文到发送端设备

 ICNP定义了各种错误消息,用于诊断网络连接性问题;根据这些错误消息,主机A可以判断出数据传输失败的原因。比如,如果网络中发生了环路,导致报文在网络中循环,且最终TTL超时,这种情况下网络设备会发送TTL超时消息给发送端设备。又比如如果目的地不可达,则中间的网络设备会发送目的不可达消息给发送端设备。目的不可达的情况有多种,如果是网络设备无法找到目的网络,则发送目的网络不可达消息;如果网络设备无法找到目的网络中的目的主机,则发送目的主机不可达消息。

ICMP数据包格式

这里只是说ICMP数据包的格式,type表示数据包类型,code表示同一类型中不同的信息 checksum也就是校验,用于检查消息是否完整,消息中包含32比特的可变参数,checksum字段一般不使用

 再ICMP的Redirect消息中,这个字段用来指定网关IP地址,主机根据这个地址将报文重定向到网关。在Echo请求消息中,这个字段包含标识符和序号,源端根据这两个参数将收到的回复消息与本端发送的Echo请求消息进行关联。尤其是当源端问目的端发送了多个Echo请求消息时,需要根据标识符和序号将Echo请求和回复消息进行——对应。

ICMP消息类型和编码类型

怎么再实际上用到呢,当然是抓包咯

 抓了个ping包,10ping21显示为request 它的type和code分别是8和0

 那么reply则是type 0 code 0

type类型为3的属于是网络报错信息,报错有很多种,所以分开为1234

ICMP的一个典型应用是Ping。Ping是检测网络连通性的常用工具,同时也能够收集其他相关信息。用户可以在Ping命令中指定不同参数,如ICMP报文长度、发送的ICMP报文个数.等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP恨文,进行Ping测l试。
Ping常用的配置参数说明如下:
1. -a 源IP 目的IP 指定发送IGNP ECHO-REQUEST报文的源IP地址。如失不指定源IP地址,将采用出接口的IP地址作为ICNP ECHO-REQUEST报文发送的源地址。

例: ping -a 10.1.1.100    21.1.1.100


2. -c count指定发送ICMP ECHO-REQUEST报文次数。缺省情况下发送5个ICMIP ECHO-REQUEST报文。

3. -h ttl-value指定TTL的值。缺省值是255。


4. -t timeout指定发送完ICMP ECHO-REQUEST后,等待ICMP ECHO-REPLY的超时时间。
 

ICMP应用Tracert

TTL值 一般Windows为128 Linux为64 

当我们使用Ping命令进行网络连通测试或者是测试网速的时候,本地计算机会向目的主机发送数据包,但是有的数据包会因为一些特殊的原因不能正常传送到目的主机,如果没有设置TTL值的话,数据包会一直在网络上面传送,浪费网络资源。数据包在传送的时候至少会经过一个以上的路由器,当数据包经过一个路由器的时候,TTL就会自动减1,如果减到0了还是没有传送到目的主机,那么这个数据包就会自动丢失,这时路由器会发送一个ICMP报文给最初的发送者。举个例子,如果一个主机的TTL是64,那么当它经过64个路由器后还没有将数据包发送到目的主机的话,那么这个数据包就会自动丢弃。

当我们TTL值为0的时候,将我们数据包丢弃的路由器会向我们发送一个ICMP报文,告诉我们丢了,但在这个报文中夹杂着这个路由器的IP地址等信息,所以我们可以通过控制TTL值来对网络进行排查,看问题出在了哪里,而不是摸top。。。

Tracert

        Tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径。为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1。该报文到达第一个节点后,TTL超时,于是该节点向源端发送TTL超时消息,消息中携带时间戳。然后源端将报文的TTL值设置为2,报文到达第二个节点后超时,该节点同样返回TTL超时消息,以此类推,直到报文到达目的地。这样,源端根据返回的报文中的信息可以跟踪到报文经过的每一个节点,并根据时问戳信息计算往返时间。Tracert是检测网络丢包及时延的有效手段,同时可以帮助管理员发现网络中的路由环路。Tracert常用的配置参数说明如下:
-a source-ip-address        指定tracert报文

-f  first  -ttl        指定初始TTL。缺省值是1。

-m max-tt1        指定最大TTL。缺省值是30。

-name        使能显示每一跳的主机名。

-p port        指定月的主机的UDP端口号

一般用不到 直接 tracert IP地址 就OK

 怎么做呢,你可以先ping一下百度域名,回复得到IP过后再对得到的IP进行 tracert。。。

该总结学习于B站视频网址如下,如有总结不到之处我自己担待。

https://www.bilibili.com/video/BV1D44y1b7WW?p=8&spm_id_from=333.880.my_history.page.click

【千锋】网络安全入门基础教程_华为/思科(CCIE/HCIE)全套课程_纯干货整理_哔哩哔哩_bilibili

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值