【发布时间】:2015-06-17 01:27:41
【问题描述】:
我在搜索时看到可以在同一台计算机上使用两个不同的程序,使用相同的端口和相同的网络接口通过网络进行通信,前提是一个使用 UDP,另一个使用 TCP。但是我没有得到很好的解释,它实际上是如何工作的以及为什么会这样?
由于 UDP 不会在对等方之间建立真正的连接,而只是将数据包发送到某个地址,因此多个程序是否也可以使用相同的 UDP 端口?我知道 TCP 不可能,因为它会在服务器和客户端之间创建同步连接,但是 UDP 呢?
如果可能,请详细解释,或链接有关该主题的好文章。
【问题讨论】:
-
这相当于问为什么可能同时有5个苹果和5个橙子。
-
好的,我的第二个问题怎么样?
-
@OliverCharlesworth,一点也不。这完全是关于区分“套接字”端点的原因。他的问题只是哪些因素是这种差异的一部分。是的,TCP 是“苹果”,而 UDP 是“橙子”,但很容易两者都只是套接字的“果实”。
-
@Xsmael “端口”是一个逻辑概念——它是一种接受或发起连接或数据的命名方式。碰巧的是,TCP 端口有端口号。此外,UDP 端口具有端口号。但是不存在“TCP 和 UDP 上的相同端口”之类的东西,因为 TCP 端口永远不会与 UDP 端口相同,因为一个接受/发起 TCP 连接,另一个接受/发起 UDP 数据。这使它们成为不同的端口。一台计算机甚至可以有两个不同的 UDP 端口 80,例如,一个绑定到 127.0.0.1,另一个绑定到 127.0.0.2——它们是不同的端口。
-
@Xsmael 它们通常是绑定到环回接口的两个不同 IP 地址。但是,如果您有两个套接字,一个绑定到 IP 127.0.0.1 的 UDP 端口 80,另一个绑定到 IP 127.0.0.2 的 UDP 端口 80,它们绑定到不同的端口。发往一个端口的传入流量不可能发往另一个端口。可以把它想象成对接端口 2 向北和对接端口 2 向南。它们的端口号相同,但端口不同。
标签: networking tcp udp port network-protocols