使用 Java 套接字阅读 IP-layer headers

Read IP-layer headers using Java sockets

有没有办法(在 Java 中)使用 TCP 或 UDP 套接字读取 IP-layer headers(我对 src & dst IPs 感兴趣)?

我知道可以使用 pcap(数据包捕获),但我没有找到使用套接字的方法。 这背后的原因是什么?

您可以将 /dev/socket 作为 InputStream 打开并读取进入套接字的数据。

在操作系统级别,您需要 raw sockets 才能访问 IP-layer headers。但幸运的是,纯 Java 中不存在原始套接字,因此您需要本机代码来进行相关的系统调用。

有 Java 库使用 JNI 组件进行本机调用。一个例子(我过去成功地使用过)是 Rocksaw.