透析ICMP协议(一): 协议原理[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 bugfree 的 blog

 代码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由主机发送。

链接:
-------
我的其它文章,<<透析icmp协议>>, 和其它文章参见:
http://www.csdn.net/develop/author/netauthor/bugfree/

透析icmp协议(五): 应用篇路由追踪
透析icmp协议(四): 牛刀初试之二 应用篇ping(raw socket)
透析icmp协议(三): 牛刀初试之一 应用篇ping(icmp.dll)
透析icmp协议(二): windows socket 简介
透析icmp协议(一): 协议原理 

联系方式:
-------
 zhangliangsd@hotmail.com


本文关键:ICMP ping tracert
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top