前言
wireshark是一个网络数据包捕捉和分析工具。本篇文章只介绍过滤器的一些应用实例。关于wireshark的介绍和常见使用方法可以查看博文,《调试利器之wireshark》
抓取过滤
根据tcp的表示字段抓取数据
tcp的表示字段在tcp头的第14字节存储。表示字段有如下几种:
1:URG:(置一有效)紧急指针,表明发送端向另一端使用紧急方式发送数据。
2:ACK:(置一有效)表示确认序号。
3:PSH:(置一有效)表示接收方应该尽快将这个报文交给应用层。
4:RST:(置一有效)表示重建连接。
5:SYN:(置一有效)用来发起一个连接。
6:FIN:(置一有效)表示发送方的表示完成任务,接收方的表示同意断开连接。
tcp[13] = 2
捕获SYN包。二进制数为 00000010,相对应的十进制数为2.
tcp[13] = 18
捕获针对SYN的ACK包。二进制数为 00010010,相对应的十进制数为18.
tcp[13] & 2 = 2
捕获SYN包和SYN的ACK包。这里使用了掩码的方式,只要包含掩码的包都会显示出来。
tcp[13] = 24
只抓取PSH-ACK数据的包。
tcp[13] & 1 = 1
只抓取FIN-ACK数据包。
tcp[13] & 4 = 4
只捕获RST数据包。
显示过滤
tcp contains k_t_1
找出tcp数据包中包含指定字符串(k_t_1)的数据包。
contains关键字说明:
过滤条件中使用了contains关键字。它用于判断一个协议,字段或者分片包含一个值。
tcp.analysis.lost_segment
表明已经在抓包中看到不连续的序列号。报文丢失会造成重复的ACK,这会导致重传。
tcp.analysis.duplicate_ack
显示被确认过不止一次的报文。大凉的重复ACK是TCP端点之间高延时的迹象。
tcp.analysis.retransmission
显示抓包中的所有重传。如果重传次数不多的话还是正常的,过多重传可能有问题。这通常意味着应用性能缓慢和/或用户报文丢失。
tcp.analysis.window_update
将传输过程中的TCP window大小图形化。如果看到窗口大小下降为零,这意味着发送方已经退出了,并等待接收方确认所有已传送数据。这可能表明接收端已经不堪重负了。
tcp.analysis.bytes_in_flight
某一时间点网络上未确认字节数。未确认字节数不能超过你的TCP窗口大小(定义于最初3此TCP握手),为了最大化吞吐量你想要获得尽可能接近TCP窗口大小。如果看到连续低于TCP窗口大小,可能意味着报文丢失或路径上其他影响吞吐量的问题。
tcp.analysis.ack_rtt
衡量抓取的TCP报文与相应的ACK。如果这一时间间隔比较长那可能表示某种类型的网络延时(报文丢失,拥塞,等等)。