![](/img/trans.png)
[英]Raw socket: filter only packets coming from a certain IP address? (Linux C)
[英]How to filter Packets in RAW socket in LINUX
RAW套接字:如何在RAW Socket
過濾數據包? 我試圖在服務器程序中捕獲UDP packets
,但它接收了所有數據包。 是否有任何功能或命令來過濾linux中的數據包。
#include <sys/socket.h>
#include <netinet/in.h>
raw_socket = socket(AF_INET, SOCK_RAW, int protocol);
使用此協議字段,我們可以捕獲特定的數據包。
int fd = socket (PF_INET, SOCK_RAW, IPPROTO_TCP);
char buffer[8192]; /* single packets are usually not bigger than 8192 bytes */
while (read (fd, buffer, 8192) > 0)
{
printf ("Caught tcp packet: %s\n",
buffer+sizeof(struct iphdr)+sizeof(struct tcphdr));
}
上面的代碼將捕獲所有TCP數據包。 同樣,對於UDP,我們可以使用
socket (PF_INET, SOCK_RAW, IPPROTO_UDP);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.