3

我有以下声明。

“在 TCP 中,接收方主机使用所有源 IP、源端口、目标 IP 和目标端口将数据报引导到适当的套接字。而在 UDP 中,接收方仅检查目标端口号来引导数据报。”

上述说法是否属实?

如果是,是否意味着在 TCP 中,一个进程中的多个套接字可以使用同一端口,而在 UDP 中,一个进程中的一个端口只能使用一个套接字?不同进程中的套接字呢?多个进程可以在 TCP/UDP 中使用同一个端口吗?(编程语言:C/C++/Java)

如果不是,为什么?

4

2 回答 2

4

“在 TCP 中,接收方主机使用所有源 IP、源端口、目标 IP 和目标端口将数据报引导到适当的套接字。而在 UDP 中,接收方仅检查目标端口号来引导数据报。”

上述说法是否属实?

是的。

如果是,是否意味着在 TCP 中同一个端口可以在一个进程中用于多个套接字,

是的,在某些情况下。

而在UDP中,一个进程中的一个端口只能使用一个套接字?

不,见下文。

不同进程中的套接字呢?多个进程可以在 TCP/UDP 中使用同一个端口吗?(编程语言:C/C++/Java)

在某些情况下,是的。UDP 端口必须被所有想要共享它的进程指定为可重用。TCP 端口只能被绑定到不同接口的套接字重用:没有共享。

于 2013-04-11T22:57:44.697 回答
1

这意味着,在 TCP 中,一个唯一的通信“通道”可以描述为四元组:(src-ip, src-port, dst-ip, dst-port).

在 UDP 中,所有发往某个端口的数据包都被传递到侦听该端口的唯一 UDP 套接字,而不管该数据包的源地址和端口。我喜欢把它想象成一个漏斗。

于 2013-04-11T23:02:53.793 回答