我是使用 XDP 的新手,并试图自学如何创建 ELF 程序来执行各种 XDP 操作。我也是使用 C 的初学者。
如何在不使用帮助标头(ip.h、tcp.h、udp.h 等)的情况下解析数据包以显示数据中特定字节的数据?
我尝试按照此处找到的解析数据包的 xdp_tutorial 部分进行操作。 我还尝试阅读如何使用 bpf 解析来自 skbuff 的数据包。在这里找到的这个 git repo 中有一个示例。Tbh,尝试遵循 xdp_tutorial 示例对我来说相当困难,因为我对 C 很陌生。我确实在这里找到了一些 XDP 示例,这些示例对我来说更直接。
所有这些示例都存在相同的问题,即没有详细说明如何在数据包中使用更高级别的标头(DNS、HTTP 等)。
我了解设置 xdp 程序的基础知识。清除缓冲区*data
,*data_end
然后找到以太网标头、ip 标头和 L4 标头的长度。问题是我遵循的大多数示例和指南都要求我使用头文件中的结构来解析数据包的结构。这一切都很好,但是我将如何解析 DNS 或 HTTP 标头?如果我想查看 FTP 标头的第 11 个字节是什么?如何检查 HTTP 标头是否包含 GET 或 PUT 请求?
只是寻找一个通过 HTTP 等更高级别数据包工作的示例。