[Unity Mirror] TCP 和 UDP

81 篇文章 31 订阅

RuntimeMapMaker3D-Pro在这里插入图片描述


  TCP 和 UDP 都是用于通过 Internet 发送信息的协议 - 事实上,它们是世界上最常用的两种 Internet 协议:TCP 是在 1970 年代开发的,而 UDP 是在 1980 年代引入的。但是,重要的是要注意 TCP 和 UDP 通信之间的两个主要区别:

  • TCP 具有内置的可靠性,可确保数据正确地从 A 传输到 B,并以更高的延迟进行权衡。
  • UDP 的数据传输延迟较低,但原始协议本质上是不可靠的,并且不能保证数据会正确地从 A 发送到 B。

TCP(传输控制协议)

  如前所述,TCP 是 Internet 上最流行的协议。 TCP 用于 HTTP、SSH、FTP 和更多应用程序。 TCP 核心特性使程序员可以轻松地使用该协议,因为程序员将能够确保数据正确地从 A 发送到 B。然而,虽然这听起来不错,但当连接出现故障或遇到严重动荡时,它可能会引入更高的延迟。

  在游戏环境中,TCP 更适合节奏较慢的游戏,延迟并不重要,但游戏数据很重要。

主要特点包括
  • 可靠:应用程序不必担心丢失数据包。如果数据包丢失,TCP 将重新发送它。所有数据要么成功传输,要么出现错误并关闭连接。

  • 顺序:TCP 保证每条消息都按照发送的顺序到达。如果您先发送“a”然后发送“b”,那么您也会在另一侧收到“a”然后“b”。

  • 面向连接:TCP 有连接的概念。连接将保持打开状态,直到客户端或服务器决定关闭它。当连接结束时,客户端和服务器都会收到通知。

  • 拥塞控制:如果服务器不堪重负,TCP 将限制数据以避免拥塞崩溃。

使用 TCP 协议进行传输
  • Telepathy
  • WebSockets

UDP(用户数据报协议)

  UDP 用于实时应用程序,例如快节奏的动作游戏或 IP 语音 (VoIP),在这些应用程序中,低延迟比可靠性更重要。应用示例包括 Skype、Discord、Zoom 等。

  在游戏环境中,可以利用 UDP 的原始功能来更好地控制数据的发送方式,从而更快地发送非关键数据。这反过来使 UDP 更适合快节奏的游戏,其中服务器和客户端之间的延迟很重要,如果丢失了一些数据包,游戏可以恢复。

主要特点包括
  • 低延迟:UDP 更快,因为它不需要等待远程端确认数据包。相反,它可以一个接一个地不断发送新的数据包。它也被称为“散点图”协议,因为它只会向客户端发送数据,而不能保证他们会真正获得数据。

  • 通道支持:通道允许不同的交付类型。根据实现的不同,一个通道可用于需要到达目的地的关键数据,而另一个通道可用于“发送并忘记”数据传输,没有任何可靠性。

  • 不同的数据包类型:根据 UDP 协议之上的实现,一些传输提供不同的数据包发送方法,例如 Reliable Ordered、Reliable Unordered、Unreliable 等等,具体取决于实现。可靠的 UDP 传输依赖于实现,但它通常模仿 TCP 的可靠性系统。

使用 UDP 协议传输
  • Ignorance
  • KCP
  • LiteNetLib

选择权在你手中

  Mirror 是独立于传输的,它们可以简单地添加到您的 NetworkManager GameObject 中。 Mirror 默认带有 KCP 传输(除 WebGL 之外的所有平台)和 Websocket (WebGL) 传输。有关传输的更多信息,请参阅传输页面。

选择最适合您和您的游戏的传输工具。我们建议您在做出最终决定之前分析您的游戏网络并收集真实世界的数字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值