
wireshark使用没有相关接口显示
https://blog.csdn.net/littlle_yan/article/details/79403680
我遇到这个问题是出现在Win10系统中,出现这个问题的原因是Wireshark中由于自带的Winpcap不支持Win10。
1.这个问题的解决方法是下载一个Win10支持的Winpcap,下载链接为点击打开链接,界面如图:
Winpcap
https://www.cnblogs.com/happygirl-zjj/p/6247271.html
WinPcap 是由伯克利分组捕获库派生而来的分组捕获库,它是在Windows 操作平台上来实现对底层包的截取过滤。
作用
WinPcap 是 BPF 模型和 Libpcap 函数库在 Windows 平台下网络数据包捕获和网络状态分析的一种体系结构,这个体系结构是由一个核心的包过滤驱动程序,一个底层的动态连接库 Packet.dll 和一个高层的独立于系统的函数库 Libpcap 组成。
底层的包 捕获驱动程序实际为一个协议网 络驱动程序,通过对 NDIS 中函数的调用为 Win95、Win98、WinNT、和 Win2000 提供一类似于 UNIX 系统 下 Berkeley Packet Filter 的捕获和发送原始数据包的能力。
Packet.dll 是对这个 BPF 驱动程序进行访问 的 API 接口,同时它有一套符合 Libpcap 接口(UNIX 下的捕获函数库)的函数库。
组成部分
WinPcap 包括三个部分:
第一个模块NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件。
它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。
第二个模块packet.dll为win32平台提供了一个公共的接口。不同版本的Windows系统都有自己的内核模块和用户层模块。Packet.dll用于解决这些不同。调用Packet.dll的程序可以运行 在不同版本的Windows平台上,而无需重新编译。
第三个模块 Wpcap.dll是不依赖于操作系统的。它提供了更加高层、抽象的函数。
packet.dll和Wpcap.dll:packet.dll直接映射了内核的调用。
好牛,谁写的
Wpcap.dll提供了更加友好、功能更加强大的函数调 用。
WinPcap的优势提供了一套标准的抓包接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来便于开发各种网络分 析工具,充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。
3
Winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。
它有如下几个功能:
1、捕获原始数据包,包括在共享网络上各主机发送/接收的以及相互之间交换的数据;
2、在数据包发往应用程序之前,按照自定义的规则将某些特殊的数据包过滤掉
3、在网络上发送原始的数据包;
4、收集网络通信过程中的统计信息。
从上面的功能来看,这个库文件提供了许多的API函数,可以让我们捕获网络上的数据包以及统计网络通信的信息。为了更直观的反应这个库文件的作用,我们来看看利用这个库文件写出来的一个应用软件,wireshark。界面如下图所示,这个界面只是捕获数据的一个小界面,里面有很多的设置,有兴趣可以下载一个试试。他能统计在一个局域网的所有网络信息。
这里面重要一点,需要提醒的是:winpcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据包。
也就是说,winpcap不能阻塞,过滤或控制其他应用程序数据包的发收,它仅仅只是监听共享网络上传送的数据包。也就是说,WinpCap主要功能不能截取网络中的数据,他只能监听里面的数据。
谁的资料,前后矛盾啊西巴?
对于WinpCap的结构以及原理,我们自然可以不用理会啦,我们只需要知道他的用途就行啦!
抓包原理
Wireshark使用笔记
Wireshark使用笔记,转载&学习《超详细的Wireshark使用教程》,并结合自己操作写以下笔记。
wireshark?
wireshark是非常流行的网络封包分析软件,简称小鲨鱼,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。
wireshark是开源软件,可以放心使用。可以运行在Windows和MacOS上。对应的,linux下的抓包工具是 tcpdump(接下来好好研究一下)。
使用wireshark的人必须了解网络协议,否则就看不懂wireshark了。
Wireshark常用应用场景
- 网络管理员会使用wireshark来检查网络问题
- 软件测试工程师使用wireshark抓包,来分析自己测试的软件
- 从事socket编程的工程师会用wireshark来调试
- 运维人员用于日常工作,应急响应等
总之跟网络相关的东西,都可能会用到wireshark
Wireshark抓包原理
Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
Winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统,winpcap是libpcap【是unix/linux平台下的网络数据包捕获函数包】在windows上的对应物。
简单来说,wireshark就是基于winpcap处理网络驱动层,就是里面套了一个Winpcap。
关于Winpcap更多学习参考:http://t.zoukankan.com/yingfang18-p-1889596.html
Wireshark使用的环境大致分为两种,一种是电脑直连网络的单机环境,另外一种就是应用比较多的网络环境,即连接交换机的情况。
- 「单机情况」下,Wireshark直接抓取本机网卡的网络流量;
- 「交换机情况」下,Wireshark通过端口镜像、ARP欺骗等方式获取局域网中的网络流量。
-
端口镜像:利用交换机的接口,将局域网的网络流量转发到指定电脑的网卡上。
-
ARP欺骗:交换机根据MAC地址转发数据,伪装其他终端的MAC地址,从而获取局域网的网络流量。
https://www.cnblogs.com/pam-sh/p/16984002.html
Wiresharks分析
Packet Details Pane(数据包详细信息), 在数据包列表中选择指定数据包,在数据包详细信息中会显示数据包的所有详细信息内容。数据包详细信息面板是最重要的,用来查看协议中的每一个字段。各行信息分别为
(1)Frame: 物理层的数据帧概况
(2)Ethernet II: 数据链路层以太网帧头部信息
(3)Internet Protocol Version 4: 互联网层IP包头部信息
(4)Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
(5)Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议
TCP相关细节信息
一一点开都可以在右侧看到对应的包的
对应数据
即以数据对应的位置
具体的包的数据要看对照下面的图来进行查看
基本筛选
一般网络问题及其分析
-
存在延迟,延迟点的查看即查看峰值较高的点(这个图没找到在哪)
1
2
3
4
5
* ```
因为ack包无数据,若延迟过高,则判断为线路问题。
http get请求包延迟高,则判断为客户端问题。
http get相应包延迟高,则判断为服务器端问题。 -
TCP SYN扫描是依赖于三次握手来确定目标主机上哪些端口是开放的。 攻击者会发送TCP SYN数据包到目标主机的一个范围的端口上,假装是要进行建立正常的通信连接,这也是TCP三次握手的第一次。 若目标机器回复了TCP SYN/ACK数据包,则表明该端口是打开的,且这时候攻击者是不进行任何回复的,这样导致目标主机会进行3次重传SYN/ACK;若攻击者收到相应的RST数据包,表明端口已经关闭了; 若攻击者没有收到任何响应,则意味着端口被某个中间设备过滤了,可能是防火墙或者主机本身。
1
2
3
4
5
6
7
* ```
网络延迟高---wireshark解析:https://www.ktanx.com/blog/p/4124
sys、sys,ack、ack这些报文因为不需要进行应用程序处理,所以即使服务器繁忙,也可以快速回复。
线路延迟高:客户端发起tcp连接请求,发出sys包,接收回复的sys,ack包慢,则可以判断为线路延迟高。
客户端负载高:客户端收到sys,ack包后,快速响应,发出ack包;但是之后的data包却延迟较高。这很可能是由于客户端负载高,导致应用层数据包封装慢导致的。
服务器负载高:服务器在收到请求,例如在接收到get请求后,快速响应ack包,但是之后的data包却延迟高,这很可能是由于服务器负载高,导致应用层数据包封装慢导致的。 -
针对不存在端口的连接请求 客户端尝试与服务器未对外提供服务的端口建立TCP连接,服务器将会直接向客户端发送reset报文。 2、接收端收到TCP报文,但是发现该TCP的报文,并不在其已建立的TCP连接列表内,则其直接向对端发送reset报文(例如TCP 半开连接) 如果在未告知另一端的情况下通信的一端关闭或终止连接,那么就认为该条TCP连接处于半开状态。 a.举个例子,服务器主机被切断电源后重启(切断电源前可将网线断开,重启后再接上),此时的客户端是一个半开的连接。当客户端再次向服务端发送数据时,服务端对此连接一无所知,会回复一个重置报文段RST后,中断连接。 b.如果一个已关闭的TCP连接又收到数据,显然是异常的,此时应RST中断连接。 c.再或者如果程序开启了TCP保活机制,则当监测到对方主机不可达时,发送RST中断连接。 d.连接超时(某些应用设置的超时时间过短,例如设置了100ms) 3、提前关闭连接 a.TCP应用程序接收数据是从操作系统中接收的TCP数据,如果数据到达了操作系统但是我应用数据不想继续接收数据了,此时RST中断连接。 b.客户端和服务器的某一方在交互的过程中发生异常(如程序崩溃等),该方系统将向对端发送TCP reset报文,告之对方释放相关的TCP连接 c.在交互的双方中的某一方长期未收到来自对方的确认报文,则其在超出一定的重传次数或时间后,会主动向对端发送reset报文释放该TCP连接 4、终止一条连接 终止一条连接的正常方法是由通信一方发送一个FIN。这种方法也被称为有序释放。因为FIN是在之前所有排队数据都已发送后才被发送出去,通常不会出现丢失数据的情况。 然而在任何时刻,我们都可以通过发送一个重置报文段RST替代FIN来终止一条连接。这种方式也被称为终止释放。 终止一条连接可以为应用程序提供两大特性: 任何排队的数据都将被抛弃,一个重置报文段会被立即发送出去; 重置报文段的接收方会说明通信的另一端采用了终止的方式而不是一次正常关闭。API必须提供一种实现上述终止行为的方式来取代正 常的关闭操作。 5、有些应用开发者在设计应用系统时,会利用reset报文快速释放已经完成数据交互的TCP连接,以提高业务交互的效率
参考网站
一站式学习Wireshark:https://www.ktanx.com/blog/p/4112
wireshark样本下载:https://wiki.wireshark.org/SampleCaptures
Wireshark中常见的TCP Info :https://blog.csdn.net/faithc/article/details/52832617