TCP和UDP相同的端口,不同的进程

Posted

技术标签:

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

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

【问题讨论】:

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

以上是关于TCP和UDP相同的端口,不同的进程的主要内容,如果未能解决你的问题,请参考以下文章

TCP和UDP使用同一端口通信

为啥可以同时在 TCP 和 UDP 上使用相同的端口?

请问同一台机器上udp端口和tcp端口可以一样对吗,不会冲突?

http协议及httpd基础

UDP通讯协议

UNP——第二章,端口号,套接字对,TCP,UDP输出