wireshark怎么抓包分析网络故障实战
【WireShark概览】 1、Wireshark 是网络报文分析工具。网络报文分析工具的主要作用是尝试捕获网络报文, 并尝试显示报文尽可能详细的内容。过去的此类工具要么太贵,要么是非公开的。 直到Wireshark(Ethereal)出现以后,这种情况才得以改变。Wireshark可以算得上是今天能使用的最好的开源网络分析软件。2、WireShark简史:1997年,Gerald Combs 需要一个工具追踪网络问题,并且想学习网络知识。所以他开始开发Ethereal (Wireshark项目以前的名称) 以解决自己的需求。1998年,Ethreal0.2.0版诞生了。此后不久,越来越多的人发现了它的潜力,并为其提供了底层分析。2006年Ethreal改名为Wireshark。2008年,在经过了十年的发展后,Wireshark发布了1.0版本。3、WireShark的主要作用,就是可以抓取各种端口的报文,包括有线网口、无线网口、USB口、LoopBack口等等,从而就可以很方便地进行协议学习、网络分析、系统排错等后续任务。4、不同平台下的WireShark:目前WireShark支持几乎所有主流报文文件,包括pcap,cap ,pkt,enc等等。但是不同平台下的WireShark却有功能上的不同。总体来说,Linux版本WireShark的功能和特性比Windows版本的要丰富和强大。例如,Linux版本的WireShark可以直接抓取USB接口报文,而Windows版本就不行。Figure 1,Linux下的WireSharkFigure 2,Windows下WireSharkFigure 3,各平台下的WireShark所支持的协议各平台下的WireShark支持的协议如上图所示。从图中可以看到Linux下的版本功能最强大,由于平台本身特性,可以使WireShark几乎支持所有协议。但由于我们平时工作中主要抓取以太网报文,且绝大部分的操作系统都是Windows,所以本文还是以Windows平台下的WireShark为例来进行说明。【如何正确使用WireShark抓取报文】1、WireShark组网拓扑。为了抓到HostA与HostB之间的报文,下面介绍几种WireShark组网。i.在线抓取:如果WireShark本身就是组网中的一部分,那么,很简单,直接抓取报文就行了。ii. 串联抓取:串联组网是在报文链路中间串联一个设备,利用这个中间设备来抓取报文。这个中间设备可以是一个HUB,利用HUB会对域内报文进行广播的特性,接在HUB上的WireShark也能收到报文。若是WireShark有双网卡,正确设置网络转发,直接串接在链路上。也可以利用Tap分路器对来去的报文进行分路,把报文引到WireShark上。串联组网的好处是报文都必须经过中间设备,所有包都能抓到。缺点是除非原本就已经规划好,不然要把报文链路断开,插入一个中间设备,会中断流量,所以一般用于学习研究,不适用于实际业务网以及工业现场以太网。iii. 并联抓取:并联组网是将现有流量通过现网设备本身的特性将流量引出来。若是网络本身通过HUB组网的,那么将WireShark连上HUB就可以。若是交换机组网,那直接连上也能抓取广播报文。当然,最常用的还是利用交换机的镜像功能来抓包。并联组网的优点是不用破坏现有组网,适合有业务的在线网络以及工业现场以太网。缺点是HUB组网已经不常见,而交换机组网的设备开启镜像后,对性能有非常大的影响。2、 WireShark的安装。WireShark是免费开源软件,在网上可以很轻松获取到。Windows版的WireShark分为32位而64位两个版本,根据系统的情况来决定安装哪一个版本,虽然64位系统装32位软件也能使用,但装相应匹配的版本,兼容性及性能都会好一些。在Windows下,WireShark的底层抓包工具是Winpcap,一般来说WireShark安装包内本身就包含了对应可用版本的Winpcap,在安装的时候注意钩选安装就可以。安装过程很简单,不再赘述。3、使用WireShark抓取网络报文。Step1. 选择需要抓取的接口,点选Start就开始抓包。4、使用WireShark抓取MPLS报文。对于mpls报文,wireshark可以直接抓取带MPLS标签的报文。5、使用WireShark抓取带Vlan Tag的报文。早期网卡的驱动不会对VLAN TAG进行处理,而是直接送给上层处理,在这种环境下,WireShark可以正常抓到带VLAN TAG的报文。而Intel,broadcom,marvell的网卡则会对报文进行处理,去掉TAG后再送到上层处理,所以WireShark在这种情况下通常抓不到VLAN TAG。这时我们需要针对这些网卡做一些设置,WireShark才能够抓取带VLAN TAG的报文。1). 更新网卡的最新驱动。2). 按照以下说明修改注册表:a) Intel:HKEY_LOCAL_MACHINESYSTEM ControlSet001ControlClass{4D36E972-E325-11CE-BFC1-08002BE10318} 0xx(where xx is the instance of the network adapter that you need to see tags on. )PCI或者PCI-X网卡增加dword:MonitorModeEnabled,通常设置为1即可 0 - disabled (Do not store bad packets, Do not store CRCs, Strip 802.1Q vlan tags) 1 - enabled (Store bad packets. Store CRCs. Do not strip 802.1Q vlan tags) PCI-Express网卡增加dword:MonitorMode,通常设置为1即可 0 - disabled (Do not store bad packets, Do not store CRCs, Strip 802.1Q vlan tags) 1 - enabled (Store bad packets. Store CRCs. Do not strip 802.1Q vlan btag) 2 - enabled strip vlan (Store bad packets. Store CRCs. Strip 802.1Q vlan tag as normal);b) Broadcom:在HKEY_LOCAL_MACHINESYSTEMCurrentControlSet下搜索,找到"TxCoalescingTicks"并确认这是唯一的,增加一个新的字符串值"PreserveVlanInfoInRxPacket",赋值1。c) Marvell Yukon 88E8055 PCI-E 千兆网卡:"HKLMSYSTEM CurrentControlSetControlClass{4D36E972-E325-11CE-BFC1-08002bE10318} 00"(where 000 is the number of the folder for the Marvel ethernet controller)增加DWORD:SkDisableVlanStrip:1;3). 以Intel网卡为例,对网卡进行配置。选择Intel网卡的本地连接,右键属性点击“配置”按钮。在VLAN选项卡中,加入任意一个VLAN,激活接口的VLAN TAG上送功能。此时可以把“本地连接”接口看成是一个Trunk接口。配置完VLAN后,如果发现系统禁用了“本地连接”接口,则只要启用它,会看到网络连接中会出现一个新的子接口“本地连接2”。在WireShark上查看抓取“本地连接”接口的报文。可以看到已经可以抓到有VLAN TAG的报文了。由于此时的子接口都是有VLAN属性的,所以无法当成正常的网卡来用。如果想要在抓VLAN包的同时,还能够与网络正常通信,只要再新建一个未标记的VLAN就行。 这时,会生成一个对应的子接口“本地连接3”,在这个接口上正确配置网络参数,就可以正常通信了。
你可以在 wireshark 软件中设置各种过滤规则,(filter)来捕获各种有用的数据包。然后保存到一个文件中,最后对那个文件中的内容进行数据包分析。

如何分析wireshark抓到的包
首先我们打开wireshark软件的主界面,在主界面上选择网卡,然后点击start。wireshark即进入抓包分析过程。在本篇我们选择以太网,进行抓包。接下来再界面我们可以看到wireshark抓到的实时数据包。我们对数据包的各个字段进行解释。1.No:代表数据包标号。2.Time:在软件启动的多长时间内抓到。3.Source:来源ip。4.Destination: 目的ip。5.Protocol:协议。6.Length:数据包长度。7.info:数据包信息。接下来我们点击解析后的某一条数据可以查看数据包的详细信息。在抓包过程中,我们可以点击图标启动或者停止。来启动或者停止抓取数据包。接下来我们将简单介绍Filter处,对来源Ip以及目的Ip的过滤表达式的写法。首先我们在Filter处填写ip.addr eq 192.168.2.101。表示获取来源ip以及目的ip都是192.168.2.101的数据包。(此处解释 eq 换成==同样的效果)在Filter处填写:ip.src == 192.168.2.101。表示获取来源地址为192.168.2.101的数据包。在Filter处填写:ip.dst == 119.167.140.103。表示获取目的地址为119.167.140.103的数据包。在Filter处填写:ip.dst == 119.167.140.103 or ip.dst == 192.168.2.45。表示获取目的地址为119.167.140.103或者192.168.2.45的数据包。(此方法举例主要说明or的用法。在or前后可以跟不同的表达式。)在Filter处填写:ip.dst == 119.167.140.103 and ip.src == 192.168.2.101。表示获取目的地址为119.167.140.103且来源地址为192.168.2.101的数据包。(此方法举例主要说明and 的用法)

wireshark快速指南
学过网络的同学都知道,互联网信息的传递都是通过网络数据包来完成的。那么抓取网络数据包对于我们学习网络知识,查找网络问题甚至逆向工程都是至关重要的。 现在本文以Linux 下版本号为1.10.14的wireshark向大家介绍。wireshark是一款开源的,支持多种操作系统,多种网络协议的抓包工具。它简单容易上手,并且说明文档齐全(官网有详尽的guide book)。下面跟其他常见的抓包工具进行对比:注意:只要将手机网络连接到安装了wireshark的主机上(比如开热点wifi),就可以抓到手机上的数据包,而不一定要在手机上安装抓包工具主要介绍两个页面,一个是起始页,一个是包列表页。起始页展示了接口列表(网卡,蓝牙,USB等数据端口),捕获选项以及一些帮助信息。点击开始捕获包后就会进入包列表页,包列表页展示捕获到的包,选中包对应的协议信息及其原始十六进制数据起始页展示了可供抓包的接口列表,选中想要捕获的接口开始抓包。捕获选项里可以设置捕获过滤规则以及捕获停止条件。进行捕获后,会出现三个栏目:数据包列表栏目,包协议信息栏目,包字节信息栏目。我们可以通过数据包列表找到想要的某个数据包,鼠标选中后,在包协议信息栏目分析该包的协议信息,如果想要知道某个字节的含义则在包字节信息栏目分析。注意在数据包列表栏目上方有个Filter 输入框,这里我们可以输入显示过滤表达式,过滤掉数据包列表中一些不需要展示的数据包。3.1.1 从文件导入数据包已经被抓取并导出到文件,此时我们只需用wireshark导入此捕获文件即可获取之前捕获的数据包。文件的格式有很多种,可以导入tcpdump导出的捕获文件。有趣的是,也可以导入png,jpg等格式的图片以及mp4等格式的视频文件,导入后可以看到图片和视频也是一个个数据包组成的,图片渐近式展示以及视频不需完全加载就可播放等特性估计跟这有关。3.1.1 实时抓取选择特定接口,点击start按钮后,即开始实时抓取。一般地,接口的数据包数量庞大并且各个包之间的关联性不强。我们想要得到特定的数据包就必须过滤无关的数据包,从而快速的进行分析。wireshark过滤方式有两种,第一种是捕获过滤,这种过滤是捕获阶段进行,它只捕获未被过滤的数据包,这样可以减少抓取数据包的数量。第二种是显示过滤,这种过滤在分析阶段进行,它在捕获的数据包基础上进行过滤。3.2.1 捕获过滤过滤语法一般格式: [not] primitive [and|or [not] primitive ...]primitive 一般由type,dir,proto这三类限定符组成3.2.2 显示过滤过滤语法一般格式:(过滤字段 比较操作符 value) 组合表达式 (过滤字段 比较操作符 value)...3.3.1 追踪数据流将数据包进行关联,可通过某个数据包即可关联到该数据包传输链的所有数据包,比如可以通过一个tcp数据包可关联到这个tcp会话的所有数据包。操作:鼠标点击数据包列表栏的某个数据包->右键->Follow TCP Stream(Follow UDP Stream,Follow SSL Stream)3.3.2 端点端点在不同的协议层有不同的含义,在网络层,特定IPv4,IPv6地址为一个端点,在数据运输层,特定TCP端口,UDP端口为一个端点。端点这个页面为我们展示每个端点的数据包发送和接收情况。操作:Statistics->Endpoints3.3.3 对话对话页面展示两个端点之间的包传输情况。端点在不同协议层有不同含义,对话也一样。在网络层,对话是两个IP之间进行,在数据传输层,对话在两个端口之间进行。操作:Statistics->Conversations3.3.4 流量图流量图使用图形化展示了数据包的抓取情况。操作:Statistics->IO Graphs3.3.5 协议分层协议分层页面将抓取到数据包按网络协议进行了分类,我们可以看到每个网络层抓取包的情况。操作:Statistics->Protocol Hierarchy Statistics3.3.6 专家信息wireshark 帮我们分析了数据包情况,通过专家信息页面提示网络中出现的问题,它将数据包分为4个等级(Error,Warnings,Notes,Chats),从左至右问题严重程度依次减少,Chats是正常的数据包。Error表示可能导致问题的数据包。操作:Analyze->Expert Infos一般地,如果不设置静态MAC-->IP对应表,机器都会发送arp请求来获得其他机器的mac地址。如此,我们只需要在显示过滤器输入 arp即可获得apr数据包。捕获信息见下图: wireshark官方文档

如何解码分析wireshark捕获的数据包
方法/步骤:运行wireshark软件,打开一个保存的数据包文件。以第4360号http数据包为例,进行解析。双击该数据包,进入解码页面。点击frame前面的“+”展开该项,这里面的基本信息是,帧序号(4360)和大小(739bytes),以及到达时间。同理,进入Ethernet II(数据链路层)。此层所展示的,是发送方与接收方的Mac地址,即原Mac地址与目的Mac地址。而到了internet protocol(网络层),则主要显示了原IP地址与目的IP地址,以及IP首部的大小等。下面最后三个,主要是transmission control protocol(传输层)。这一层所揭示的基本信息,是通信双方所开的端口号。即原端口与目的端口。

如何解码分析wireshark捕获的数据包
用wireshark只能捕获到程序安装所在计算机上的数据包,dns解析是一个涉及不同域名服务器的过程,你无法在本机上得知全部过程,但是能捕获到解析请求和最终的返回结果。 1、首先打开wireshak,开始捕捉。2、打开浏览器,访问网站大概的过程就这些,等网站被打开,你所描述的数据基本上都有了。分析其中的数据,dns、tcp握手等都在其中。看协议类型即可。ip地址、mac地址也在数据包中,wireshark默认不显示mac地址,你可以在column preferences中添加新栏目hardware src(des) address即可 下面是数据包的截图,前两个dns,后面是tcp握手,接下来就是http请求和数据了,访问的是新浪网站,浏览器为maxthon4。
运行wireshark软件,打开一个保存的数据包文件。 以第4360号http数据包为例,进行解析。双击该数据包,进入解码页面。点击frame前面的“+”展开该项,这里面的基本信息是,帧序号(4360)和大小(739bytes),以及到达时间。同理,进入Ethernet II(数据链路层)。此层所展示的,是发送方与接收方的Mac地址,即原Mac地址与目的Mac地址。而到了internet protocol(网络层),则主要显示了原IP地址与目的IP地址,以及IP首部的大小等。 下面最后三个,主要是transmission control protocol(传输层)。这一层所揭示的基本信息,是通信双方所开的端口号。即原端口与目的端口。

本文由 在线网速测试 整理编辑,转载请注明出处。