【发布时间】:2011-12-12 03:42:06
【问题描述】:
任何人都知道一种简单的方法来要求 Linux“显示每个互联网数据包到/来自谷歌浏览器”或“显示每个互联网数据包到/来自 PID 10275 的 telnet 进程”?
telnet 的例子不太有用,因为我可以使用wireshark 或tcpdump 来查看所有涉及端口23 的TCP 会话。这样就没有人再使用telnet 了。但是嗅探所有进出使用许多端口的复杂应用程序的数据包似乎很有用。
我找到了一些相关的答案,探索不同的方法来证实端口和 PID(或程序名称)等,但没有关于数据包的内容
- How to tie a network connection to a PID without using lsof or netstat?
- How I can get ports associated to the application that opened them?
- How to do like "netstat -p", but faster?
看起来有人可能愿意为这个答案付费:
NetHogs 有助于快速查看哪些程序正在通过接口创建流量,但它没有捕获数据包的方法。
【问题讨论】:
-
Hrm,我应该问服务器故障吗?
-
这实际上可能属于超级用户。一个有趣的问题。您可以使用 WireShark 过滤 HTTP 请求,但您必须连接到内核驱动程序以根据 PID 过滤数据包
-
这是一个有点复杂的问题 - 套接字不属于 PID;您可以将它们从一个进程传递到另一个进程。如果进程 A 打开一个套接字,它可以将其传递给进程 B 然后退出 - 如果您正在过滤进程 A 的 PID,现在会发生什么?
-
我打算建议使用
dtrace来观看像write、send、sendto这样的系统调用,但是AFAIKdtrace还没有进入Linux。也许您可以使用类似的系统调用日志记录工具?
标签: linux networking