2

我正在做一个互联网游戏项目,该项目涉及在两台普通家用 PC 之间通过互联网发送小规模数据(1K 到 50K 之间)。我关心的关键是延迟。

我知道 TCP,UDP 是流行的。TCP 可靠但比 UDP 慢,而 UDP 不安全,我必须实现自己的故障处理代码。

我只是想知道我可以遵循任何其他协议在两台普通家用 PC 之间发送/接收小数据吗?

就普通家用电脑而言,我假设它们具有普通宽带(512kbps - 2Mkbps)和世界各地(可能在美国和日本之间)。

另一个大问题是:

如果我从一台电脑(在英国)ping 到另一台电脑(在日本),我会得到 300 毫秒的延迟。是否可以找到一种协议或使用 TCP/UDP 发送/接收低于 300 毫秒延迟的 1KB 数据?或 ping 应该是了解两个端点之间最低延迟的最快方法?

谢谢

4

3 回答 3

3

TCP 报头是 32 字节,而 UDP 报头只有 16 字节。此外,由于 UDP 缺乏流量控制,因此永远不会出现客户端要求服务器减速的情况。UDP 几乎肯定会是最快的。ICMP 数据包具有 20 字节的标头,并且可能会比 UDP 稍慢。

我的官方建议是使用 UDP,在接收端进行一些“丢包”检测。这就是所有 Quake 游戏和所有 Half-Life/Source 游戏的运作方式。

关于英国和日本之间的 ping 主题,对于所使用的任何协议,延迟都将几乎相同。其中大部分是由光速和边缘路由器的拥塞决定的。

于 2010-02-18T18:01:06.760 回答
1

您永远不会因为延迟而击败 ping 命令,因为它们使用 ICMP,这是目前最轻量级的选项。

通常,对于游戏情况,使用 UDP,主要是因为涉及的速度。有了良好的宽带连接,TCP 应该没问题,并且会让生活更轻松,因为您可以保证交付,否则 UDP 会缺少这些保证。

话虽如此,对于游戏而言,1K,尤其是 50K,是非常庞大的数据量,尤其是在需要连续发送的情况下。如果您要发送如此多的数据,请预计并计划延迟 - 这通常意味着预测线路上会发生什么,并在数据通过时进行补偿,而不是等待数据到达。

于 2010-02-18T17:59:38.803 回答
0

如果您想通过 Internet 进行通信,则必须使用 IP 系列协议。这并不妨碍您在 IP之上创建自己的协议,但在延迟方面当然不会更快。您所能做的就是实施压缩,以最大限度地减少通过网络发送的有效负载。

于 2010-02-18T18:02:52.950 回答