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相同的端口,不同的进程的主要内容,如果未能解决你的问题,请参考以下文章