我想知道为什么 Windows Azure 服务总线通过 NAT、防火墙、代理工作。微软经常提到这个事实,但他们没有提到为什么会这样。
我认为每个参与者都会发起连接,好的,但这还不够。他们是否“滥用”了一些开放的端口,80?
谢谢
我想知道为什么 Windows Azure 服务总线通过 NAT、防火墙、代理工作。微软经常提到这个事实,但他们没有提到为什么会这样。
我认为每个参与者都会发起连接,好的,但这还不够。他们是否“滥用”了一些开放的端口,80?
谢谢
如果没有运行 Wireshark 能够确定,我猜是因为客户端(在 nat/防火墙后面)启动连接并保持调用服务器(始终打开)以获取更多信息。
让我们进一步解释一下:因为 tis 在 Windows 套接字(以及其他套接字系统)中的工作方式略有不同:
客户端 (C) 在端口 80 上启动与服务器 (S) 的连接
服务器然后响应客户端:80 上的调用太多,让我们将连接移动到端口 90000 + rnd() = 90001 的下一个空闲套接字
客户端套接字管理器计算客户端上未使用的套接字,并说找到 C:90012 端口
客户端在 S:90001 调用服务器,并在 C:90012 和 S:90001 之间启动正确的连接
这将被写入 nat/防火墙盒上的 nat 表中,并允许 C <-> S 之间的通信
如果可能,服务总线将尝试使用 9350 - 9353 端口进行 TCP 连接,以获得更好的性能。如果失败,它将尝试使用 80 和 443。由于在大多数情况下防火墙不会阻止 80 和 443,因此您的本地服务可以通过 80/443 连接到 sb://xxxx/,而无需对防火墙进行任何更改。然后如果客户端调用你的服务,它会首先点击 sb://xxxx/ ,然后服务总线会通过 80/443 将请求转发到你的机器,然后你将回复发送回服务总线,它会转发回复回到客户端。
那是服务远程模式。如果您使用事件模式,则类似的步骤。
仅仅是因为每个连接都是出站的,并且服务总线充当“转发器”。
在许多配置下,它确实只使用 80 (http) 和 443 (https),如下所示。但是,它看起来有时也使用 9350、9351、9352 和 9353 - 所以在某些情况下,您可能需要打开它们。