【问题标题】:Why is UDP socket identified by destination IP address and destination port?为什么 UDP 套接字由目标 IP 地址和目标端口标识?
【发布时间】:2015-03-28 07:01:57
【问题描述】:

根据 Kurose 等人的“计算机网络:一种自顶向下的方法”,UDP 套接字完全由目标 IP 和目标端口标识。

为什么我们在这里需要目标 IP?我认为 UDP 只需要目标端口进行解复用。

【问题讨论】:

  • 您没有为该声明提供足够的上下文。他们的意思是在哪个范围内。机器边界,互联网边界?
  • 他们错了。它由其自己的 IP 地址:端口标识,原因与您的previous question 完全相同。

标签: sockets networking udp


【解决方案1】:

机器可能有多个IP,不同的socket可能绑定到不同IP上的同一个端口。它需要使用目标 IP 来知道传入的数据报应该发送到这些套接字中的哪个。

事实上,为每个 IP 使用不同的套接字是很常见的。发送回复时,我们要确保源 IP 与请求的目标 IP 匹配,以便客户端可以知道响应来自它发送到的同一台服务器。通过为每个 IP 使用不同的套接字,并将回复发送到请求所在的同一套接字,可以保持这种一致性。一些套接字实现有一个扩展,允许在发送回复时设置源 IP,因此它们可以为所有 IP 使用单个套接字,但这不是标准套接字 API 的一部分。

【讨论】:

    【解决方案2】:

    我认为您将 UDP 与多播混淆了。

    多播是一种不需要目标 IP 地址的广播协议。它只需要一个端口号,因为它被传递到给定端口上的所有 IP。

    相比之下,UDP 只传送到一个 IP。这就是它需要目标 IP 地址的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多