我正在做一个小项目来制作一个客户端服务器程序来实现无连接,我想在连接到同一个 Wi-Fi 热点的 2 个设备之间传输信息,所以它们显示相同的 IPV4 地址。如何区分这两个设备,或者我可以使用 IPV6 地址来制作客户端服务器程序?
如何知道连接到 IPV4 中同一个 Wi-Fi 热点的 2 个设备之间的区别?
连接到同一个 Wi-Fi 热点,因此它们显示相同的 IPV4 地址。
显然,它们对您的服务器进行了 NAT。如果这是在同一个企业网络上,您应该删除 NAT。
如何区分这两种设备
在网络层面,你不能。在应用程序级别上,您可能会使用某种指纹或身份验证,但这不是主题。可能Stack Overflow是正确的地方。
或者我可以使用 IPV6 地址来制作客户端服务器程序吗?
可能。客户端可能使用各种 v6 IP,因此您不能 100% 确定。
...在连接到同一 Wi-Fi 热点的 2 台设备之间,因此它们显示相同的 IPV4 地址。
这不是 NAT 的真正工作方式:
Wi-Fi 网络(家庭网络也是如此)形成一个本地网络。网络中的所有设备都有自己的IP 地址。但是,这些 IP 地址在 Internet 中无效。
为了与 Internet 中的计算机建立连接(例如 TCP 连接),设备实际上会建立与 NAT 路由器或代理服务器的连接,然后它会与 Internet 中的计算机建立连接。
所以实际上全局 IP 地址并没有在设备之间共享,但真正使用全局 IP 地址的唯一设备是 NAT 路由器或代理服务器。实际上,网络中的任何设备都没有真正连接到互联网,而只有 NAT 路由器或代理服务器。
如何区分这两种设备...
如果两台设备在同一个Wi-Fi 网络中,则没有任何问题:
两台设备都有自己的 IP 地址。
然而,有防火墙的 Wi-Fi 网络只允许设备与 NAT 路由器通信,但不能相互通信。在这种情况下,你没有机会。
如果只有一台设备在 Wi-Fi 网络中(另一台在另一个 Wi-Fi 网络中),您也将没有机会:
正如我已经写过的,唯一真正连接到互联网的设备是 NAT 路由器。默认情况下,此路由器不会将 UDP 数据包转发到设备。
... IPV6 ...
在大多数情况下,所有设备都有一个在整个 Internet 中有效的 IPv6 地址。因此,Wi-Fi 网络中的设备可以直接与 Internet 中的计算机进行通信。
然而:
- 大多数用于 IPv6 的 Wi-Fi 路由器都有一个“状态防火墙”,它将阻止默认情况下在 IPv4 Wi-Fi 网络中被阻止的数据包。
- 肯定有网络使用代理服务器或 NAT(“NAT66”)与 IPv6 一起工作。