因特网控制报文协议ICMP
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相关推荐
- 【计算机网络】湖科大微课堂笔记 p54-56 IPv4数据报的首部格式、网际控制报文协议ICMP、虚拟专用网VPN与网络地址转换NAT
文章目录 IPv4数据报的首部格式 小结 一些例题 网际控制报文协议ICMP 小结 一些例题 虚拟专用网VPN与网络地址转换NAT 小结 IPv4数据报的首部格式 版本 首部长度.可选字段.填充字段 ...
- C#Ping命令【因特网控制消息协议ICMP】
ICMP协议 ICMP(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议簇的一个子协议,用于在IP主机.路由器之间传递控制消息.控 ...
- 计算机网络-基本概念(2)【网络层】-网际控制报文协议ICMP
为了更有效的转发IP数据报和提高交付成功的机会,在网络层使用了网际控制报文协议ICMP.ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告. 差错报告报文 终点不可达:使用tracerout ...
- 计算机网络 网际控制报文协议 ICMP
介绍 为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP(Internet Control Message Protocol) ICMP是互联网的标准协议 ICM ...
- LWIP学习笔记---网际控制报文协议ICMP
网际控制报文协议 背景 相关概念 报文类型 报文格式 差错报文 查询报文 代码实现 数据结构 发送差错报文代码实现 回送报文请求 背景 IP协议并不完美,在传递数据时提供的是一种无连接的不可靠数据报交 ...
- 互联网控制报文协议ICMP(计算机网络)
目录 一.ICMP(Internet Control Message Protocol)概述 二.ICMP报文的格式 三.ICMP的差错报告报文 1.终点不可达 2.源点抑制 3.TTL超时 4.参数 ...
- 网际控制报文协议ICMP的应用——traceroute
为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol). ICMP的应用举例 ICMP的一个重要应 ...
- 网络层:网际控制报文协议ICMP
网络层:网际控制报文协议ICMP 笔记来源: 湖科大教书匠:网际控制报文协议ICMP 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 主机或路由器使用ICMP来发送差错报告报文和询问报文 ICMP ...
- 利用WireShark分析由Ping产生的Internet 控制报文协议(ICMP)
2019独角兽企业重金招聘Python工程师标准>>> ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP ...
最新文章
- 运动桁架下压力信号采集与处理
- 确保***测试计划成功的10个秘诀(语录)
- 思考问题的“六顶帽子”
- PHP数据结构之三 线性表中的单链表的PHP实现
- wxpython可视化_使用wxPython的绘图模块wxPyPlot进行数据可视化
- SQL Server添加索引
- linux mount 默认读写,Linux mount 修改文件系统的读写属性
- LeetCode 10.正则表达式匹配(动态规划)
- Qt加载osgearth时报错:0x0000xxx处未经处理的异常:0xC00005:写入位置***发生冲突
- 07-12-Exchange Server 2019-安装-CU1
- 算法:回溯六 Permutations II数组全排列II
- 免费暗黑3暗藏的危险
- 训练神经网络的详细步骤,神经网络训练完怎么用
- 这样的文件操作有点玄——文件流学习 ( 二 )
- 计算机辅助英语教学mti,计算机辅助翻译介绍
- 独家丨Web3风向从NFTs吹向DAOs?一季度DAO发展回顾
- Python TypeError: cat() takes no arguments
- PCIE及南桥芯片组
- 路由器子接口及VLAN配置
- 小程序----文字竖排
热门文章
- Hadoop学习之路(五):Hadoop交互关系型数据库(MySQL)
- 电力信息采集的通用型通信规约解析系统研究与设计
- 江苏大学京江学院c语言课程设计,京江学院plc课程设计.doc
- 云主机Windows Server 2012 R2 的 VMware 和HYPER-V不兼容怎么删除HYPER-V
- 电脑计算机硬盘坏了如何修理,电脑硬盘坏了能修吗?电脑硬盘坏了的解决办法...
- 史上最强像素画教程「Pixel Art」像素画入门教学本
- Linux——文本编辑器(Vi)详解介绍
- oracle job执行chain,全面学习ORACLE Scheduler特性(9)使用Chains之创建CHAIN
- STM8L101活跃停机(AWU)编程教学
- STM32+LORA芯片调试