ICMPv4

尽管 IPv4 并非可靠的协议,但它确实会在发生某些错误时发送消息。这些消息使用 Internet 控制消息协议 (ICMPv4) 来发送,其用途是就特定情况下处理 IP 数据包的相关问题提供反馈,而并非是使 IP 可靠。ICMP 消息并非必需的,而且通常出于安全原因而被禁止。

ICMP 是 TCP/IP 协议簇的消息协议。ICMP 提供控制和错误消息,由 ping 和 traceroute 实用程序使用。虽然 ICMP 使用 IP 的基本支持,看起来好象是上层协议 ICMP,但它实际上是 TCP/IP 协议簇中独立的第 3 层协议。
ICMP 消息的类型及其发送原因非常多。我们将介绍其中比较常见的一些消息。
可能发送的 ICMP 消息包括:
  • 主机确认
  • 无法到达目的或服务器
  • 超时
  • 路由重定向
  • 源抑制
主机确认
ICMP 回应消息可用于确定主机是否运行正常。本地主机向一台主机发送 ICMP 回应请求。接收回应消息的主机用 ICMP 应答做出回复,具体过程如图所示。如此使用 ICMP 回应消息是 ping 实用程序的基础。
无法到达目的或服务器
ICMP 目的无法到达消息可用于通知主机无法到达目的或服务。当主机或网关收到无法传送的数据包时,会向发送该数据包的主机发送 ICMP“目的无法到达”数据包,其中包含的代码会说明无法传送该数据包的原因。
“目的无法到达”代码包括:
0 = 网络无法到达
1 = 主机无法到达
2 = 协议无法到达
3 = 端口无法到达
代码网络无法到达 和主机无法到达 是路由器在无法转发数据包时做出的响应。如果路由器没有路由可供接收的数据包使用,则会用代码 = 0 的 ICMP 目的无法到达消息做出响应,表示网络无法到达。如果路由器有连接的路由适用于接收的数据包但却无法将该数据包传送到连接的网络中的主机,该路由器会用代码 = 1 的 ICMP 目的无法到达消息做出响应,表示知道网络但主机无法到达。
终端主机使用代码 2 和 3(协议无法到达 和端口无法到达)来表示无法将包含于数据包中的 TCP 数据段或 UDP 数据报传送到上层服务。
当终端主机接收的数据包中包含要传送到不可用服务的第 4 层 PDU,该主机会用代码 = 2 或代码 = 3 的 ICMP 目的无法到达消息对源主机做出响应,表示服务不可用。服务不可用的原因可能是未运行提供该服务的守护程序或者主机上的安全限制不允许访问该服务。
超时
路由器使用 ICMP 超时消息来表示因数据包的 TTL 字段截止而无法转发该数据包。如果路由器接收数据包并且将该数据包中 TTL 字段的值减为零,则会丢弃该数据包。该路由器可能也会向源主机发送 ICMP 超时消息,通知该主机丢弃数据包的原因。
路由重定向
路由器可使用 ICMP 重定向消息来通知网络中的主机有更佳路由可用于特定目的地址。只有当源主机与两个网关都位于同一个物理网络中时才会使用此消息。路由器收到一个数据包时,如果该数据包有条路由的下一条连接到数据包到达的那个接口,那么该路由器会向源主机发送 ICMP 重定向消息。此消息会将路由表中某个路由所包含的下一跳通知给源主机。
源抑制
ICMP 源抑制消息可用于通知源主机暂时停止发送数据包。如果路由器没有足够的缓冲区空间来接收传入数据包,路由器将丢弃数据包。如果路由器必须这样做,也会向其丢弃的每个报文的源主机发送 ICMP 源抑制消息。
如果数据报抵达速度太快,致使无法处理,目的主机也会发送源抑制消息。
当主机接收 ICMP 源抑制消息时,会向传输层报告此消息。然后,源主机可使用 TCP 流量控制机制来调整传输。

本文出自 “07net01” 博客,请务必保留此出处http://07net01.blog.51cto.com/1192774/571592

一周排行
  • 宽带接入服务器还是比较常用的,于是我研究了一下宽带接入服务器的扩展功能,在这里拿出来和大家分享一下,希望对大家有用. 以上对宽带接入服务器的系统结构和接入功能做了简要的介绍. 其实,宽带接入服务器的功能远非如此.在具 ...
  • 注意事项 主题和插件这方面,比Sublime Text人性化多了..一些比较用心的作者增加了二度设置功能. 何为二度设置,就是不用手写代码修改配置文件,点点鼠标,填填输入框就能生效,主题以isotope-ui这个做例 ...
  • 蒋介石的国民党政府并不是一个资产阶级的政府,它靠的是对资产阶级的剥削以维持其官僚统治,并没有怎么支持资产阶级的发展.(如此说来,社会主义政府又算是什么呢?)而共产党对它名义上的谴责只不过是政治权力斗争的技巧. 后来的 ...
  • 没有永远的敌人,只有永远的利益.4月16日晚间,全球租车巨头赫兹公司与神州租车敲定的入股协议和全面战略合作计划再度印证了这一铁律.中国租车市场在过去五年年增速位列全球第一,作为握有美国25%租车市场份额的赫兹,与掌控 ...
  • 有开发网络应用经历的人都知道,网络中的接收和发送数据都是使用WINDOWS中的SOCKET进行实现.但是如果此套接字已经断开,那发送数据和接收数据的时候就一定会有问题.可是如何判断这个套接字是否还可以使用呢? 有人一 ...
  • /* * 大递归思路: * 1)调度器必须完整地处理最简单的情况,而无需再调用迭代函数; * 2)当调度器调用迭代函数时,必须向它传递问题的更简单版本. * * * 递归的对比: * 1) 概念复杂性 * 2) 性能 ...
  • 使用命令: runas /user:administrator 需要执行的命令 如下:  
  • 环境:wamp 修改文件"httpd.conf"在文件中追加: <VirtualHost *:80> DocumentRoot "D:/SVN/tech/" Ser ...
  • 雷霆战机守月魔殇技能属性详细介绍 <雷霆战机>雷霆战神战神装甲终于解开封印!全新2款战神装甲“守月魔殇”与“止战金魂”闪亮登场!很多玩家还不知道守月魔殇的属性怎么样,那么接下来就为大家分享一下守月魔殇的技 ...
  • 比较好的树形dp,涉及到树上路径的题目,我们往往考虑对路径分类 当我们考虑以x为根的子树,有这样几类路径 1. 起点终点都在子树内 2. 一个点延伸到子树外 对于要选择另一个点在子树外的路径,要建立在不破坏儿子子树内 ...