【问题标题】:Who is the server and who is the client in UDP?谁是 UDP 中的服务器,谁是客户端?
【发布时间】:2012-03-31 00:17:05
【问题描述】:

在 TCP 中,您可以区分服务器和客户端,因为服务器是绑定和接受(TCP 侦听器)的那些,而客户端只是连接到这些服务器。两者都可以发送和接收。

但是,在 UDP 中,您如何区分服务器和客户端? UDP 中没有区分服务器或客户端的特殊行为,对吧?似乎我们只能将参与 UDP 连接的机器分类为发送者和接收者。服务器可以是其中一个,也可以是两者。它可以从多个客户端接收数据,也可以向多个客户端(例如多播服务器)发送数据。

如果我错了,请纠正我,如果我将问题发布到错误的论坛,请指出我正确的论坛。

谢谢。

【问题讨论】:

    标签: networking udp


    【解决方案1】:

    没有使用 UDP 的服务器或客户端。只有同行。

    【讨论】:

    • UDP 和 TCP 都不是这样。
    • @RussellBorogove 我没有说 TCP 是这样,而 UDP是这样,你的评论是 100% 不正确的。使 TCP 成为客户端/服务器协议的东西是处于 LISTENING 状态的接受连接的套接字。该结构在 UDP 中不存在。
    • DNS、TFTP 和许多游戏都有基于 UDP 的协议,这些协议显然是客户端-服务器。如果你的答案是准确的,那是无关紧要的。如果主机在绑定到已知端口的 UDP 套接字上调用 recv(),则它充当服务器。
    • @RussellBorogove 这使得这些应用程序成为客户端-服务器。它不会生成 UDP 客户端-服务器。我无法确定你最后一句话的开头或结尾。如果我的回答是准确的,那么它在回答问题时一定是相关的。
    • 回复。我的最后一句话。尝试在端口 53 上接收 UDP 数据包的机器是 DNS 服务器。没有形成持久连接这一事实并不会使存在明确的客户端(调用 send() 的机器)和服务器(调用 recv() 的机器)这一事实无效。不过,在这一点上,我认为你我之间存在不可调和的语义分歧。
    【解决方案2】:

    将 UDP 视为发送方 -> 接收方通信而不是客户端 服务器。

    由于 UDP 是一种无连接协议,接收方的响应可能会发生也可能不会发生。这就是为什么认为 TCP 比 UDP 更可靠但速度更慢的原因。

    http://en.wikipedia.org/wiki/Connectionless_protocol

    http://www.diffen.com/difference/TCP_vs_UDP

    【讨论】:

      【解决方案3】:

      不是网络专家,但这是我的理解。

      TCP 和 UDP 是网络协议,即处理如何在节点之间传输数据。如果您要查看 TCP 和 UDP 的数据包结构,您会发现它们都有一个源节点部分和一个目标节点部分。此外,即使在 UDP 中,物理机仍将作为信息源存在。将其称为服务器还是仅称为客户端是系统架构应决定的决定。

      所以,我认为您指的是高于数据传输的级别,即在我的理解中网络应用程序的架构。这就是我们谈论客户端服务器应用程序的时候,它可能是一种 P2P 架构,其中可以有多个物理机器提供数据。因此,术语取决于您所指的上下文。

      要回答您的问题,是的,服务器和客户端可以同时存在于 TCP 和 UDP 中。让建筑师决定!

      希望对你有帮助!

      【讨论】:

      • 由社区或这个问题的作者来决定:)
      猜你喜欢
      • 2023-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      • 1970-01-01
      • 2021-01-07
      • 2020-06-22
      相关资源
      最近更新 更多