ICMP是TCP/IP协议族的一个IP层子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

ICMP位于TCP/IP协议族中IP层。

ICMP的主要功能包括:确认IP包是否成功送达目标地址,通知在发送过程当中IP包被废弃的具体原因,改善网络设置等。同时ICMP的这种通知消息会使用IP进行发送,收到ICMP包的主机会分解ICMP的首部和数据与以后得知具体发生的原因。

ICMP报文在IP数据报内部被传输,就像TCP与UDP报文段那样。

特点:

(1)ICMP本身是网络层的一个协议,但是它的报文不是直接传送给数据链路层,而是要封装成IP数据报,然后在传送给数据链路层。

(2)从协议体系上看,ICMP的差错和控制信息传输只是要解决IP协议可能出现的不可靠问题,它不具有普遍意义上的传输机制,它也不是传输层赖以存在的基础,它不能独立于IP协议而单独存在,因此把它归于IP协议的一个部分,而归于IP协议体系。

(3)ICMP协议的设计初衷是用于IP协议在执行过程中的出错报告,严格的说是路由器向源主机报告传输差错的原因。

(4)ICMP不能纠正差错,只能报告差错。

ICMP数据报格式

|<---------------------------------------------   数据域------------------------------------------->|

IP报头(20B)                        type字(1B) code字段(1B) checksum字段(2B) ICMP数据及整个IP数据段                                            

(1)ICMP信息 必须全部 封装在IP数据报的 数据域 中,长度必须限制在576B以内。

(2)根据IP数据报报头的规定,报头的协议字段值为1,所以接收端的路由器及主机根据报头的协议字段值为1,来判断改该IP数据报携带ICMP信息,为ICMP数据报。

ICMP报文的前4个字节都是一样的,但是剩下的其他字节则互不相同。

类型字段可以有15个不同的值,以描述特定类型的ICMP报文。某些ICMP报文还使用代码字段的值来进一步描述不同的条件。校验和字段覆盖整个ICMP报文,算法与IP首部校验和相同。

ICMP报文分类:一类是通知出错原因的错误消息(差错报文),另一类是用于诊断的查询消息(查询报文)。

差错报文分5类:

1、目的站不可到达

2、源站抑制

3、超时

4、参数问题

5、改变路由

查询报文分四类:

1、回送请求与回答

2、 时间戳请求与回答

3、地址掩码请求与回答

4、 路由器询问和通告

下面各种情况都不会导致产生ICMP差错报文:

1) ICMP差错报文(但是,ICMP查询报文可能会产生ICMP差错报文)。

2) 目的地址是广播地址或多播地址的IP数据报。

3) 作为链路层广播的数据报。

4) 不是IP分片的第一片。

5) 源地址不是单个主机的数据报。这就是说,源地址不能为零地址、环回地址、广播地址或多播地址。

常用ICMP消息类型

不同类型由报文中的类型字段和代码字段来共同决定。

类型3:ICMP目标不可达消息

IP路由器无法将IP数据包发送给目标地址时,会给发送端主机返回一个目标不可达的ICMP消息。并在这个消息中显示不可达的具体原因。而在实际通信过程中常遇到错误代码为1,表示主机不可达,它是指路由表中没有改主机信息或者该主机没有联网的意思。

类型5:ICMP重定向消息

如果路由器发送端主机使用了次优的路径发送数据,那么它会返回一个ICMP重定向消息给这个主机,在这个消息中包含了最合适的路由消息和源数据。这主要发生在路由器持有更好的路由器信息的情况下,路由器会通知这样的ICMP消息给发送端主机一个更适合的发送路由。

类型11:ICMP超时消息

IP包中有有一个字段叫做TTL,它的值就是每经过一次路由器就会被减1,直到0时该IP包会被丢弃,此时IP路由器将会发送一个ICMP超时的消息给发送端主机,并通过该包已被丢弃。

设置IP包生存周期的主要目的,是为了在路由控制遇到问题发生循环状态时,避免IP包无休止地在网络上被转发。

类型0、8:ICMP回送消息

用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息。可以向对端主机发送回送请求的消息(类型8),也可以接受对端主机发回来的回送应答消息(类型0)。网络上最常用的ping命令,就是利用这个消息实现的。

因特网控制报文协议ICMP相关推荐

  1. 【计算机网络】湖科大微课堂笔记 p54-56 IPv4数据报的首部格式、网际控制报文协议ICMP、虚拟专用网VPN与网络地址转换NAT

    文章目录 IPv4数据报的首部格式 小结 一些例题 网际控制报文协议ICMP 小结 一些例题 虚拟专用网VPN与网络地址转换NAT 小结 IPv4数据报的首部格式 版本 首部长度.可选字段.填充字段 ...

  2. C#Ping命令【因特网控制消息协议ICMP】

    ICMP协议 ICMP(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议簇的一个子协议,用于在IP主机.路由器之间传递控制消息.控 ...

  3. 计算机网络-基本概念(2)【网络层】-网际控制报文协议ICMP

    为了更有效的转发IP数据报和提高交付成功的机会,在网络层使用了网际控制报文协议ICMP.ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告. 差错报告报文 终点不可达:使用tracerout ...

  4. 计算机网络 网际控制报文协议 ICMP

    介绍 为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP(Internet Control Message Protocol) ICMP是互联网的标准协议 ICM ...

  5. LWIP学习笔记---网际控制报文协议ICMP

    网际控制报文协议 背景 相关概念 报文类型 报文格式 差错报文 查询报文 代码实现 数据结构 发送差错报文代码实现 回送报文请求 背景 IP协议并不完美,在传递数据时提供的是一种无连接的不可靠数据报交 ...

  6. 互联网控制报文协议ICMP(计算机网络)

    目录 一.ICMP(Internet Control Message Protocol)概述 二.ICMP报文的格式 三.ICMP的差错报告报文 1.终点不可达 2.源点抑制 3.TTL超时 4.参数 ...

  7. 网际控制报文协议ICMP的应用——traceroute

    为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol). ICMP的应用举例 ICMP的一个重要应 ...

  8. 网络层:网际控制报文协议ICMP

    网络层:网际控制报文协议ICMP 笔记来源: 湖科大教书匠:网际控制报文协议ICMP 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 主机或路由器使用ICMP来发送差错报告报文和询问报文 ICMP ...

  9. 利用WireShark分析由Ping产生的Internet 控制报文协议(ICMP)

    2019独角兽企业重金招聘Python工程师标准>>> ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP ...

最新文章

  1. 运动桁架下压力信号采集与处理
  2. 确保***测试计划成功的10个秘诀(语录)
  3. 思考问题的“六顶帽子”
  4. PHP数据结构之三 线性表中的单链表的PHP实现
  5. wxpython可视化_使用wxPython的绘图模块wxPyPlot进行数据可视化
  6. SQL Server添加索引
  7. linux mount 默认读写,Linux mount 修改文件系统的读写属性
  8. LeetCode 10.正则表达式匹配(动态规划)
  9. Qt加载osgearth时报错:0x0000xxx处未经处理的异常:0xC00005:写入位置***发生冲突
  10. 07-12-Exchange Server 2019-安装-CU1
  11. 算法:回溯六 Permutations II数组全排列II
  12. 免费暗黑3暗藏的危险
  13. 训练神经网络的详细步骤,神经网络训练完怎么用
  14. 这样的文件操作有点玄——文件流学习 ( 二 )
  15. 计算机辅助英语教学mti,计算机辅助翻译介绍
  16. 独家丨Web3风向从NFTs吹向DAOs?一季度DAO发展回顾
  17. Python TypeError: cat() takes no arguments
  18. PCIE及南桥芯片组
  19. 路由器子接口及VLAN配置
  20. 小程序----文字竖排

热门文章

  1. Hadoop学习之路(五):Hadoop交互关系型数据库(MySQL)
  2. 电力信息采集的通用型通信规约解析系统研究与设计
  3. 江苏大学京江学院c语言课程设计,京江学院plc课程设计.doc
  4. 云主机Windows Server 2012 R2 的 VMware 和HYPER-V不兼容怎么删除HYPER-V
  5. 电脑计算机硬盘坏了如何修理,电脑硬盘坏了能修吗?电脑硬盘坏了的解决办法...
  6. 史上最强像素画教程「Pixel Art」像素画入门教学本
  7. Linux——文本编辑器(Vi)详解介绍
  8. oracle job执行chain,全面学习ORACLE Scheduler特性(9)使用Chains之创建CHAIN
  9. STM8L101活跃停机(AWU)编程教学
  10. STM32+LORA芯片调试