首页 > 解决方案 > 我可以在 TcpConnections 中检测到来自同一 IP 的不同客户端吗?

问题描述

我们可以在 TCPConnection 上检测到来自同一 IP 的不同客户端(设备)吗?

例子 :

我有一个名为 s1 的 TCP 服务器,我有 2 台名为 p1,p2 的 PC,当我使用 p1 和 p2(Pc1 和 Pc2)连接到 s1(我的 TCP 服务器)时,我的 PC IP 相同(例如 1.2.3.4)可以 s1(我的 TCP 服务器)用相同的 IP 检测这些客户端,不是相同的设备吗?

标签: socketsnetworkingtcptcpclienttcpserver

解决方案


据我了解,您基本上是在要求检测 NAT 后面的不同设备,即共享相同外部 IP 地址的设备。没有完全可靠的方法可以做到这一点,但可以采用启发式方法。通常,这些基于 IP 标头中的 ID 字段和/或 TCP 时间戳选项,请参阅例如A Technique for Counting NATted HostsTime 有一些关于网络地址转换的信息告诉我们。也可以尝试使用被动操作系统指纹来检测是否使用了不同的操作系统(以及因此不同的真实或虚拟设备) - 请参阅被动指纹

但是,这些启发式方法都不是完全可靠的,如果设备位于代理之后,它们也将不起作用,因为在这种情况下,服务器可见的 TCP/IP 连接来自单个设备 - 代理。


推荐阅读