Articles of tcpdump

tcpdump中“未知的SSAP”和“未知的DSAP”是什么意思?

当试图解决一个间歇性的无线连接到路由器的机器上的互联网连接问题时,我跑了tcpdump,并注意到“未知的SSAP”和“未知的DSAP”错误的数据包以每秒几个速度来到。 20:27:21.703178 00:24:a5:af:24:f6 (oui Unknown) Unknown SSAP 0xde > 1c:65:9d:48:38:95 (oui Unknown) Unknown DSAP 0xe2 Information, send seq 0, rcv seq 16, Flags [Response], length 171 20:27:21.724726 00:24:a5:af:24:f6 (oui Unknown) Unknown SSAP 0xde > 1c:65:9d:48:38:95 (oui Unknown) Unknown DSAP 0xe2 Information, send seq 0, rcv seq 16, Flags [Response], length 104 20:27:21.746449 00:24:a5:af:24:f6 (oui Unknown) […]

tcp零窗口消息的tcpdumpfilter

是否有一个pcapfilter的TCPDump,将允许过滤零窗口消息? 我知道如何在tcp.analysis.zero_window显示filter( tcp.analysis.zero_window )中过滤这些数据,但是我需要处理的数据量很容易导致wireshark(至less是32位版本)崩溃,并且分解文件并通过这些捕获乏味。 有无论如何有一个捕获filter的TCP零窗口消息?

我如何使用tcpdump过滤MongoDB副本设置心跳?

有时,在排除副本集的健康状况时,我想特别过滤掉心跳包,跟踪它们,然后回复(或缺less),而没有其他数据stream集。 不幸的是,这些数据包的结构与正常的命令/查询和响应非常相似。 虽然Wiresharkparsing器让我能够接触到MongoDB的有线协议,但是我不能用tcpdump的这个技术来过滤掉源数据包。 所以,问题是 – 如何过滤tcpdump中的MongoDB副本集心跳?

tcpdumpfilter,排除私人IPstream量

对于通用filter来排除我的转储中私人IP地址之间的所有stream量,我想出了以下内容: sudo tcpdump -n ' (not ( (src net 172.16.0.0/20 or src net 10.0.0.0/8 or src net 192.168.0.0/16) and (dst net 172.16.0.0/20 or dst net 10.0.0.0/8 or dst net 192.168.0.0/16) ) ) and (not ( (dst net 172.16.0.0/20 or dst net 10.0.0.0/8 or dst net 192.168.0.0/16) and (src net 172.16.0.0/20 or src net 10.0.0.0/8 or […]

澄清有关Linux TCP窗口大小和延迟

通过TCP通道发送数据时,我遇到了延迟,我无法理解。 链路是1Gb链路,端到端延迟大约为40ms。 在我目前的设置中,等待时间(从发送者用户空间到接收者用户空间的一条消息的时间)可以达到100ms。 发件人套接字使用TCP_NODELAY选项进行configuration。 发送缓冲区(SO_SNDBUF)被configuration为8MB。 接收缓冲区(SO_RCVBUF)也被configuration为8MB。 TCP窗口缩放被激活。 update-1 :我使用zeromq 3.1.1中间件来传输数据。 套接字configuration,包括TCP_NODELAY标志由中间件执行。 有些选项可以像rx和tx一样发送缓冲区大小而不是TCP_NODELAY。 据我所知,TCP_NODELAY被激活,以确保数据被发送尽可能。 同时,实际的套接字发送和发送消息的决定是在两个独立的线程中执行的。 如果批量中的第一条消息发送时有多条消息可用,则进行正确的批处理。 我用tcpdump从下面的帧中提取了一个捕获。 初始TCP握手后,发送方(172.17.152.124)开始发送数据。 初始窗口大小为接收方为5840字节,发送方为5792字节。 我的问题是,发送者发送两个帧(#6和#7),然后停下来,等待一个确认从接收器回来。 据我所知,接收器的窗口大小没有达到,传输不应停止(384字节未完成,初始接收窗口大小为5840字节)。 我开始认为我没有正确理解TCP是什么。 有人可以帮助澄清? 更新-2 :我的数据有效载荷由一个幻数和一个时间戳组成。 我通过比较有效负载的时间戳和tcpdump的时间戳,隔离了延迟的数据包。 帧#9的有效载荷ts非常接近帧#6和#7,并且明显小于帧#8中接收到的应答的时间戳。 update-1 :帧#9不立即发送的事实可以通过TCP通道的慢启动来解释。 事实上,一旦连接运行了几分钟,问题也会出现,所以慢启动似乎不是一般的解释。 20:53:26.017415 IP 172.17.60.9.39943> 172.17.152.124.56001:标志[S],seq 2473022771,win 5840,选项[mss 1460,sackOK,TS val 4219180820 ecr 0,nop,wscale 8],长度为0 20:53:26.017423 IP 172.17.152.124.56001> 172.17.60.9.39943:Flags [S.],seq 2948065596,ack 2473022772,win 5792,options [mss 1460,sackOK,TS val 186598852 ecr 219180820,nop,wscale […]

在三个接口上同时捕获networkingstream量

我需要在CentOS 5服务器上捕获stream量,该服务器充当具有2万个接口和1个局域网的networking代理。 为了解决一个奇怪的代理问题,我想捕获一个完整的对话。 由于两个WAN接口之间的外部连接是平衡的,我想知道是否有可能在所有接口上同时捕获。 我以前使用过tcpdump但一次只允许一个接口。 我可以启动3个并行进程来捕获所有接口,但是最终我会得到3个不同的捕获文件。 这样做的正确方法是什么?

TCP转储,不能理解这4行?

我需要支持理解这4条线。 看起来像tcp转储,但我真的不明白到底发生了什么。 13:13:22.407445 IP 192.168.246.128.54955 > 192.168.246.13.80: S 2910497703:2910497703(0) win 5840 <mss 1460,sackok,timestamp="" 518611="" 0,nop,wscale="" 6=""> 13:13:22.407560 IP 192.168.246.13.80 > 192.168.246.128.54955: S 3762608065:3762608065(0) ack 2910497704 win 64240 <mss 1460,nop,wscale="" 0,nop,nop,timestamp="" 0="" 0,nop,nop,sackok=""> 13:13:22.407963 IP 192.168.246.128.54955 > 192.168.246.13.80: . ack 1 win 92 <nop,nop,timestamp 518611="" 0=""> 13:13:22.408321 IP 192.168.246.128.54955 > 192.168.246.13.80: R 1:1(0) ack 1 win […]

tcpdump:snaplen设置为0,但仍然得到“数据包大小限制在捕获”?

由于这个问题,我要在MySQL服务器后端嗅探一些数据包,看看会发生什么: # tcpdump -vv -s0 -c 100 -i bond0 tcp port 3306 and host 192.168.3.87 -w /home/quanta/3.87_aborted.pcap 正如你所看到的,我把snaplen设置为0,但仍然得到“捕获期间数据包大小有限”的消息: MySQL Protocol Packet Length: 579 Packet Number: 96 text: 336 text: 1004352 text: 147619 text: 336 [Packet size limited during capture: MySQL truncated] 我的界面上的卸载设置: # ethtool -k bond0 Offload parameters for bond0: Cannot get device rx csum […]

数据包捕获:在RX与TX上进行过滤

我有一个networking问题,其中与我的主机的源MAC匹配的源MAC帧到达主机 – 一个明显的重复的MAC,或循环,或其他L2问题。 我相信这是因为我的linux网桥的MAC表(CAM表)注册一个本地MAC(托pipe虚拟机)作为上游端口,内核日志显示错误: bridgename: received packet on bond0.2222 with own address as source address 我想获得关于这些“stream氓”数据包/帧的更多细节,但我无法弄清楚如何将它们归零。 使用tcpdump你可以过滤一个特定的源MAC('ether src MAC'),但这是基于帧中的字节 – 而不是帧是“发送”还是“接收”。 我们通常假设一个源MAC的帧意味着我们将它发送出去,但是如果收到一个重复的帧,内容看起来与filter完全一样。 怎样才能观察一个帧是否被收到,而不是在一个包捕获中传输?

在捕获后过滤tcpdump文件

我捕获了一个非常大的tcpdump文件,现在总是崩溃我的wireshark。 它被捕获,没有filter,我需要申请一些后来使文件更小。 这有可能吗?