我想知道为什么 Windows Azure 服务总线通过 NAT、防火墙、代理工作。微软经常提到这个事实,但他们没有提到为什么会这样。
我认为每个参与者都会发起连接,好吧,但这还不够。他们是否“滥用”一些开放端口,80?
谢谢
最佳答案
如果不运行 Wireshark 就能够确定,我的猜测是因为客户端(位于 nat/防火墙后面)启动连接并不断调用服务器(始终打开)以获取更多信息。
让我们解释一下: 因为它在 Windows 套接字(以及其他套接字系统)中的工作方式略有不同:
客户端 (C) 在端口 80 上发起与服务器 (S) 的连接
服务器然后响应客户端:80 上的调用太多,让我们将连接移动到端口 90000 + rnd() = 90001 处的下一个空闲套接字
客户端套接字管理器对客户端上未使用的套接字进行计数,并说找到 C:90012 端口
客户端调用 S:90001 处的服务器,并在 C:90012 和 S:90001 之间启动正确的连接
这将被写入 nat/防火墙盒上的 nat 表中,并允许 C <-> S
关于.net - 为什么 Azure 服务总线不受防火墙和代理的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9483428/