首页 > 解决方案 > 是否有任何 C API 来检查源 IP 地址是否来自同一网络?

问题描述

我有一个用 C 编写的服务器。是否有任何 API 或方法来检查传入请求是否来自与服务器运行的同一网络?

谢谢

标签: csocketsnetwork-programming

解决方案


我假设你在谈论 linux 平台。我不认为有一个API。

我看到 3 种方法来检查你需要什么:

1)您可以使用 ping 的 ttl 来查看客户端是否距离太多跳数,因此很可能不是您的网络成员。试试这个作为概念证明

ping -t 1 8.8.8.8

2)您也可以从arp表中获取客户端IP的mac地址并将其与您的网关的mac进行比较。如果它们匹配,则您的客户端可能不属于您的网络。

3)您还可以枚举您绑定到的所有 IP 地址并将它们的掩码应用于您的 IP 和客户端 IP 并检查匹配。如果它们匹配,则客户端肯定属于您的网络。


推荐阅读