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报文格式:
  
这里写图片描述

ICMP报文的类型

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

ICMP请求与应答报文 ping

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

Traceroute工具

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

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

  这里写图片描述

windows cmd中运行结果

这里写图片描述

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

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

  • 26
    点赞
  • 155
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值