一、介绍

连接网络的设备称为gateway。这些gateway在彼此之间沟通控制信息时使用Gateway to Gateway Protocol(GGP)[3,4]。偶尔一个gateway或目的主机会和一个源主机进行沟通,例如汇报数据报处理时的一个错误。为了满足协议中的这个目的引入了Internet Control Message Protocol(ICMP)。ICMP利用了IP的各种基础支持,表现的好像是高层协议的一部分,但实际上,ICMP是IP的一部分,需要被每个IP模块实现。

ICMP报文在几种情况下被发送。如,当一个数据报无法到达终点时,当gateway没有足够的缓存能力来发送数据报时,以及gateway可以引导主机在更短的路线上进行通信。

IP被设计成不可靠的模式。这些控制信息的目的是对交流过程中的问题提供反馈,但并不是为了使得IP可靠。IP并不保证一个数据报会被成功送达或者一个控制信息可以成功返回。一些数据报可能在没有任何汇报的情况下丢失。使用IP的高层次信息必须实现他们自己的可靠传输过程。

ICMP数据报通常被用来汇报处理数据报时发生的错误。为了避免无穷无尽的递归汇报过程,我们不会对ICMP信息发送ICMP。同样ICMP只汇报段分片中偏移为0的片(fragment 0)的错误信息。

二、信息格式

ICMP信息在发送时使用基本的IP头部。数据部分的第一个字节是ICMP type域;这个值决定了其余数据的格式。标为“unused”的域需要保留下来作为后续的拓展,并且在发送时值要设置为0,同时接收方也不能使用这些域(除非在checksum中进行检查)。除非在下面各个不同用处中的特殊声明,ICMP中的IP首部各个值如下所示:


Version

4


IHL

32位字衡量的网络首部长度


Type of Service

0


Total Length

用字节衡量的IP首部以及数据长度。


Identification, Flags, Fragment Offset

在数据分片中用到的信息,参考RFC 791。


Time to Live

用秒衡量的存活时间;这个域在数据报经过的每个处理它的机器上都会减少,因此这个值最少要大于这个数据报要经过的gateway的数量。


Protocol

ICMP = 1


Header Checksum

The 16 bit one’s complement of the one’s complement sum of all 16 bit words in the header. For computing the checksum, the checksum field should be zero. This checksum may be replaced in the future.


Source Address

生成ICMP信息的gateway或host的地址。除非特意声明,这可以是任意一个gateway的地址。


Destination Address

这个信息需要发送到的gateway或host的地址。

三、Destination Unreachable Message

    0                   1                   2                   30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|     Type      |     Code      |          Checksum             |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|                             unused                            |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|      Internet Header + 64 bits of Original Data Datagram      |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3.1 IP域


Destination Address

从初始数据报数据中提取出的源网络地址。

3.2 ICMP域


Type

3


Code

  • 0 = net unreachable
  • 1 = host unreachable
  • 2 = protocol unreachable
  • 3 = port unreachable
  • 4 = fragmentation needed and DF set
  • 5 = source route failed

Checksum

The checksum is the 16-bit ones’s complement of the one’s complement sum of the ICMP message starting with the ICMP Type. For computing the checksum , the checksum field should be zero. This checksum may be replaced in the future.


Internet Header + 64 bits of Data Datagram

IP首部加上初始数据报数据的前64位。这个数据被host用来匹配对应的进程。如果一个高层协议使用了端口号,那么这个端口号被认为在数据报的前64位中。


Description

If, according to the information in the gateway’s routing tables, the network specified in the internet destination field of a datagram is unreachable, e.g., the distance to the network is infinity, the gateway may send a destination unreachable message to the internet source host of the datagram. In addition, in some networks, the gateway may be able to determine if the internet destination host is unreachable. Gateways in these networks may send destination unreachable messages to the source host when the destination host is unreachable.

If, in the destination host, the IP module cannot deliver the datagram because the indicated protocol module or process port is not active, the destination host may send a destination unreachable message to the source host.

Another case is when a datagram must be fragmented to be forwarded by a gateway yet the Don’t Fragment flag is on. In this case the gateway must discard the datagram and may return a destination unreachable message.

Codes 0, 1, 4, and 5 may be received from a gateway. Codes 2 and 3 may be received from a host.

四、Time Exceeded Message

五、Parameter Problem Message

六、Source Quench Message

七、Redirect Message

八、Echo or Echo Reply Message

    0                   1                   2                   30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|     Type      |     Code      |          Checksum             |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|           Identifier          |        Sequence Number        |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|     Data ...+-+-+-+-+-

3.1 IP域


Addresses

echo信息中的源地址会成为echo reply信息中的目的地址。为了生成一个echo reply信息,源地址和目的地址会简单的进行调换,type更改为0并重新计算checksum的值。

3.2 ICMP域


Type

对于echo信息来说是8
对于echo reply信息来说是0


Code

0


Checksum

The checksum is the 16-bit ones’s complement of the one’s complement sum of the ICMP message starting with the ICMP Type. For computing the checksum , the checksum field should be zero. If the total length is odd, the received data is padded with one octet of zeros for computing the checksum. This checksum may be replaced in the future.


Identifier

如果code=0,那么Identifier用来帮助匹配echo和reply,这个值可能为0。


Sequence Number

如果code=0,那么sequence number会被用来帮助匹配echo和reply,这个值可能为0。


Description

echo信息中收到的信息必须在echo reply信息中进行返回。

identifier以及sequence number可能被echo发送者用来帮助匹配reply信息。例如,可能使用TCP或UDP中的端口号作为identifier来辨认一个session,sequence number可能在每个发送的echo request都增加。echoer在echo reply中返回同样的信息。

可以从gateway或host中收到Code 0。

参考

RFC792翻译(ICMP主要内容)相关推荐

  1. 怎么翻译PDF文件内容?教你一招轻松翻译整篇PDF文件

    怎么把PDF文件中的内容给翻译成其他语言呢?PDF是很多人在办公或学习中必不可少的文件格式,但当我们收到或者是下载到一份不怎么认识的PDF文件时,想要知道文件具体的内容,我们就需要将文件进行翻译,那么 ...

  2. 知云文献翻译跨页内容选中翻译操作

    知云文献翻译阅读软件跨页内容选中翻译操作 跨页内容选中翻译. 很多PDF段落分布在两个页面,划选容易将中间的页眉等杂乱文字选中.6.6版本开始支持跨页内容选中翻译. 方法是: 先选中前面部分的文字,然 ...

  3. Excel翻译单元格内容

    1.Excel自带翻译功能: 审阅-翻译-可以翻译选中单元格: 但如果是 要全部翻译还是不可以的: 而且翻译完之后,并没有存储在excel中: 批量翻译且可保存需要用到函数: 2.如果需要存储值,则需 ...

  4. 知云翻译选中不连续内容

    1.前面部分的选中没有任何特殊之处.用文本工具选中即可. 2.选中后面部分的文字时,你也可以先选中后面部文字,然后再按住Alt键不放,接着松开鼠标.软件只要感知到松开鼠标的时候Alt键是按下状态它就会 ...

  5. 怎么将计算机桌面全部变成英文翻译,怎么在电脑桌面便签上将英文翻译为中文并混合保存为便签内容?具体步骤是什么...

    随着时代的发展,英语和我们的距离是越来越近.这不,在日常的工作和生活中,我们经常会接触到一些英文.而作为已经毕业多年的上班族,我们当年在学校学的那点儿英语知识早就已经还给老师了.所以,在遇到英文的时候 ...

  6. 你知道ppt内容翻译成英文怎么操作吗

    在全球化的今天,跨国交流和合作已经成为一种普遍现象.其中,语言障碍往往是交流中的一大难题.幸运的是,随着科技的不断进步,翻译软件的出现已经解决了这一难题.那你知道ppt内容翻译成英文怎么操作吗? 其中 ...

  7. 【RFC5382 TCP 的 NAT 行为要求】(翻译)

    原文 https://datatracker.ietf.org/doc/html/rfc5382 NAT Behavioral Requirements for TCP TCP 的 NAT 行为要求 ...

  8. IP协议的服务类型(翻译RFC 1349)

    目录 1.简介 2.目标和理念 3.服务八位字节类型规范 4.TOS字段的规范 5. Internet协议中TOS字段的使用 5.1 Internet控制消息协议(ICMP) 5.2传输协议 5.3应 ...

  9. 传输协议之ICMP详解

    文章目录 TCP和UDP ICMP 简介 ICMP出现的原因 ICMP的用途 ICMP作为IP的上层协议在工作(报文) ICMP实现之MTU探索 ICMP实现之改变路由 ICMP实现之源点抑制 ICM ...

  10. 翻译-高质量JavaScript代码书写基本要点(转载)

    by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=1173 原文作者:S ...

最新文章

  1. 进程间基于消息队列的通信_Linux 进程间的通信方式
  2. 本科视觉算法实习生面经
  3. 【深度学习】去掉softmax后Transformer会更好吗?复旦华为诺亚提出SOFT:轻松搞定线性近似...
  4. Java、JavaEE、JavaSE、JavaME、JavaWEB之间有什么区别?
  5. ajax获取后台数据出错parsererror
  6. 深层神经网络——线性模型的局限性
  7. 学习笔记(08):MySQL数据库运维与管理-03-用户权限回收
  8. Mysql学习总结(80)——统计数据库的总记录数和库中各个表的数据量
  9. Ubuntu下配置使用maven
  10. L1-053 电子汪 (10 分)—团体程序设计天梯赛
  11. HDU 2553(N皇后问题)
  12. 关于uuid与自增列的选择
  13. Linux中文档与目录的特殊权限
  14. 801机械设计2017题签
  15. 【优化求解】基于狼群算法WPA求解最优目标matlab代码
  16. 微信公众号服务号如何在线给粉丝发送模板消息
  17. 信噪比 香农公式_「香农公式」信噪比/香农公式 - seo实验室
  18. kali android命令大全,让你的安卓设备跑起kali——kali for android
  19. 计算机专业研究生和本科生工资差距,本科生和研究生的工资差距,到底有多大?...
  20. 股票交易成本有哪些费用?

热门文章

  1. python selenium 获取接口数据
  2. Android O后台服务限制总结
  3. Flutter实战之Sqlite的用法入门
  4. solr html显示,在SOLR中,如何执行索引. html 文件_solr_开发99编程知识库
  5. 面试大厂回来,我狠补了一把算法和数据结构
  6. 网络推手团队_辛8工作室,被列入经营异常名单!工作室发声明解释!二子爷喊话辛8:你能强大过马云吗?达少太忙没有时间玩!团队断水断粮式野外生存!...
  7. 数据分析的升级版本--excel数据对比--整体思路
  8. FR多sheet的内置检验和JS校验, 数据集范围校验;填报存在时不提交并提示已存在
  9. 双方确认函_影片份额转让合同约定第一出品方出具确认函后合同生效,未出具而受让方支付投资款的,合同也生效...
  10. python在数字后添加字符_用python生成数字、字母和特殊字符混合的字符串