我试图找出在以下之后存储在“缓冲区”中的数据结构:
sock=socket(PF_PACKET, SOCK_RAW, htons(ETHERTYPE_IP));
recvfrom(sock, buffer, 2048, 0, NULL, NULL);
如果它是 TCP 数据包,我希望能够深入数据结构并读取链路层、IP 层和 TCP 层。我尝试了手册页和一些头文件,但到处都是。
提前致谢。
我试图找出在以下之后存储在“缓冲区”中的数据结构:
sock=socket(PF_PACKET, SOCK_RAW, htons(ETHERTYPE_IP));
recvfrom(sock, buffer, 2048, 0, NULL, NULL);
如果它是 TCP 数据包,我希望能够深入数据结构并读取链路层、IP 层和 TCP 层。我尝试了手册页和一些头文件,但到处都是。
提前致谢。
这是通过线路(OSI 第 2 层)传输的原始位。数据包的手册页很好地解释了它。
我要做的是获取此输出并将其与查看相同数据的 Wireshark 会话的输出进行比较。然后,您应该能够将两者关联起来,看看发生了什么。
我相信您所追求的是RFC,它指定了 IP 如何封装在 Ethernet 中。遗憾的是 RFC非常精简,但最近的 RFC包含更多细节。