Wireshark-ICMP数据报分析

ICMP:Internet控制报文协议
  
  ICMP是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
  ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可靠的数据包协议,属于网络层协议。
  ICMP报文是在IP数据报内被传输的。在实际传输中的数据包结构:20字节IP首部 + 8字节ICMP首部+ 1472字节<数据大小>38字节。
  ICMP报文格式:IP首部(20字节)+8位类型+8位代码+16位校验和+(不同的类型和代码,格式也有所不同)。下面即为ICMP报文格式:
  
Wireshark-ICMP数据报分析_第1张图片

ICMP报文的类型

不同类型由报文中的类型字段和代码字段来共同决定,简单的可以分为两种:即ICMP差错报告报文和ICMP询问报文。

ICMP请求与应答报文 ping

通过ping程序可以发送请求报文,在ping的服务器收到报文后会返回应答报文。
下面是请求应答的报文格式:

Wireshark-ICMP数据报分析_第2张图片

让wireshark开始抓包,用icmp过滤,打开cmd窗口,输入ping www.youku.com,就会发现wireshark开始抓取报文,ping默认发4个请求报文,所有这里会抓取到8个报文(请求和应答各4个)。下面查看一个请求报文结构:

Wireshark-ICMP数据报分析_第3张图片

再来看一看实际的数据域:

Wireshark-ICMP数据报分析_第4张图片

Traceroute工具

  Traceroute程序可以让我们看到 I P数据报从一台主机传到另一台主机所经过的路由,它是用来侦测主机到目的主机之间所经路由情况的重要工具,也是最便利的工具。

  Traceroute基本原理:这个程序利用报文的TTL信息实现路由的获取。首先主机向目的主机发送一个TTL=1的数据报,当数据报到达第一个路由器时,TTL=0,这时路由器会发送一个ICMP报文返回给主机,说明数据报超时。由此得到第一个路由地址,然后令TTL=2,再次发送一个数据报,会得到第二个路由返回的ICMP,由此一次次增加TTL就可以得到主机到目的主机之间所经过的路由信息。

  Wireshark-ICMP数据报分析_第5张图片

windows cmd中运行结果

Wireshark-ICMP数据报分析_第6张图片

在linux中traceroute是可以选则数据包的类型(-I,-U,-T)分别代表ICMP,UDP,TCP数据包类型。而在windows的cmd中tracert用的是ICMP数据包。实际测试中可能会出现一些问题。具体参考:

http://blog.csdn.net/lhq9220/article/details/6436984

你可能感兴趣的:(通信网络)