为什么两个HTTP和TCP地址可以使用相同的端口和两个IPC地址不能使用相同的命名管道?

时间:2011-04-12 14:15:39

标签: tcp named-pipes

我对端口的看法是:每当消息到达计算机时,它都会被复制到映射到指定端口的内存区域,并通知相关应用程序或服务已收到消息。

如果这是真的,那么如果两个消息到达同一端口上侦听的两个不同服务会发生什么? (http或tcp)

为什么两个命名管道地址不能使用相同的命名管道?

2 个答案:

答案 0 :(得分:1)

您的描述是处理传入消息的一种方式。

如果两个网站在同一端口上侦听,则会有一个 Web服务器侦听该端口,然后查看http主机标头以找到正确的网站以转发要求。

对于命名管道也是如此,RPC侦听器侦听TCP端口,然后发现它是命名管道消息,然后将消息转发到正确的命名管道。

答案 1 :(得分:1)

TCP通过{local ip,local port,remote ip,remote port}的元组识别“连接”。因此,由于每个传入连接都有不同的远程IP /端口对,因此本地计算机可以区分它们。

HTTP使用TCP进行传输。因此,HTTP端口 TCP端口。

如果您在打开连接时让机器获得新的IP地址,您会注意到它们在第一次发送任何数据时中断,因为远程主机无法识别(新)地址和发送RST响应。

管道只有它的名字才能区分它,所以只要有一个“连接”,无论它有多少作者。