C PF_PACKET 链路层处理

标签 c linux network-programming posix posix-api

我试图找出存储在“缓冲区”中的数据结构:

sock=socket(PF_PACKET, SOCK_RAW, htons(ETHERTYPE_IP));

recvfrom(sock, buffer, 2048, 0, NULL, NULL);

我希望能够深入研究数据结构并读取链路层、IP 层和 TCP 层(如果它是 TCP 数据包)。我尝试了手册页和一些头文件,但它到处都是。

提前致谢。

最佳答案

这是通过线路传输的原始位(OSI 第 2 层)。 man page for packet解释得很好。

我要做的就是获取其输出,并将其与查看相同数据的 Wireshark session 的输出进行比较。然后您应该能够将两者关联起来并查看发生了什么。

关于C PF_PACKET 链路层处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8696746/

相关文章:

c - 结构 sigaction 不完整错误

php - 在linux上添加bash脚本来创建用户

http - 从 HTTP I/O 错误中恢复

c - 如何从 linux tun/tap 中逐个读取数据包

tcp - 协议(protocol) header 中的十六进制值

c - 贪心算法 - 罗马数字

c++ - 如果输入大于零,是否有一个单行代码可以从输入中减去 1?

c - C中的二叉搜索树-删除具有左右子树的节点时出错

linux - 在 Linux 上正确设置 Valves Source SDK 2013

linux - 读/写字符设备时如何避免高CPU使用率?