C PF_PACKET链路层处理

时间:2012-01-02 01:24:02

标签: c linux network-programming posix posix-api

我试图找出以下内容后存储在'buffer'中的数据结构:

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

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

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

提前致谢。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

我相信你所追求的是RFC that specifies how IP is encapsulated in Ethernet。可悲的是,RFC 非常很薄,但more recent RFC包含更多细节。