了解TCP / UDP客户端端口分配

时间:2020-10-05 01:17:00

标签: networking tcp udp

不知道该如何用其他短语来表达该问题,这就是为什么用这种方式来表达该问题。我有两个问题:

  1. 是否可以通过发送主机上的不同进程发送带有源端口80的两个TCP段
  2. 是否可以通过同一主机上的不同进程发送源端口为5723的两个UDP段?

我一开始不确定答案,但是我相信这两个答案都是“否”,这是不可能的。原因是在TCP情况下,无法唯一标识段,因为两个进程中的4元组(源端口,目标端口,源ip和目标ip)相同,这意味着无法区分各段。 类似地,对于UDP,IP数据报将携带源/目标IP,但是它们将相同。 UDP段将携带源端口/目标端口,但是同样,它们将相同。这意味着无法区分两种协议的段。

可能的解决方案是在两个单独的客户端上使用这些进程(这将意味着使用单独的IP,在两种情况下都解决问题),或者在同一主机上使用具有不同端口的进程。

请告知我这是否正确,或者我离开了,请告诉我原因。谢谢您的时间!

1 个答案:

答案 0 :(得分:0)

还有一个相关的问题:TCP: can two different sockets share a port? 这部分与那里有关:

给定的套接字连接由传输协议,客户端IP +端口和服务器IP +端口的组合唯一标识。多个客户端只有在其客户端IP +端口彼此不同的情况下,才能连接到同一服务器IP +端口。

因此,我认为您基本上是正确的,但是由SO_REUSEADDRSO_REUSEPORT引起的特殊情况可能允许多个不同的进程重用同一端口:TCP - possible for same client-side port to be used for different connections by different applications simlutaneously?

相关问题