sockets - 我可以在 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 检测这些客户端,不是相同的设备吗?
解决方案
据我了解,您基本上是在要求检测 NAT 后面的不同设备,即共享相同外部 IP 地址的设备。没有完全可靠的方法可以做到这一点,但可以采用启发式方法。通常,这些基于 IP 标头中的 ID 字段和/或 TCP 时间戳选项,请参阅例如A Technique for Counting NATted Hosts或Time 有一些关于网络地址转换的信息告诉我们。也可以尝试使用被动操作系统指纹来检测是否使用了不同的操作系统(以及因此不同的真实或虚拟设备) - 请参阅被动指纹。
但是,这些启发式方法都不是完全可靠的,如果设备位于代理之后,它们也将不起作用,因为在这种情况下,服务器可见的 TCP/IP 连接来自单个设备 - 代理。
推荐阅读
- sql - 如何在基于 webpack-react-node 的网站中处理非常大的数据(100000 个 javascript 对象)?
- javascript - jQuery正则表达式删除不符合要求的数字
- html - 如何为多个类赋予相同的样式
- python - 如何查找包裹是否在包裹内?
- reactjs - 反应幻灯片问题
- visual-studio-code - 如何在 Vscode 中使用 Eslint 和 Prettier 更改缩进空间?
- c++ - 如何使用向量组合桶
- python - 带有异步等待变量的 pyzmq REQ/REP
- shader - 浮动均匀舍入是否存在 GLSL 问题
- javascript - 如果某些条件,隐藏数据表的按钮