【发布时间】:2014-11-14 13:22:25
【问题描述】:
到目前为止,我的应用程序一直使用 TCP 连接,但过了一段时间我决定继续并开始通过 UDP 数据包发送一些信息。我正在开发的应用程序是一个业余爱好者游戏项目,我现在通过 UDP 数据包而不是 TCP 数据包发送运动。
我面临的问题是将 UDP 数据包有效地链接到一个实体,在本例中是一个用户。
这是我目前的设置:
- Account 类有一个 UUID 变量
- 当 TCP 客户端成功连接后,TCP 服务器会告诉客户端它的 UUID 是什么。
- UUID 然后作为 UDP 数据包的“标头”发送
- 当服务器收到UDP报文时,服务器会在头中找到UUID对应的账号,然后进行相应的逻辑处理。
问题是,UUID 是一个相当大的字符串,这对带宽不是很友好,我可以轻松地使用整数而不是引用 List<Account> 上的帐户索引的字符串,但问题在于这就是安全性——这意味着任何人都可以发送带有某人帐户索引(分别为 1、2、3、4、5、6 等)的 UDP 数据包,并使用此“欺骗”或假数据包对其帐户执行操作。
UUID 没有遇到这个问题,虽然同样的安全问题仍然存在,但某人知道其他用户 UUID 的可能性极小。
在不涉及大的安全风险和不破坏带宽的情况下,将数据报包绑定到帐户的最佳方法是什么。
【问题讨论】: