wireshark(wireshark过滤规则及使用方法)
Wireshark
Wireshark作为网络工具,一直被推崇;wireshark可以通过TCP的端口号的个数,或者Stream index的个数,来判定有几个线程;可以通过分段分片的消息,判定是否分片;可以通过mss判定MTU的大小。
抓eNb的WireShark pcap
tcpdump -p sctp -i eth2 -w aa.pcap
epc内部抓不同口,开两个ssh,抓取S1U和SGI的数据包
tcpdump -i eths1u -s 0 -w s1u.cap
tcpdump -i ethsgi -s 0 -w sgi.cap
Wireshark的时序图产生一个TCP序号vs.时间的图形。
在Wireshark的菜单Statistics?-TCP?Stream?Graph?-?Time-Sequence?Graph下,有两种格式的时序图,stevens和tcptrace。Stevens时序图描述了流量(序号)随着时间的变化,主要用于查看流量变化的情况,是否有中断、丢包、大时延的情况,命名取自W.Richard?Stevens写的经典书籍《TCP/IP协议详解》。
Tcptrace时序图除了stevens时序图的内容外,还记录了对端ACK值和接收窗口的变化,内容较stevens时序图要丰富。Tcptrace原是Ohio?University的Shawn?Ostermann写的一个工具。
正常情况下,如果TCP速率稳定,那么在stevens时序图上看到的将是一条笔直上升的斜线,它的斜率等于速率,下面是放开限速的情况下的速率图,速率为100Mbps。
最好的情况下对应的WireShark的抓包
相比Stevens时序图,tcptrace时序图增加了对端ACK值和接收窗口变化的序号。如下图,中间黑色的粗线代表了发送的包,下方浅色的线代表了上一个ACK确认的包序号,上方浅色的线表征了TCP窗口,它等于上一个TCP?ACK序号再加上TCP链路的window?size。
下图为限速的情况下的序列图,下行限速1Mbps:
TCP segment of a reassembled PDU指的不是IP层的分片,IP分片在wireshark里用Fragmented IP protocol来标识。TCP segment of a reassembled PDU指TCP层收到上层大块报文后分解成段后发出去。
数据报的分段和分片确实发生,分段发生在传输层,分片发生在网络层。但是对于分段来说,这是经常发生在UDP传输层协议上的情况,对于传输层使用TCP协议的通道来说,这种事情很少发生。
网络层IP协议会检查每个从上层协议下来的数据包的大小,并根据本机MTU的大小决定是否作“分片”处理。分片最大的坏处就是降低了传输性能,本来一次可以搞定的事情,分成多次搞定,所以在网络层更高一层(就是传输层)的实现中往往会对此加以注意。
有些高层因为某些原因就会要求我这个面包不能切片,我要完整地面包,所以会在IP数据包包头里面加上一个标签:DF(Do not Fragment)。
这样当这个IP数据包在一大段网络(水管里面)传输的时候,如果遇到MTU小于IP数据包的情况,转发设备就会根据要求丢弃这个数据包,然后返回一个错误信息给发送者。
TCP数据丢弃会造成网络丢包的发生
在TCP传输过程中(不包括三次握手和四次挥手),同一台主机发出的数据包应该是连续的,即后一个包的Seq号等于前一个包的Seq+Len。也可以说,后一个包的Seq会大于或等于前一个包的Seq。当Wireshark发现后一个包的Seq号小于前一个包的Seq+Len时,就会认为是乱序了,因此提示?[TCP Out-of-Order]?。如图所示,3362号包的Seq=2685642小于3360号包的Seq=2712622,所以就是乱序。
小跨度的乱序影响不大,比如原本顺序为1、2、3、4、5号包被打乱成2、1、3、4、5就没事。但跨度大的乱序却可能触发快速重传,比如打乱成2、3、4、5、1时,就会触发足够多的Dup ACK,从而导致1号包的重传。
当乱序或者丢包发生时,接收方会收到一些Seq号比期望值大的包。它每收到一个这种包就会Ack一次期望的Seq值,以此方式来提醒发送方,于是就产生了一些重复的Ack。Wireshark会在这种重复的Ack上标记[TCP Dup ACK]?。
以图为例,服务器收到的7号包为“Seq=29303, Len=1460”,所以它期望下一个包应该是Seq+Len=29303+1460=30763,没想到实际收到的却是8号包Seq=32223,说明Seq=30763那个包可能丢失了。因此服务器立即在9号包发了Ack=30763,表示“我要的是Seq=30763”。由于接下来服务器收到的10号、12号、14号也都是大于Seq=30763的,因此它每收到一个就回复一次Ack=30763,从图中可见Wireshark在这些回复上都标记了[TCP Dup ACK]。
当发送方收到3个或以上[TCP Dup ACK],就意识到之前发的包可能丢了,于是快速重传它(这是RFC的规定)。以图6为例,客户端收到了4个Ack=991851,于是在1177号包重传了Seq=991851。
如果一个包真的丢了,又没有后续包可以在接收方触发[Dup Ack],就不会快速重传。这种情况下发送方只好等到超时了再重传,此类重传包就会被Wireshark标上[TCP Retransmission]。以图为例,客户端发了原始包之后,一直等不到相应的Ack,于是只能在100多毫秒之后重传了。?
wireshark使用教程入门
wireshark使用教程入门如下:
操作设备:戴尔灵越7400
操作系统:win10
操作软件:wireshark 2.1
1、启动wireshark,系统提示更新,不要理它,点击no。
2、下面点击Tools- Fiddler Options开始配置工具。
3、进入https选项卡,勾选Decrpt HTTPS traffic,?? ?Fiddler截获HTTPS请求。
4、下面进入connects选项卡,勾选Allow remote computers to connect。允许HTTP/HTTPS请求发送到Fiddler,弹出提示,点击确定按钮。
5、配置完成,我们就可以抓包了,我们以抓取iphone数据为例,iPhone打开sarfari,输入如下图所示地址下载证书。
6、点击安装,进行证书安装。
7、下面就可以在wireshark上抓去iPhone的数据了。
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-Endpoints
3.3.3 对话
对话页面展示两个端点之间的包传输情况。端点在不同协议层有不同含义,对话也一样。在网络层,对话是两个IP之间进行,在数据传输层,对话在两个端口之间进行。
操作:Statistics-Conversations
3.3.4 流量图
流量图使用图形化展示了数据包的抓取情况。
操作:Statistics-IO Graphs
3.3.5 协议分层
协议分层页面将抓取到数据包按网络协议进行了分类,我们可以看到每个网络层抓取包的情况。
操作:Statistics-Protocol Hierarchy Statistics
3.3.6 专家信息
wireshark 帮我们分析了数据包情况,通过专家信息页面提示网络中出现的问题,它将数据包分为4个等级(Error,Warnings,Notes,Chats),从左至右问题严重程度依次减少,Chats是正常的数据包。Error表示可能导致问题的数据包。
操作:Analyze-Expert Infos
一般地,如果不设置静态MAC--IP对应表,机器都会发送arp请求来获得其他机器的mac地址。
如此,我们只需要在显示过滤器输入 arp 即可获得apr数据包。捕获信息见下图:
wireshark官方文档
wireshark怎么用
1、直接打开wireshark的主界面,需要选择本地连接开始抓包。
2、下一步如果没问题,就点击停止按钮进行跳转。
3、这个时候等完成上述操作以后,继续确定查看相关对象。
4、这样一来会得到图示的结果,即可达到目的了。