TCP / UDP解复用如何工作?

时间:2013-04-11 22:51:31

标签: sockets networking tcp network-programming udp

我有以下声明。

“在TCP中,接收方主机使用所有源IP,源端口,目标IP和目标端口将数据报指向适当的套接字。在UDP中,接收方仅检查目标端口号以指示数据报。” p>

以上陈述是否属实?

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

如果没有,为什么?

2 个答案:

答案 0 :(得分:4)

  

“在TCP中,接收方主机使用所有源IP,源端口,目标IP和目标端口将数据报指向适当的套接字。在UDP中,接收方仅检查目标端口号以指示数据报。” p>      

以上陈述是否属实?

  

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

是的,在某些情况下。

  

虽然在UDP中只有一个套接字可以在一个进程中的端口上使用?

不,见下文。

  

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

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

答案 1 :(得分:1)

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

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