TCP - 同一个客户端端口可能同时被不同的应用程序用于不同的连接吗?

时间:2017-01-22 08:21:23

标签: sockets tcp ports

在TCP中是否可以在不同的进程中共享相同的可执行映像(例如,没有fork())在Windows,Linux或OSX上使用相同的客户端端口?这与我相信使用SO_REUSEADDR设置的套接字选项SO_REUSEPORTsetsockopt()特别相关。

据我所知,我相信相同的过程/图像可能会这样做,但我还没有找到有关多个过程/图像的信息。我认为这在理论上是可行的,因为每个套接字都是由5值元组[IP_PROTO,src_ip:src_port,dst_ip:dst_port]定义的。所以我假设,只要共享客户端端口的多个TCP连接不是相同的dst_ip:dst_port,这在理论上是可行的。

1 个答案:

答案 0 :(得分:0)

UDP不是面向连接的,并且在客户端和服务器之间没有真正的区别,因此对于UDP这个问题没有多大意义。

对于TCP,您可以使用SO_REUSEADDR将多个客户端绑定到同一个端口,但为什么要这样做?通常,在建立连接之前让客户端保持未绑定状态,让内核为您选择一个未使用的端口。