ICMP基础知识

  1、ICMP(Internet Control Message Protocol):Internet控制报文协议。它传递差错报文以及其它需要注意的信息。

  2、应用场景:

  1)Ping程序。Ping的目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。

  2)ICMP端口不可达错误。如图,向本机61535端口发送一个UDP数据报(对应下图tcpdump捕获到的第一个数据包),但该端口没有进程在监听,因此:

  

  系统会增加/proc/net/snmp文件的UDP NoPorts计数器,并给源主机返回一个ICMP端口不可达报文。

  

  观察tcpdump捕获到的第二个数据包(ICMP报文):

  它没有源和目的端口;第一个包的IP首部+IP数据(图中1)作为第二个包的ICMP报文数据部分(图中2)。ICMP端口不可达报文的类型字段和代码字段均为3(0303),首部共8个字节(分别为1字节类型字段+1字节代码字段+2字节检验和+4字节未用字段)。

  另外,由于TCP/UDP/ICMP/IGMP都要向IP传送数据(即ICMP封装在IP数据报内部),因此IP在首部中存入8bit的协议域,1/2/6/17分别表示ICMP/IGMP/TCP/UDP。这可以从第二个包4001中的01这一字节中得到验证。

 

 

  参考资料:

  《TCP/IP详解 卷1:协议》

 

 

 

不断学习中。。。

posted on 2014-12-28 23:27  han'er  阅读(996)  评论(0编辑  收藏  举报

导航