我正在尝试编写一个应用程序来嗅探发送到我服务器上的以太网端口的流量。我的应用程序永远不需要发送数据 - 只是为了接收和解码5元组。
我打开套接字:
socket (AF_INET, SOCK_RAW, htons (ETH_P_ALL))
并将其设置为混杂模式: struct ifreq ifr; ioctl(raw_socket,SIOCGIFFLAGS,& ifr); / *设置旧标志加上IFF_PROMISC标志* / ifr.ifr_flags | = IFF_PROMISC; ioctl(raw_socket,SIOCSIFFLAGS,& ifr);
我使用recv从套接字接收数据,但似乎我没有收到包中包含来自/到达IP地址的完整数据包。
知道如何做到最好吗?
当我开始工作并需要添加IPv6时 - 有任何提示可以实现这一目标吗?