欢迎来到天天文库
浏览记录
ID:33484163
大小:220.50 KB
页数:7页
时间:2019-02-26
《internet控制报文协议icmp》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Internet控制报文协议ICMP2008-01-2510:44 通过路由器转发数据报,Internet协议软件提供了不可靠的无连接数据报传送服务。假如路由器不能正确选择路由或传送数据报,或者它检测到一个异常条件影响它转发数据报,路由器需要通知源站点采取措施避免或纠正出现的问题。为了使互联网中的路由器报告差错或提供有关意外情况的信息,在TCP/IP中设计了一个特殊用途的报文机制,称为Internet控制报文协议(InternetControlMessageProtocol,ICMP)。它是IP的一部分,并在每个IP实现中都是必需的。ICMP机制 ICMP报文是放在一个IP数据
2、报的数据部分中通过互联网的。Internet控制报文协议允许路由器向其它路由器或主机发送差错或控制报文,ICMP在两台机器上的Internet协议软件之间提供了通信。 最初的设计是为了允许路由器向主机报告投递出错的原因,但是ICMP并没有限制仅在路由器上使用。尽管限制某些ICMP报文的使用,但是任一台机器可以向任何其它机器发送ICMP报文,因此主机可以用ICMP与路由器或另一台主机通信。允许主机使用ICMP的主要优点是它为所有控制报文和信息报文提供了统一的机制。 从技术上讲,ICMP是一个差错报告机制。它为发生差错的路由器提供了向初始源站点报告差错的方法。虽然协议规范概要描述了
3、ICMP的用途以及对差错报告可能采取措施的建议,但ICMP并没有全部指定对每个可能差错所产生的措施。当数据报产生差错时,ICMP只能向数据报的初始源站点回送差错情况报告,源站点必须将有关的差错交给一个应用程序或采取其它措施来纠正问题。 ICMP报文要求两级封装,如图2-8所示。每个ICMP报文放在IP数据报的数据部分中通过互联网,而数据报本身放在帧的数据部分中通过物理网络。携带ICMP报文的数据报与携带用户信息的数据报具有完全相同的路由选择,没有附加的可靠性或优先级。因此,差错报文本身可能会丢失或被丢弃。此外,在一个已经拥塞的网络中,差错报文可能会引起额外的拥塞。假如携带ICMP
4、报文的IP数据报产生了差错,则差错处理过程产生一个异常事件,以免出现有关差错报文的差错报文。图2-8ICMP报文的两级封装 特别需要提醒的是,ICMP报文是用IP封装和发送的,但并不把它看成是高层协议,它是IP的一个必要部分。用IP传递ICMP报文的原因是可能需要经过几个物理网路才能到达其最终目的地,因此不能仅用物理传送来投递它们。ICMP报文格式 尽管每个ICMP报文有自己的格式,但它们都以相同的三个字段开始:一个8位整数的报文类型(Type)字段用来标识报文、一个8位代码(Code)字段提供有关报文类型的进一步信息、以及一个16位校验和(Checksum)字段。此外,报告差
5、错的ICMP报文总是包括产生问题的数据报报头及开头的8字节数据。在差错报告中返回8字节用户数据可以使接收方能够更精确地判断是哪个协议及哪个应用程序对该数据报负责。 各种类型的ICMP报文如表2-7所示,不同类型由报文中的类型字段和代码字段来共同决定。表中的最后两列表明ICMP报文是一份查询报文还是一份差错报文。因为对ICMP差错报文有时需要作特殊处理,因此我们需要对它们进行区分。例如前面也曾提到,在对ICMP差错报文进行响应时,永远不会生成另一份ICMP差错报文(如果没有这个限制规则,可能会遇到一个差错产生另一个差错的情况,而差错再产生差错,这样会无休止地循环下去)。表2-7IC
6、MP报文类型ICMP应用 使用ICMP的各个命令可以测试/调试网络,分析路由器报告的ICMP报文可以得到当前网络状况相关的很多有用信息。如类型为8的请求和类型为0的应答可以测试目的站点的可达性;分析类型为3的报文可以了解目的站点不可达的原因;使用类型为4的报文可以实现拥塞控制;使用类型为5的报文可以实现重定向等。各种类型报文的具体含义参见参考文献2。下面我们简单介绍一些利用ICMP实现的常用TCP/IP调试工具。 “ping”是TCP/IP提供的最常用调试工具,它用来测试另一台主机是否可达。该程序发送一份ICMP回送请求报文给主机,并等待返回ICMP回送应答。任何收到回送请求的
7、机器都必须组成一个回送应答报文并将它传送给最初的发送站点。回送请求包含一个可选数据区,应答包含了在请求中所发送数据的一个拷贝。如果在发送回送请求后收到相应的应答,则说明该主机是可达的。因为请求和应答都是在IP数据报中传送的,所以应答的成功接收就证实传送系统的主要部分是正常的。 一般来说,如果不能Ping到某台主机,那么就不能Telnet或者FTP到那台主机。反过来,如果不能Telnet到某台主机,那么通常可以用Ping程序来确定问题出在哪里。Ping程序还能测出到这
此文档下载收益归作者所有