Wireshark/tcpdump/libpcap在Linux内核中的哪里拦截数据包? |
您所在的位置:网站首页 › tcpdump导出文件 › Wireshark/tcpdump/libpcap在Linux内核中的哪里拦截数据包? |
根据这个,Wireshark是能够将数据包之前,(我自己因此我不能让这样的数据包)下降。而且我仍然想知道wireshhark在Linux内核中的确切位置以获取数据包。 答案是“在UN * Xes上,它使用libpcap,而在Linux上,它使用AF_PACKET套接字。” 有谁有使用“ AF_PACKET套接字”的更具体示例?如果我正确理解Wireshark,则网络接口卡(NIC)会复制所有传入数据包,并将其发送到用户定义的过滤器(伯克利数据包过滤器)。但是,这发生在哪里呢?还是我对这种理解有误,在这里我想念什么吗? 提前致谢! 1> Roman Zaitse..: 但是,这发生在哪里呢? 如果我正确理解了您-您想知道,在哪里初始化这样的套接字。 有一个pcap_create 函数,它试图确定源接口的类型,创建它的副本并激活它。 对于网络,请参见pcap_create_interface function => pcap_create_common function => pcap_activate_linux function。 所有初始化发生在pcap_activate_linux=> activate_new 功能 => iface_bind 功能 (与设备的复制描述符handlep->device = strdup(device);, 创建具有插座socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ALL)), 结合到插座装置与bind(fd, (struct sockaddr *) &sll, sizeof(sll)))。 有关更多详细信息,请阅读所提及功能的源文件中的注释-它们非常详细。 初始化后,所有工作都在一组功能如pcap_read_linux等 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |