2011-10-22 86 views

回答

1

「libpcap」和「原始套接字」是不同的主題。

Libpcap是一個Linux數據包捕獲庫,用於捕獲通過網絡接口(如eth0)的流量/數據包。

在Windows上,Winpcap庫做同樣的事情。

原始套接字是操作系統提供的套接字API的一項功能,可用於發送包含應用程序定義的頭的數據包,而不是操作系統。因此,使用原始套接字,我們可以指定IP,TCP標頭併發送數據包。

原始套接字始終在Linux上提供。在Windows上,原始套接字僅在Windows XP和Windows XP(SP1)中可用。

在Windows上,winpcap庫具有發送任意內容數據包的功能,這意味着使用Windows上的winpcap可以實現原始套接字功能。

10

libpcap在不同的操作系統上使用不同的機制。在Linux上,它使用PF_PACKET raw或cooked套接字,具體取決於它是否知道接口的Linux鏈路層類型(ARPHRD_值),該鏈路層類型的接口是否產生有用的鏈路層報頭(PPP接口沒有,所以你看不到網絡層協議標識符)。在Irix上,它使用帶RAWPROTO_SNOOP協議的PF_RAW套接字。在其他系統上,它根本不使用原始套接字。

原始套接字可用於多種目的,例如發送和接收原始IPv4數據包,而不必擔心鏈路層(即插入IP層而不是網絡設備驅動程序)。如果您需要訪問原始鏈接層,大多數操作系統上的原始套接字不支持該功能(根據前一段,Linux和Irix是明顯的例外),但是libpcap可以。

+0

在Windows上,它使用較低級別的網絡驅動程序來捕獲數據。 RAW套接字僅限於現代Windows版本的管理員用戶。 –