我有以下声明。
“在 TCP 中,接收方主机使用所有源 IP、源端口、目标 IP 和目标端口将数据报引导到适当的套接字。而在 UDP 中,接收方仅检查目标端口号来引导数据报。”
上述说法是否属实?
如果是,是否意味着在 TCP 中,一个进程中的多个套接字可以使用同一端口,而在 UDP 中,一个进程中的一个端口只能使用一个套接字?不同进程中的套接字呢?多个进程可以在 TCP/UDP 中使用同一个端口吗?(编程语言:C/C++/Java)
如果不是,为什么?
我有以下声明。
“在 TCP 中,接收方主机使用所有源 IP、源端口、目标 IP 和目标端口将数据报引导到适当的套接字。而在 UDP 中,接收方仅检查目标端口号来引导数据报。”
上述说法是否属实?
如果是,是否意味着在 TCP 中,一个进程中的多个套接字可以使用同一端口,而在 UDP 中,一个进程中的一个端口只能使用一个套接字?不同进程中的套接字呢?多个进程可以在 TCP/UDP 中使用同一个端口吗?(编程语言:C/C++/Java)
如果不是,为什么?
“在 TCP 中,接收方主机使用所有源 IP、源端口、目标 IP 和目标端口将数据报引导到适当的套接字。而在 UDP 中,接收方仅检查目标端口号来引导数据报。”
上述说法是否属实?
是的。
如果是,是否意味着在 TCP 中同一个端口可以在一个进程中用于多个套接字,
是的,在某些情况下。
而在UDP中,一个进程中的一个端口只能使用一个套接字?
不,见下文。
不同进程中的套接字呢?多个进程可以在 TCP/UDP 中使用同一个端口吗?(编程语言:C/C++/Java)
在某些情况下,是的。UDP 端口必须被所有想要共享它的进程指定为可重用。TCP 端口只能被绑定到不同接口的套接字重用:没有共享。
这意味着,在 TCP 中,一个唯一的通信“通道”可以描述为四元组:(src-ip, src-port, dst-ip, dst-port)
.
在 UDP 中,所有发往某个端口的数据包都被传递到侦听该端口的唯一 UDP 套接字,而不管该数据包的源地址和端口。我喜欢把它想象成一个漏斗。