我对原始套接字和 libcap 的使用感到有点困惑。任何人都可以简单地指出使用两者的优点。我读了几个链接,但是,它让我感到困惑。
libpcap 在不同的操作系统上使用不同的机制。在 Linux 上,它使用 PF_PACKET 原始套接字或熟套接字,具体取决于它是否了解接口的 Linux 链路层类型(ARPHRD_ 值)and该链路层类型的接口是否产生有用的链路层标头(PPP 接口不会,因此您看不到网络层协议标识符)。在 Irix 上,它使用带有 RAWPROTO_SNOOP 协议的 PF_RAW 套接字。在其他系统上,它根本不使用原始套接字。
原始套接字可用于多种目的,例如发送和接收原始 IPv4 数据包,而不必担心链路层(即它们插入 IP 层而不是网络设备驱动程序)。如果您需要访问原始链路层,大多数操作系统上的原始套接字都不支持(Linux 和 Irix 是明显的例外,根据上一段),但 libpcap 支持。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)