Board logo

标题: ICMP协议原理 [打印本页]

作者: yuyang911220    时间: 2015-11-23 21:59     标题: ICMP协议原理

ICMP协议原理
         
        ICMP简介
           对于熟悉网络的人来说, ICMP是再熟悉不过了。它同IP协议一样工作在ISO模型的网络层, 它的全称是: Internet Control Message Protocal. 其在网络中的主要作用是:
        - 主机探测
        - 路由维护
        - 路由选择
        - 流量控制
        对于主机探测来说有很多方法,主机某些服务的BANNER,一些使用的应用程序,或者使用工具来检测主机,如NMAP,在WEB上有www.netcraft.com来简单的估测主机。下面所讲的是使用ICMP协议来探测主机,主要也是可以了解ICMP这个协议,这里最主要的也是将这个ICMP协议。
        协议分析 - ICMP协议解码详解
        ICMP全称Internet Control Message Protocol,中文名为因特网控制报文协议。它工作在OSI的网络层,向数据通讯中的源主机报告错误。ICMP可以实现故障隔离和故障恢复。
        网络本身是不可靠的,在网络传输过程中,可能会发生许多突发事件并导致数据传输失败。网络层的IP协议是一个无连接的协议,它不会处理网络层传输中的故障,而位于网络层的ICMP协议却恰好弥补了IP的缺限,它使用IP协议进行信息传递,向数据包中的源端节点提供发生在网络层的错误信息反馈。
        ICMP的报头长8字节,结构如图1所示。
         


                               
                               

                                        类型(0或8)

                       
                               

                                        代码(0)

                       
                               

                                        检验和

                       
                               

                                        为使用

                       
                               

                                        数据

                       

        (图1 ICMP报头结构)
        类型:标识生成的错误报文,它是ICMP报文中的第一个字段;
        代码:进一步地限定生成ICMP报文。该字段用来查找产生错误的原因;
        校验和:存储了ICMP所使用的校验和值。
        未使用:保留字段,供将来使用,起值设为0
        数据:包含了所有接受到的数据报的IP报头。还包含IP数据报中前8个字节的数据;
        ICMP协议提供的诊断报文类型如表1所示。

                                                                                                                                                                                                                                               
                               

                                        类型

                       
                               

                                        描述

                       
                               

                                        0

                       
                               

                                        回应应答(Ping应答,与类型8的Ping请求一起使用)

                       
                               

                                        3

                       
                               

                                        目的不可达

                       
                               

                                        4

                       
                               

                                        源消亡

                       
                               

                                        5

                       
                               

                                        重定向

                       
                               

                                        8

                       
                               

                                        回应请求(Ping请求,与类型8的Ping应答一起使用)

                       
                               

                                        9

                       
                               

                                        路由器公告(与类型10一起使用)

                       
                               

                                        10

                       
                               

                                        路由器请求(与类型9一起使用)

                       
                               

                                        11

                       
                               

                                        超时

                       
                               

                                        12

                       
                               

                                        参数问题

                       
                               

                                        13

                       
                               

                                        时标请求(与类型14一起使用)

                       
                               

                                        14

                       
                               

                                        时标应答(与类型13一起使用)

                       
                               

                                        15

                       
                               

                                        信息请求(与类型16一起使用)

                       
                               

                                        16

                       
                               

                                        信息应答(与类型15一起使用)

                       
                               

                                        17

                       
                               

                                        地址掩码请求(与类型18一起使用)

                       
                               

                                        18

                       
                               

                                        地址掩码应答(与类型17一起使用)

                       

       
         
        (表1 ICMP诊断报文类型)
        ICMP提供多种类型的消息为源端节点提供网络层的故障信息反馈,它的报文类型可以归纳为以下5个大类:
        诊断报文(类型8,代码0;类型0,代码0);
        目的不可达报文(类型3,代码0-15);
        重定向报文(类型5,代码0-4);
        超时报文(类型11,代码0-1);
        信息报文(类型12-18)。
        详细解码
        使用科来网络分析系统捕获数据包,我们得到ICMP回显报文的信息,如图1所示,
       
        (图1 科来网络分析系统抓取的ICMP回显报文)
        我们详细介绍在图1中的解码信息,
        类型:8,表示是一个ICMP回显请求报文;
        代码:0,表示网络不可达;
        校验和:表示ICMP的0x425C;使用IP校验和的算法。
        标识:0x0400
        序列号:0x0700,每一个ICMP回显报文都有一个序列号且是递增的
        数据:表示是一个32字节的数据
        注:以上是一个ICMP回送报文,可以看出了和前面列出的ICMP报文有点不一样。因为ICMP有几种类型的报文(目标不可达报文,重定向报文,超时报文,回送请求和回送应答报文),每一种报文都相对都有一些区别,这里我们就不在特别介绍。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0