我對使用原始套接字和libcap有點困惑。任何人都可以簡單指出使用兩者的優點。我讀了幾個鏈接,但是,它讓我感到困惑。libpcap在它們下面使用原始套接字嗎?
12
A
回答
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可以。
相關問題
- 1. winpcap/libpcap與原始套接字
- 2. 在Linux C應用程序中的原始套接字VS Libpcap
- 3. 使用原始套接字
- 4. 使用libpcap與套接字連接
- 5. 使用原始套接字時,我們可以選擇特定的接口嗎?
- 6. 我應該關閉makefile'ed套接字,它是獨立的原始套接字嗎?
- 7. 使用原始套接字(C++)
- 8. 問題使用被定義爲下面的一個原始套接字用C
- 9. recv與原始套接字
- 10. UDP - 原始套接字 - C#
- 11. Scapy的原始套接字
- 12. Lua:原始套接字
- 13. 原始功能如何使用它們
- 14. Python原始套接字接收問題
- 15. 如何在Perl中使用原始套接字?
- 16. python:在OSX上使用原始套接字
- 17. 在原始套接字中使用recvfrom():一般疑問
- 18. 在Linux上使用C的原始套接字sendto失敗
- 19. 如何在Java中使用ZeroMQ創建原始套接字?
- 20. 如何在WinCE5中使用原始套接字?
- 21. 在原始套接字中使用MAC地址的cli/C++
- 22. 在原始套接字上實現協議並使用O_DIRECT
- 23. 使用Linux原始套接字與vconfig接口
- 24. 我可以使用Linux中的原始套接字創建一個偵聽TCP套接字嗎?
- 25. 難道我們在使用套接字
- 26. java中的原始套接字
- 27. Linux C原始套接字TCP握手
- 28. 原始套接字:不適當的ioctl
- 29. 原始UDP套接字卡住recvfrom
- 30. 從套接字讀取原始數據
在Windows上,它使用較低級別的網絡驅動程序來捕獲數據。 RAW套接字僅限於現代Windows版本的管理員用戶。 –