AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1073855
Accepted
diaper
diaper
Asked: 2021-08-08 17:50:29 +0800 CST2021-08-08 17:50:29 +0800 CST 2021-08-08 17:50:29 +0800 CST

网络游戏如何通过互联网发送 UDP 数据包?

  • 772

使用 UDP 的在线多人游戏如何通过 Internet 在网络之间传递数据包?据我了解,客户端必须在其路由器上启用端口转发才能使数据包到达他们的计算机。这是大型网络游戏(魔兽世界、暗黑破坏神等)要求玩家做的吗?

例如,我最近创建了一个处理 udp 流量的服务器。它只是回显发件人发送的任何内容。我将它部署到互联网上的服务器。启用端口转发后,我只能将回声返回给发送者,但如果同一本地网络上有两个发送者,这将不起作用。

udp gameserver
  • 1 1 个回答
  • 596 Views

1 个回答

  • Voted
  1. Best Answer
    NiKiZe
    2021-08-08T21:10:12+08:002021-08-08T21:10:12+08:00

    简短回答:NAT 连接跟踪

    要记住的一件事是,IPv4 互联网上的绝大多数路由器都是 NAT 路由器。

    大多数 NAT 实现都进行智能跟踪,当您将 UDP 从内部客户端发送到某个地方时,您将拥有一个目标端口和一个源端口。如果流量在端口反转的情况下进入,那么该流量将被路由回您的客户端,并在大多数防火墙中被允许。

    具有跟踪功能的 NAT/防火墙将这些数据包检测为相关并将它们转发回去。

    基于UDPserver端口注释的示例5000

    • server:5000客户端为, 源发送一个数据包client:5001
    • 第一个 NAT 路由器将看到一个带有源 ip 和端口client:5001以及目标的数据包server:5000。
    • 路由器按它的方式发送它,并且将有NATip:NATport
    • 服务器接收到这个并创建一个响应NATip:NATport,其来源为server:5000
    • NAT 接收到这个并有 source server:5000destination NATip:NATport,它与发出的数据包匹配(但源和目标颠倒了)
    • NAT 将其发送到client:5001仍然带有源server:5000

    源 ip+port 和目标 ip+port 创建一个可以跟踪的组合。(有更多细节,但这是基础)

    更多阅读但我应该挖掘更好的文档,而不仅仅是参考我所见经历的轶事证据。

    • 3

相关问题

  • 在 Docker 中运行 nuttcp 时出现分段错误

  • Windows Server 2008 上的默认 TCP 窗口大小是多少?

  • OpenVPN 和 UDP 广播

  • 用于网络监控的路由/代理 SNMP 陷阱(或 Netflow、通用 UDP 等)的解决方案?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve