对于在查询时只返回一个小数字的服务,例如30或10,但在任何情况下都必须处理多达5个左右的请求,TCP或UDP是否是更好的协议?我倾向于UDP,但我想要一些专家意见。我也在寻找相对较快的回复时间。你能告诉我每个服务对这样的服务有什么好处吗?感谢。
答案 0 :(得分:3)
TCP是一种可靠的基于连接的协议。因此,您可以保证发送/接收数据 - 如果未经验证在另一端接收数据包,则会自动重新发送数据包。但是,建立连接的三次握手有开销。
TCP用于HTTP之类的协议,其中存在一次性信息交换(HTTP请求和回复)。
UDP是一种不可靠的无连接协议。因此,您可以简单地发送/接收数据包,但您没有(自动,OS堆栈提供)方式来验证另一端是否收到了您的消息。如果你在意,你必须自己实施某种确认。
UDP通常用于更连续的“流式”协议。例如,许多在线多人游戏使用UDP与主机交换游戏信息。他们是在不断的,定期的基础上做到这一点的。因此,如果数据包丢失,这并不是什么大问题,因为另一个更新即将到来。如果您不得不等待重新传输(现在陈旧的)更新,那么游戏玩法会更糟糕。
DNS也是通过UDP实现的。
最终选择权归你所有。在大多数情况下,我可能默认使用TCP,并且只在我描述的场景中使用UDP。