首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ICMP协议原理(2)

ICMP协议原理(2)

ICMP报文:
        1. 回送或回送响应
          我们使用一个ICMPECHO数据包来探测主机地址是否存活(当然在主机没有被配置为过滤ICMP形式),通过简单的发送一个ICMPECHO(Type 8)数据包到目标主机,如果ICMPECHOReply(ICMPtype0)数据包接受到,说明主机是存活状态。如果没有就可以初步判断主机没有在线或者使用了某些过滤设备过滤了ICMP的REPLY。这种机制就是我们通常所用的ping命令来检测目标主机是否可以ping到.
        回送消息的源地址是回送响应消息的目的地址。若要形成一个回送响应消息,应该将源和目的地址交换,将类型代码更改为0,重新计算机校验码。
        下面是这个报文的格式:
        0 1 2 3
        0 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 ...
        +-+-+-+-+-
        类型:
        8代表回送消息;
        0代表回送响应消息。
        代码:0
        校验码:
        16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零。这些零在 以后会被校验码取代。
        标识符:如果代码=0,帮助匹配回送和回送响应的代码可以为0。
        序列码:如果代码=0,帮助匹配回送和回送响应的序列码可以为0。
        说明:
        回送消息中接收到的消息应该在回送响应消息中返回。标识符和序列码由回送发送者使用帮助匹配
        回送请求的响应。代码: 从主机或网关接收0
         
        2. 超时报文
        0 1 2 3
        0 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 |
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+        类型:11
        代码:
        0 = 传送超时;
        1 = 分段级装超时。
        校验码:
        16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零。
        这些零在以后会被校验码取代。
        Internet包头+64位源数据报数据:
        Internet包头加上源数据的头64位而得。此数据用于主机匹配信息到相应的进程。
        如果高层协议使用端口号,应该假设其在源数据的头64个字节之中。
        说明:
        如果网关在处理数据报时发现生存周期域为零,此数据报必须抛弃。网关同时必须通过超
        时信息通知源主机。如果主机在组装分段的数据报时因为丢失段未能在规定时间内组装数据,
        此数据报必须抛弃。网关发送超时信息。
        如果段零不可用则不用发送超时信息。
        代码0由网关发送,代码1由主机发送。
        3. 目标主机不可达报文
        0 1 2 3
        0 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
        代码:
        0 = 网络不可达;
        1 = 主机不可达;
        2 = 协议不可用;
        3 = 端口不可达;
        4 = 需要段和DF设置;
        5 = 源路由失败;
        校验码:
        16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零。
        这些零在以后会被校验码取代。
        Internet包头+源数据报:
        Internet包头加上源数据的头64位而得。此数据用于主机匹配信息到相应的进程。
        如果高层协议使用端口号,应该假设其在源数据的头64个字节之中。
        说明:
        相应于网关的路由表,如果在目的域中指定的网络不可达,如网络距离为无限远,网关会向发送
        源数据的主机发送目的不可达消息。而且,在一些网络中,网关有能力决定目的主机是否可达。
        如果目的地不可达,它将向发送源数据的主机发送不可达信息。
        在目的主机,如果IP模块因为指定的协议模块和进程端口不可用而不能提交数据报,目的主机将
        向发送源数据的主机发送不可达信息。
        另外一种情况是当数据报必须被分段传送,而“不可分段”位打开,在这种情况下,网关必须抛弃
        此数据报,并向向发送源数据的主机发送不可达信息。
        代码0,1,4和5由网关发送,而代码2和3由主机发送。
继承事业,薪火相传
返回列表