我正在使用 C 创建一个用于网络过滤的个人应用程序。我已经知道您可以使用以下代码记录和分析下载的数据包的信息:
tcpPacket = recvfrom(raw_socket , buffer , 65536 , 0 , &serverAddress , &serverAddressSize);
但这需要先下载tcp数据包。我需要的是,过滤器甚至在下载之前就将被执行,假设它检查源 IP,并基于此,它接受或拒绝它。
注意:是的,我知道 iptables,但我不想使用它,因为我想学习如何使用原始套接字来做到这一点。
最佳答案
在面向数据包的网络(如 TCP/IP)中,每个数据包都包含地址信息和实际负载。
因此,根据数据包中的数据,在下载数据包之前删除数据包是没有意义的。
如果您可以在数据包中停止实际的(硬件)接收器,这也许是可以想象的,但我不认为任何“正常”网络硬件或 API 都会公开此类功能。
关于c - 如何在完全下载之前丢弃数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26589881/