【发布时间】:2020-03-22 15:54:46
【问题描述】:
我有一个用 C 编写的服务器。是否有任何 API 或方法来检查传入请求是否来自与服务器运行所在的网络相同的网络?
谢谢
【问题讨论】:
标签: c sockets network-programming
我有一个用 C 编写的服务器。是否有任何 API 或方法来检查传入请求是否来自与服务器运行所在的网络相同的网络?
谢谢
【问题讨论】:
标签: c sockets network-programming
我假设您在谈论 linux 平台。 我认为没有相应的 API。
我看到了 3 种方法来检查您需要什么:
1) 您可以使用 ttl of ping 来查看客户端是否距离太多跃点,因此很可能不是您网络的成员。 试试这个作为概念证明
ping -t 1 8.8.8.8
2) 您还可以从 arp 表中获取客户端 IP 的 mac 地址,并将其与网关的 mac 进行比较。如果它们匹配,则有可能您的客户端不属于您的网络。
3) 您还可以枚举您绑定到的所有 ip 地址,并将它们的掩码应用于您的 ip 和客户端 ip 并检查匹配。如果它们匹配,则客户端肯定属于您的网络。
【讨论】: