我想实时查看客户端 – 服务器应用程序使用的协议。 我对任何统计资料都不感兴趣。 我想看到的是由服务器和客户端发送的消息。 这是FreeBSD的具体如果有帮助。一些谷歌search后,我发现tcpdump作为正确的select。 所以我试图在我的服务器上运行它,但不能缩小特定于我的应用程序的数据包内容。 它的一堆文字滚动直播。 我的应用程序的实际通信量不足以在terminal上显示时丢失跟踪。
我想我可能没有提供足够的信息。 如果需要什么,请添加评论。 我会很快回复。
任何帮助或指针,高度赞赏。
您可以轻松过滤tcpdump捕获的数据包。 我假设你知道你的应用程序在通信的端口是什么? 比方说,你想要捕获在端口12345上的所有stream量。然后你运行:
$ tcpdump port 12345
或者,您可以捕获到一个文件,然后使用GUI工具Wireshark打开:
$ tcpdump -s0 -w packets.log port 12345
你将需要做一些过滤,以限制tcpdump只是你想要的数据。 一个例子就是只查看涉及主机a和主机b的stream量
tcpdump $options host a and host b
我通常在tcpdump中使用-n,-X,-vv和-s0选项。 你也可以根据端口和许多其他的东西进行过滤。 要查看主机a和主机b之间的smtp对话,您可以运行tcpdump更像是:
tcpdump -n -X -vv -s0 host a and host b and port smtp
这将限制显示的数据涉及ldap端口,主机a和主机b。 如果3中的任何一个丢失,就不会显示。 手册页将有更多关于过滤的信息。
Rik,希望这会有所帮助
如果协议是基于文本的(如HTTP,SMTP等),我喜欢ngrep 。 它使用像tcpdump这样的libpcap ,所以过滤语法是一样的。 不同之处在于它的输出适合显示数据包的有效负载,并且可以让您将输出限制为匹配正则expression式的数据包。
例如,要查看邮件投递尝试,您可能需要:
ngrep -d eth0 -qlM -s 0 -W byline '^MAIL FROM:|^RCPT TO:' 'tcp port 25'