ICMP协议解析与实战

这篇具有很好参考价值的文章主要介绍了ICMP协议解析与实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.ICMP协议概述

1.1 什么是ICMP?

ICMP(Internet Control Message Protocol的缩写),中文就是:网际报文控制协议。

该协议是网络协议族的核心协议之一。通过一张图来看下该协议所处位置:

(图片来自 百度安全验证):

ICMP协议解析与实战

可以看到,ICMP协议与IP协议同属网络层。

虽然两者同属网络层,没有上下级关系,但是ICMP协议最终还是要依靠IP协议将报文发送出去。

1.2 ICMP协议作用

IP协议我们知道是发送数据包的重要协议,实现了数据包的分片发送。那么ICMP协议呢?

ICMP主要是用于ip主机、路由器直接传递控制消息。

控制消息:网络是否通、主机是否可达、路由是否可用等网络本身的消息。

所以ICMP消息不同于正常的网络通讯包,它主要是传递网络本身问题的消息。

通过ICMP协议发送消息,我们可以确认IP包是否成功达到目标IP;如果数据包在发送过程中被丢弃,ICMP会响应具体的原因;

1.3 基于ICMP协议的命令

1)ping

    该命令我们都比较熟悉了,通常会用来检测目标ip是否存活、发送包传递时间等

2)traceroute

    该命令能够打印出当前主机发送数据包到目标ip主机中经历了多少路由器

2.ICMP协议报文格式

先来简单看下ICMP的报文格式

ICMP协议解析与实战 

 

(1)类型:一个8位类型字段,表示ICMP数据包类型。
(2)代码:一个8位代码域,表示指定类型中的一个功能。如果一个类型中只有一种功能,代码域置为0。
(3)检验和:数据包中ICMP部分上的一个16位检验和。

ICMP协议的类型目前已经定义了十多种,具体如下(来自百度百科):

TYPE

CODE

Description

Query

Error

0

0

Echo Reply——回显应答(Ping应答)

x

3

0

Network Unreachable——网络不可达

x

3

1

Host Unreachable——主机不可达

x

3

2

Protocol Unreachable——协议不可达

x

3

3

Port Unreachable——端口不可达

x

3

4

Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特

x

3

5

Source routing failed——源站选路失败

x

3

6

Destination network unknown——目的网络未知

x

3

7

Destination host unknown——目的主机未知

x

3

8

Source host isolated (obsolete)——源主机被隔离(作废不用)

x

3

9

Destination network administratively prohibited——目的网络被强制禁止

x

3

10

Destination host administratively prohibited——目的主机被强制禁止

x

3

11

Network unreachable for TOS——由于服务类型TOS,网络不可达

x

3

12

Host unreachable for TOS——由于服务类型TOS,主机不可达

x

3

13

Communication administratively prohibited by filtering——由于过滤,通信被强制禁止

x

3

14

Host precedence violation——主机越权

x

3

15

Precedence cutoff in effect——优先中止生效

x

4

0

Source quench——源端被关闭(基本流控制)

5

0

Redirect for network——对网络重定向

5

1

Redirect for host——对主机重定向

5

2

Redirect for TOS and network——对服务类型和网络重定向

5

3

Redirect for TOS and host——对服务类型和主机重定向

8

0

Echo request——回显请求(Ping请求)

x

9

0

Router advertisement——路由器通告

10

0

Route solicitation——路由器请求

11

0

TTL equals 0 during transit——传输期间生存时间为0

x

11

1

TTL equals 0 during reassembly——在数据报组装期间生存时间为0

x

12

0

IP header bad (catchall error)——坏的IP首部(包括各种差错)

x

12

1

Required options missing——缺少必需的选项

x

13

0

Timestamp request (obsolete)——时间戳请求(作废不用)

x

14

Timestamp reply (obsolete)——时间戳应答(作废不用)

x

15

0

Information request (obsolete)——信息请求(作废不用)

x

16

0

Information reply (obsolete)——信息应答(作废不用)

x

17

0

Address mask request——地址掩码请求

x

18

0

Address mask reply——地址掩码应答

 

还是先实战一下,方便我们对其有个更具象的认知。

3.ICMP协议实战

3.1 ping命令实战(正常主机)

笔者准备两台机器,采用ping的方式来进行通讯,ping之前启动好wireshark来进行相应ip抓包

ICMP协议解析与实战

 

3.1.1 抓包实战

客户端直接启动cmd命令行,发送ping命令如下:

C:\Users\lucky>ping 192.168.3.18

正在 Ping 192.168.3.18 具有 32 字节的数据:
来自 192.168.3.18 的回复: 字节=32 时间=114ms TTL=64
来自 192.168.3.18 的回复: 字节=32 时间=65ms TTL=64
来自 192.168.3.18 的回复: 字节=32 时间=45ms TTL=64
来自 192.168.3.18 的回复: 字节=32 时间=3ms TTL=64

192.168.3.18 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 3ms,最长 = 114ms,平均 = 56ms

发送了4次请求,也收到4次回复。

3.1.2 wireshark抓包分析

在进行3.1.1动作之前,先启动wireshark,准备好抓取相应包信息,抓取信息如下:

ICMP协议解析与实战

这里是4次ping请求和响应的总输出。

我们分析下其中一次即可,No.333和No.336

No.333 ping请求体分析

 

No.     Time           Source                Destination           Protocol Length Info
    333 11.697911      192.168.3.8           192.168.3.18          ICMP     74     Echo (ping) request  id=0x0001, seq=11611/23341, ttl=64 (reply in 336)

Frame 333: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on interface 0
Ethernet II, Src: IntelCor_40:2c:f7 (10:f0:05:40:2c:f7), Dst: bc:d0:74:13:40:02 (bc:d0:74:13:40:02)
Internet Protocol Version 4, Src: 192.168.3.8, Dst: 192.168.3.18
Internet Control Message Protocol
    Type: 8 (Echo (ping) request)			# ping请求
    Code: 0									# ping请求
    Checksum: 0x2000 [correct]				# 校验和
    [Checksum Status: Good]
    Identifier (BE): 1 (0x0001)				# 标识符
    Identifier (LE): 256 (0x0100)			# 标识符
    Sequence number (BE): 11611 (0x2d5b)	# 序列号
    Sequence number (LE): 23341 (0x5b2d)	# 序列号	
    [Response frame: 336]
    Data (32 bytes)

注意:

Sequence number(BE)和Sequence number(LE)的值也是相同的,BE和LE是什么区别,他们在内容上只是顺序的不同,而对应的hex值是相同的。

通过资料的查找,可以这样理解:

wireshark考虑到window系统与Linux系统发出的ping报文(主要指ping应用字段而非包含IP头的ping包)的字节顺序不一样(windows为LE:little-endian byte order,Linux为BE:big-endian),别分告诉信息,其本质内容是没有不变的,只是表达形式不同。

No.336 ping响应体分析

No.     Time           Source                Destination           Protocol Length Info
    336 11.812172      192.168.3.18          192.168.3.8           ICMP     74     Echo (ping) reply    id=0x0001, seq=11611/23341, ttl=64 (request in 333)

Frame 336: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on interface 0
Ethernet II, Src: bc:d0:74:13:40:02 (bc:d0:74:13:40:02), Dst: IntelCor_40:2c:f7 (10:f0:05:40:2c:f7)
Internet Protocol Version 4, Src: 192.168.3.18, Dst: 192.168.3.8
Internet Control Message Protocol
    Type: 0 (Echo (ping) reply)				# ping响应
    Code: 0									# ping响应
    Checksum: 0x2800 [correct]				# 校验和
    [Checksum Status: Good]
    Identifier (BE): 1 (0x0001)				# 标识符(这里与ping请求体中的Identifier是相同的)
    Identifier (LE): 256 (0x0100)			# 标识符(这里与ping请求体中的Identifier是相同的)
    Sequence number (BE): 11611 (0x2d5b)	# 序列号(这里与ping请求体中的Sequence number是相同的)
    Sequence number (LE): 23341 (0x5b2d)	# 序列号(这里与ping请求体中的Sequence number是相同的)
    [Request frame: 333]					# 响应帧
    [Response time: 114.261 ms]				# 响应耗时
    Data (32 bytes)

以上就是一个正常的ping命令实战过程。

下面我们来看一个不太正常的,了解下ICMP协议是如何响应控制消息的。

3.2 ping命令实战(非正常主机)

我们来简单测试一种,目标主机不可达的情况。

我们来对一个不存在的主机(ip:192.168.3.18)来发送ping命令,测试下响应结果

3.2.1 抓包实战

客户端直接启动cmd命令行,发送ping命令如下:

C:\Users\lucky>ping 192.168.3.199

正在 Ping 192.168.3.199 具有 32 字节的数据:
来自 192.168.3.8 的回复: 无法访问目标主机。
来自 192.168.3.8 的回复: 无法访问目标主机。
来自 192.168.3.8 的回复: 无法访问目标主机。
来自 192.168.3.8 的回复: 无法访问目标主机。

192.168.3.199 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),

ping请求直接返回了目标主机无法访问

3.2.2 wireshark抓包分析

在进行3.2.1动作之前,先启动wireshark,准备好抓取相应包信息,抓取信息如下:

ICMP协议解析与实战

 

这里协议Info内容也是Destination unreachable

来看下具体信息

No.     Time           Source                Destination           Protocol Length Info
      4 9.008265       192.168.3.8           192.168.3.8           ICMP     92     Destination unreachable (Host unreachable)

Frame 4: 92 bytes on wire (736 bits), 92 bytes captured (736 bits) on interface 0
Null/Loopback
Internet Protocol Version 4, Src: 192.168.3.8, Dst: 192.168.3.8
Internet Control Message Protocol											# ICMP响应
    Type: 3 (Destination unreachable)										# 主机不可达
    Code: 1 (Host unreachable)												# 主机不可达
    Checksum: 0xe37f [correct]
    [Checksum Status: Good]
    Unused: 00000000
    Internet Protocol Version 4, Src: 192.168.3.8, Dst: 192.168.3.199
    Internet Control Message Protocol										# ICMP请求体
        Type: 8 (Echo (ping) request)										# ping请求
        Code: 0																# ping请求
        Checksum: 0x1f9f [unverified] [in ICMP error packet]
        [Checksum Status: Unverified]
        Identifier (BE): 1 (0x0001)
        Identifier (LE): 256 (0x0100)
        Sequence number (BE): 11708 (0x2dbc)
        Sequence number (LE): 48173 (0xbc2d)
        Data (32 bytes)

总结:根据ICMP响应的Type和Code,对照表内容之后,可以知道目标主机不可达

总结:

ICMP协议与IP协议一样,都是位于网络层的协议。

但是ICMP协议主要是用来传递控制消息,根据不同的Type和Code来展示目标主机的基本情况(是否可达、路由是否可用等信息)。
本质上,ICMP协议需要借助IP协议将网络包发送出去。文章来源地址https://www.toymoban.com/news/detail-439531.html

到了这里,关于ICMP协议解析与实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络协议--IGMP:Internet组管理协议

    12.4节概述了IP多播给出,并介绍了D类IP地址到以太网地址的映射方式。也简要说明了在单个物理网络中的多播过程,但当涉及多个网络并且多播数据必须通过路由器转发时,情况会复杂得多。 本章将介绍用于支持主机和路由器进行多播的Internet组管理协议(IGMP)。它让一个物

    2024年02月06日
    浏览(26)
  • DNS协议、ICMP协议、NAT技术

    目录 一、DNS协议 1.1 认识DNS 1.2 域名简介 1.3 域名解析过程 1.4 使用dig工具分析DNS过程 二、ICMP协议 2.1 ICMP协议的定位 2.2 ICMP功能 2.3 ICMP协议格式(了解) 2.4 ping命令 2.5 traceroute命令 三、NAT技术(重点) 3.1 NAT技术背景 3.2 NAT IP转换过程 3.3 NAPT 3.4 NAT的缺陷 3.5 NAT与代理服务器

    2024年02月05日
    浏览(25)
  • 网络协议与攻击模拟-05-ICMP协议

    1、理解 ICMP 协议 2、理解 ICMP 重定向 3、会使用 wireshark 分析 ICMP 重定向流量实验 1、 ICMP 协议 Internet 控制报文协议,用于在 IP 主机、路由器之间传递控制消息,控制消息指网络通不通、主机是否可达、路由是否可用等等. ICMP 是属于网络层的协议,封装在传输层与网络层之间

    2024年02月03日
    浏览(43)
  • 【计算机网络】网络层协议 -- ICMP协议

    ICMP(Internet Control Message Protocol,控制报文协议),用于在IP主机、路由器直接传递控制消息,是一个TCP/IP协议。 ICMP协议的定位 网络层的最典型的协议是IP协议,但是除了IP协议之外,还有ICMP协议和IGMP协议。 ICMP、IGMP和IP协议虽然都属于网络层的协议,但是ICMP协议和IGMP协议属

    2024年02月14日
    浏览(31)
  • 2.1 - 网络协议 - ARP协议原理,报文解析,抓包实战

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 ARP(Address Resolution Protocol)是 「地址解析协议」 ,可以根据IP地址获取Mac地

    2024年02月07日
    浏览(27)
  • 网络ICMP 协议详解

    ICMP 协议 什么是 ICMP ICMP 的主要功能 ICMP 在 IPv4 和 IPv6 的封装 ICMP 的主要消息 ICMP 目标不可达(类型 3) ICMP 重定向消息(类型 5) ICMP 超时消息(类型 11) ICMP 回送消息(类型 0 和 类型 8) 其他 ICMP 消息 ICMP 原点抑制消息(类型 4) ICMP 路由器探索消息(类型 9、10) ICMP 地址掩码消息(类型

    2024年02月04日
    浏览(24)
  • 网际控制报文协议ICMP

    网际控制报文协议ICMP ​ 为了更有效的转发IP数据报和提高交付成功的机会,在网际层使用ICMP(Internet Control Message Protocol)协议,其 允许主机或路由器报告差错情况和提供有关异常情况的报告 。ICMP报文装在IP数据报中,作为其中的数据部分,看起来像高层协议,但其实还是

    2024年02月06日
    浏览(32)
  • 【网络】网络层ICMP协议

    🦄  个人主页—— 🎐 开着拖拉机回家_Linux,大数据运维-CSDN博客   🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁   🪁🍁🪁🍁🪁🍁🪁   🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁🪁🍁 感谢点赞和关注 ,每天进步一点点!加油! 目录 一、ICMP协议简介 二、ICMP报文 2.1 ICMP 的主要功能 2.2 报文类

    2024年01月23日
    浏览(27)
  • ICMP协议

    一、ICMP协议 ICMP(Internet Control Message Protocol) 网际控制报文协议 。它是TCP/IP协议簇的一个子协议, ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告,用于在IP主机、路由器之间传递控制消息 。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身

    2024年02月10日
    浏览(18)
  • 【计算机网络】ICMP协议

    实验目的 应用所学知识: 1.熟悉ICMP的协议格式。 2.理解ping的运作机制。 3.理解traceroute的运作机制。 4.理解VPN的运作机制。 实验步骤与结果 1.任务一: 使用ping命令向www.sdu.edu.cn发送消息: 在wireshark中捕获到数据包: (1) 你所使用的主机的IP地址是多少?目标主机的IP地址是多

    2023年04月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包