我有以下声明。
“在TCP中,接收方主机使用所有源IP,源端口,目标IP和目标端口将数据报指向适当的套接字。在UDP中,接收方仅检查目标端口号以指示数据报。” p>
以上陈述是否属实?
如果是,是否意味着在TCP中,同一个端口可以在一个进程中用于多个套接字,而在UDP中,只有一个套接字可以在一个进程中的端口上使用?不同进程中的套接字怎么样?多个进程可以在TCP / UDP中使用相同的端口吗? (用编程语言编写:C / C ++ / Java)
如果没有,为什么?
答案 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套接字,而不管所述数据包的源地址和端口如何。我喜欢把它想象成一个漏斗。