zoukankan      html  css  js  c++  java
  • TCP/IP第三层协议IP之附属协议ICMP

    toc

    ICMP协议

    虽然ICMP报文是封装在IP数据报内被传输的,但是它还是属于IP层的一个组成成分。它主要用于传递差错信息和查询信息。

    报文格式


    • 8位类型:用以描述特定类型的ICMP报文
    • 8位代码:进一步描述ICMP报文类型的不同条件
    • 16位校验和:同时包含首部和数据的校验和
    类型代码描述查询报文差错报文
    00主动请求的应答(ping应答)
    3
    目的不可达


    0网络不可达


    1主机不可达


    2协议不可达


    3端口不可达


    4需要进行分片但设置了不分片

    40源站抑制(使源站放慢发送速度)


    5
    重定向


    0对网络重定向


    1对主机重定向


    2对服务类型和网络重定向


    3对服务类型和主机重定向

    80主动请求(ping请求)

    11
    超时


    0传输期间生存时间为0


    1数据组装期间生存时间为0

    ICMP报文的最终类型由类型字段与代码字段共同决定

    差错报文

    当产生ICMP差错报文时,除了类型、代码、校验和以及未使用字段外,数据部分还必须包括出错的IP数据报的IP首部以及跟在IP首部后的前8个数据部分(包含了上层协议的目标端口号与源端口号)的字节。

    不产生ICMP报文的情况

    1. ICMP差错报文(避免无休止的循环下去,但是ICMP查询报文有可能产生ICMP差错报文)
    2. 目的地址是广播地址或者多播地址的IP数据报
    3. 作为链路层广播的数据报
    4. 不是IP分片的第一片。
    5. 源地址不是单个主机的数据报。这就是说,源地址不能为零地址,环回地址,广播地址或者多播地址(不产生的原因是为了防止ICMP差错报文对广播分组响应所带来的广播风暴)

    举例

    ping命令就是使用的查询报文类型
    Traceroute(Linux)/Tracer(windows)命令使用的是差错报文类型





    原创不易,转载请注明出处,谢谢
  • 相关阅读:
    sql2005 如何重启数据库服务
    jQuery 树控件 zTree
    谈C#中的Delegate
    微博首席架构师杨卫华:新浪微博技术架构分析(转)
    jqGrid 各种参数 详解
    asp.net(c#)ref,out ,params的区别
    gcc
    数据结构递归
    跳表
    javajvm
  • 原文地址:https://www.cnblogs.com/Keeping-Fit/p/13994498.html
Copyright © 2011-2022 走看看