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

Networking 了解TCP/UDP客户端端口分配,networking,tcp,udp,Networking,Tcp,Udp,不知道该如何表达这个问题,所以它的措辞是这样的。我有两个问题: 源端口为80的两个TCP段是否可能由发送主机上的不同进程发送 源端口为5723的两个UDP段是否可能由同一主机上的不同进程发送 起初我不确定答案,但我相信这两个问题的答案都是否定的,这是不可能的。原因是在TCP的情况下,无法唯一标识段,因为4元组(源端口、目的端口、源ip和目的ip)在两个进程中是相同的,这意味着无法区分段。 类似地,对于UDP,IP数据报将携带源/目的IP,但是,它们将是相同的。UDP段将携带源端口/dest端口,

不知道该如何表达这个问题,所以它的措辞是这样的。我有两个问题:

  • 源端口为80的两个TCP段是否可能由发送主机上的不同进程发送
  • 源端口为5723的两个UDP段是否可能由同一主机上的不同进程发送
  • 起初我不确定答案,但我相信这两个问题的答案都是否定的,这是不可能的。原因是在TCP的情况下,无法唯一标识段,因为4元组(源端口、目的端口、源ip和目的ip)在两个进程中是相同的,这意味着无法区分段。 类似地,对于UDP,IP数据报将携带源/目的IP,但是,它们将是相同的。UDP段将携带源端口/dest端口,但同样,它们是相同的。这意味着无法区分两种协议的段

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


    请告诉我,如果这是正确的或如果我的方式,请告诉我为什么。谢谢你抽出时间

    还有一个相关的问题: 这篇文章与此相关:

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


    因此,我认为你基本上是对的,但是可能会有一些特殊情况是由
    So\u REUSEADDR
    So\u REUSEPORT
    引起的,这可能允许多个不同的进程重用同一端口:

    首先,TCP和UDP都没有客户端或服务器。客户机/服务器是一个应用程序概念。接下来,TCP和UDP的端口号实际上是连接到传输协议的进程的地址。端口号根据协议而定,因此TCP 12345不是TCP 12345。附加到任一协议的端口号的进程专门为该协议使用该端口号。