libpcap 在它们下面使用原始套接字吗?
我对原始套接字和 libcap 的使用感到有点困惑。任何人都可以简单地指出使用两者的优点。我读了几个链接,但是,它让我感到困惑。
I was getting a bit confused on using of raw sockets and libcap. Can, anyone in simple point out advantages of using both. I read few links, but, its making me confused.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
libpcap 在不同的操作系统上使用不同的机制。在 Linux 上,它使用 PF_PACKET 原始套接字或熟套接字,具体取决于它是否了解接口的 Linux 链路层类型(ARPHRD_ 值)以及该链路层类型的接口是否生成有用的链路-层标头(PPP 接口没有,因此您看不到网络层协议标识符)。在 Irix 上,它使用带有 RAWPROTO_SNOOP 协议的 PF_RAW 套接字。在其他系统上,它根本不使用原始套接字。
原始套接字可用于多种目的,例如发送和接收原始 IPv4 数据包,而不必担心链路层(即,它们插入 IP 层而不是网络设备驱动程序)。如果您需要访问原始链路层,大多数操作系统上的原始套接字都不支持(Linux 和 Irix 是明显的例外,根据上一段),但 libpcap 支持。
libpcap uses different mechanisms on different operating systems. On Linux, it uses PF_PACKET raw or cooked sockets, depending on whether it knows about the Linux link-layer type (ARPHRD_ value) for the interface and whether interfaces of that link-layer type produce a useful link-layer header (PPP interfaces don't, so you can't see the network-layer protocol identifier). On Irix, it uses PF_RAW sockets with the RAWPROTO_SNOOP protocol. On other systems, it doesn't use raw sockets at all.
Raw sockets can be used for a number of purposes, such as sending and receiving raw IPv4 packets without having to worry about the link-layer (i.e., they plug into the IP layer rather than into the network device driver). If you need access to the raw link layer, raw sockets on most OSes don't support that (Linux and Irix being obvious exceptions, as per the previous paragraph), but libpcap does.
“libpcap”和“原始套接字”是不同的主题。
Libpcap 是 Linux 的数据包捕获库,用于捕获通过 eth0 等网络接口的流量/数据包。
在 Windows 上,Winpcap 库做同样的事情。
原始套接字是操作系统提供的套接字 API 的一项功能,可用于发送具有由应用程序而不是操作系统定义的标头的数据包。因此,使用原始套接字我们可以指定 IP 、 TCP 标头并发送数据包。
原始套接字自始至终都可以在 Linux 上使用。在 Windows 上,原始套接字仅在 Windows XP 和 Windows XP(SP1) 中可用。
在 Windows 上,winpcap 库具有发送任意内容数据包的功能,这意味着可以在 Windows 上使用 winpcap 实现原始套接字功能。
"libpcap" and "raw sockets" are different topics.
Libpcap is a packet capture library for linux which is used to capture the traffic/packets that pass through a network interface like eth0.
On windows the Winpcap library does the same thing.
Raw sockets are a feature of the socket api provided by the OS that can be used to send packets with headers defined by the application and not the OS. So using raw sockets we can specify the IP , TCP headers and send the packets.
Raw sockets are available on Linux since all time. On Windows raw sockets were available only in Windows XP and Windows XP(SP1).
On windows the winpcap library has a feature to send packets with arbitrary content , which means raw socket functionality can be achieved with winpcap on Windows.