c - 是否有任何 C API 来检查源 IP 地址是否来自同一网络?
问题描述
我有一个用 C 编写的服务器。是否有任何 API 或方法来检查传入请求是否来自与服务器运行的同一网络?
谢谢
解决方案
我假设你在谈论 linux 平台。我不认为有一个API。
我看到 3 种方法来检查你需要什么:
1)您可以使用 ping 的 ttl 来查看客户端是否距离太多跳数,因此很可能不是您的网络成员。试试这个作为概念证明
ping -t 1 8.8.8.8
2)您也可以从arp表中获取客户端IP的mac地址并将其与您的网关的mac进行比较。如果它们匹配,则您的客户端可能不属于您的网络。
3)您还可以枚举您绑定到的所有 IP 地址并将它们的掩码应用于您的 IP 和客户端 IP 并检查匹配。如果它们匹配,则客户端肯定属于您的网络。
推荐阅读
- c - 为什么 DetourFindFunction() 找不到函数的地址?
- mongodb - 将 id 递归存储在嵌套数组中的聚合元素
- spring - 将 Spring Security 从 3 迁移到 4 时请求匹配器未解决
- c++ - c ++缓冲区溢出或损坏的变量
- dart - 所有屏幕都需要一个持久/相同的底部导航栏 - Flutter
- sql - 使用 GROUP BY 函数在 INNER JOINING 中执行 Sum 不工作 Postgresql
- java - JXBrowser 在 Ubuntu18.04 中启动失败
- bootstrap-4 - div底部的页脚不使用绝对位置
- powershell - 导出文件夹权限
- javascript - 给 eval 正确的上下文