.net - 为什么 Azure 服务总线不受防火墙和代理的影响?

标签 .net azure azureservicebus

我想知道为什么 Windows Azure 服务总线通过 NAT、防火墙、代理工作。微软经常提到这个事实,但他们没有提到为什么会这样。

我认为每个参与者都会发起连接,好吧,但这还不够。他们是否“滥用”一些开放端口,80?

谢谢

最佳答案

如果不运行 Wireshark 就能够确定,我的猜测是因为客户端(位于 nat/防火墙后面)启动连接并不断调用服务器(始终打开)以获取更多信息。

让我们解释一下: 因为它在 Windows 套接字(以及其他套接字系统)中的工作方式略有不同:

  1. 客户端 (C) 在端口 80 上发起与服务器 (S) 的连接

  2. 服务器然后响应客户端:80 上的调用太多,让我们将连接移动到端口 90000 + rnd() = 90001 处的下一个空闲套接字

  3. 客户端套接字管理器对客户端上未使用的套接字进行计数,并说找到 C:90012 端口

  4. 客户端调用 S:90001 处的服务器,并在 C:90012 和 S:90001 之间启动正确的连接

  5. 这将被写入 nat/防火墙盒上的 nat 表中,并允许 C <-> S

关于.net - 为什么 Azure 服务总线不受防火墙和代理的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9483428/

相关文章:

c# - NHibernate ICriterion .NET 委托(delegate)不匹配

.net - 记录依赖树

.net - 捆绑 .NET dll 以在无 .NET 的机器上运行应用程序?

c# - Azure Durable Functions - HostBuilder 的等效项在哪里?

sql-server - Azure 移动服务超时

.net - MassTransit Azure ServiceBus 强制连接使用 HTTPS 而不是 AMQP

c# - 等待进程启动

json - 在 Azure Function 中动态设置计划

c# - Azure 服务总线中继安全

java - 使用Java SDK 0.9.7通过代理服务器连接到Azure服务总线