网络协议详解-ICMP 本文的参考资料很多来自于 MSDN Library -- January 2002,对使用金山网镖的 IP规则配置工具和日志查看过程中需要用到的一些协议知识进行了英文原文的翻译和提炼工作,把一些原文中相对专业的说法用一种我认为方便理解的方式说出来,并且会对一些比较抽象的东西进行解释(很可能会因此删改原文并且可能不会使用一些约定俗成的术语),以便不了解协议的人也能尽可能地知道这些协议是做什么的。 由于只考虑针对初学者在产品应用上的帮助,让他们有一个基本认识,而不用总是在出了问题以后焦急地等待别人的帮助,所以本文可能不会让你获得一个全面的 TCP/IP协议知识体系,如果想要了解 TCP/IP协议更深层次的知识,请参考一些专门的书籍并阅读本文所引用的英文原文出处(后附),如果想获得TCP/IP协议的最权威解释,请参考 RFC相关文档(英文)。 本文尽量做到简单全面,但是作者的学识所限,错误在所难免,有任何纰漏之处,敬请各位方家不吝赐教,谢谢。本文将会不定期地修正。 一、ICMP协议 ICMP全称 Internet Control Message Protocol,即网际控制消息协议。是作为 TCP/IP协议体系的一个组成部分出现的。它的基本用途是对网络的故障进行侦测并返回报告。ICMP协议在网络中被广泛使用,其中,路由器等一些设备会经常需要使用到这个工具,一台独立主机也会使用这个工具向其他的路由器、中间设备或者主机通告错误信息或者自己的状态更新,这就可以解释为什么自己的金山网镖怎么总是拦截来自一些莫名其妙的 IP地址的 ICMP数据包了,比如,局域网用户的金山网镖可能在高安全级下经常报告收到来自 224.0.0.0的ICMP数据包,这往往就是网段内路由器发出的更新信息。需要说明的是,下面对一些 ICMP消息的代码域的介绍可能会非常难于理解,不必管他,只需要对 ICMP的类型进行了解就够了,类型代码我也一并加上来是为了满足一些希望深入了解 ICMP的网友的。 每一条 ICMP消息都包含了三个区域来定义这条消息所需要达到的目的和一个奇偶校验值,这三个区域分别是:类型、代码和校验区域。类型域用于鉴别ICMP消息,代码域则包含了与类型域相关联的一些详细信息,而校验域则提供了一个判断一条 ICMP消息完整性的方法。 类型域所规定的类型如下(注意:类型描述部分不翻译,读者自行理解英文原文更好): 类型 描述 ------ ------------ 0 Echo Reply 3 Destination Unreachable 4 Source Quench 5 R...