wireshark抓取本地回环数据包

wireshark抓取本地回环数据包

一 The NPF driver isn’t running

这个错误是因为没有开启NPF服务造成的。

NPF即网络数据包过滤器(Netgroup Packet Filter,NPF)是Winpcap的核心部分,它是Winpcap完成困难工作的组件。它处理网络上传输的数据包,并且对用户级提供可捕获(capture)、发送(injection)和分析性能(analysis capabilities)。

它不仅提供了基本的特性(例如抓包),还有更高级的特性(例如可编程的过滤器系统)。前者可以被用来约束一个抓包会话只针对网络通信中的一个子集,后者提供了一个强大而简单的统计网络通信量的机制。

解决办法如下:

(1)确保自己安装了WinPcap(这个在安装Wireshark时会提示你安装的)也可以从官网下载:地址:http://www.winpcap.org/

(2)在命令提示符下输入:net start npf 会提示打开驱动服务成功。如下图所示:

如果想关闭服务就输入:net stop npf 即可。

二 抓取本地回环数据

步骤一
windows下,在命令行中输入以下语句:

// 增加一条路由表项
// 192.168.1.106是本机ip, 192.168.1.1是路由网关
route add 192.168.1.106 mask 255.255.255.255 192.168.1.1 metric 1

// 抓包完成后,删除该表项
route delete 192.168.1.106

步骤二

修改源代码,其中建立连接的代码需要使用本机192.168.1.106 的 IP,不能使用127.0.0.1或localhost,如:

// 例子1
// java版本代码
// 设置服务器端的IP地址为192.168.1.106,不能写localhost或127.0.0.1
InetSocketAddress peer = new InetSocketAddress("192.168.1.106", DEFAULT_PORT);
// 例子2
// 其他版本的代码:
socket.Connect("192.168.1.106", 4530);

注:win10环境下测试,仍无法抓取本地包,可以使用RawCap抓回环数据包

三 lookback capture support platforms

可查看 https://wiki.wireshark.org/CaptureSetup/Loopback Supported Platforms标题。

四 网络协议中环回接口

网络接口的命名

在linux下网络接口:
eth0: ethernet的简写,一般用于以太网接口
wifi0: wifi是无线局域网,因此wifi0一般只无线网络接口
ath0: Atheros的简写,一般指Atheros芯片所包含的无线网络接口
lo:local的简写,一般指本地环回接口。它是一个虚拟网络接口,虚拟网络接口并不真实地从外界接收和发送数据包,而是在系统内部接收和发送数据包,因此虚拟网络接口不需要驱动程序。

下面是环回接口处理IP数据报的简单过程:

wireshark抓取本地回环数据包_第1张图片

图中需要指出的关键点是:

  1. 传给环回地址(127.0.0.1)的任何数据均作为IP输入.

  2. 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上.这是因为广播传送和多播传送的定义包含主机本身.

  3. 任何传给该主机IP地址的数据均送到环回接口.(环回:IP输入队列)

开启Windows系统的环回接口

Windows XP

控制面板-添加硬件-从列表中选择网络适配器-选择微软制造商-选择微软环回适配器。

Windows Vista/Windows 7

1 在cmd命令行中输入:hdwwiz
2 添加微软环回适配器

Windows下使用RawCap抓取回环数据包

Raw下载地址

使用方法

1 命令行方式

// 启动方式
RawCap.exe 127.0.0.1 localhost_capture.pcap
// 停止方式
使用Ctrl+C即可

2 交互式方式

// 启动方式
双击RawCap.exe执行,即可进入交互式方式
// 停止方式
使用Ctrl+C即可

查看*.pcap包

使用wireshark即可打开*.pacap包查看即可

注:Linux下wireshark直接抓取lo接口数据即可。

参考

Loopback capture setup

你可能感兴趣的:(网络编程)