【问题标题】:TCP and UDP same ports, different processTCP和UDP相同的端口,不同的进程
【发布时间】:2012-11-12 21:03:09
【问题描述】:

我知道你不能有两个不同的进程使用同一个端口,但是如果一个使用 tcp 而另一个使用 udp 会发生什么?你能有两个不同的进程,每个进程都将一个套接字绑定到同一个端口但不同的协议吗?

【问题讨论】:

  • @Neil 的评论完全不正确。您可以拥有两个使用相同端点的不同套接字,只要它们使用不同的协议即可。 TCP 和 UDP 端口占用不同的空间。任何两个进程都可以打开同一个端口,只要一个是TCP,一个是UDP,绑定地址与此无关。
  • @user207421 我对此发表了评论?我想它一定已经被标记和删除了......令人讨厌的是,我仍然收到一条通知,要求回复不再存在的评论......
  • @Neil 我标记了它,有人删除了它。 SO的方式确实很奇怪。

标签: sockets tcp udp port


【解决方案1】:

5 元组(协议、源 ip、源端口、目标 ip、目标端口)必须是唯一的。这意味着您不仅可以让 TCP 和 UDP 使用相同的端口号,甚至可以使用相同的协议和本地端口号的传出连接,但目的地不同。

然而,在侦听时,套接字通常在其协议中必须是唯一的,即您可以/不应该打开另一个具有相同端口号的 TCP 套接字。

【讨论】:

    【解决方案2】:

    TCP 端口和 UDP 端口完全没有关系。

    【讨论】:

    • 直接回答这个问题,是的,您可能有两个不同的进程绑定到同一个套接字和同一个端口,但一个使用 UDP,一个使用 TCP。 UDP 和 TCP 端口命名空间是完全独立的,尽管它们的数值范围相同。
    【解决方案3】:

    是的。两个套接字可以绑定相同的端口号但不同的协议。

    这不是同一个端口,只是恰好有相同的编号。

    【讨论】:

    • 或者说它是同一个端口但不是同一个套接字更好?
    • @ankush981 我在那编辑过two sockets can bind the same port number
    • @ankush981 它根本不是一个套接字。这是一个港口。它只是应用程序内部的一个套接字。
    猜你喜欢
    • 2011-09-20
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    相关资源
    最近更新 更多