![如何检测仅来自本地网络而非来自 ISP/互联网的数据包?](https://linux22.com/image/1377272/%E5%A6%82%E4%BD%95%E6%A3%80%E6%B5%8B%E4%BB%85%E6%9D%A5%E8%87%AA%E6%9C%AC%E5%9C%B0%E7%BD%91%E7%BB%9C%E8%80%8C%E9%9D%9E%E6%9D%A5%E8%87%AA%20ISP%2F%E4%BA%92%E8%81%94%E7%BD%91%E7%9A%84%E6%95%B0%E6%8D%AE%E5%8C%85%EF%BC%9F.png)
我正在使用 JNetPcap(libpcap/winpcap 的 Java 版本)构建带宽监视器。我需要识别家庭网络中的数据包,这样我就不会将它们计入使用的总带宽。我可以检查数据包的来源和目的地,但为此我需要确切知道家庭网络上可能存在哪种类型的数据包。
另一种方法是使用 libpcap 提供的内置过滤功能:http://jnetpcap.com/userguide/filter但我想这是一个针对 stackoverflow 的问题。
简而言之:您能否列出家庭网络上可能出现的不同数据包,以及通过检查数据包内容来检测它们的最快/最有效的方法?换句话说,您能帮我建立一个检测家庭网络上数据包的算法吗?
答案1
检测数据包是来自还是发往家庭网络的算法非常简单,因为大多数家庭网络在网络地址转换后面使用单个私有 IP 子网。
只需查看家用电脑的 NIC,然后使用网络掩码计算其 IP 子网。具有该子网 IP 地址的数据包来自“家庭网络”。