0

对于在查询时只返回少量数字(例如 30 或 10)但在任何情况下都必须处理多达 5 个左右的请求的服务,TCP 或 UDP 会是更好的协议吗?我倾向于 UDP,但我想要一些专家意见。我也在寻找相对快速的回复时间。你能告诉我每个人的优势对于这样的服务有什么好处吗?谢谢。

4

1 回答 1

3

TCP 是一种可靠的基于连接的协议。因此,您可以保证发送/接收数据 - 如果未验证在另一端接收到数据包,则会自动重新发送数据包。但是,建立连接时会产生三次握手的开销。

TCP 用于诸如 HTTP 之类的协议,其中存在一次性信息交换(HTTP 请求和回复)。


UDP 是一种不可靠的无连接协议。所以你可以简单地发送/接收一个数据包,但你没有(自动的,操作系统堆栈提供的)方法来验证另一端是否收到了你的消息。如果你在乎,你必须自己实现某种 ACK。

UDP 通常用于更连续的“流”类型协议。例如,许多在线多人游戏使用 UDP 与主机交换游戏信息。他们持续、定期地这样做。因此,如果一个数据包丢失,这并不是什么大问题,因为另一个更新指日可待。如果您必须等待重新传输该(现在已过时的)更新,那对游戏玩法来说会更糟。

DNS 也是通过 UDP 实现的。


最终选择是你的。在大多数情况下,我可能会默认使用 TCP,并且只在我描述的场景中使用 UDP。

于 2013-03-09T23:04:40.670 回答