【发布时间】:2016-03-15 17:31:41
【问题描述】:
是否可以在不使用代理服务器的情况下,根据请求的协议将 dns 路由到不同的服务器?
例如 wss://example.com 转到一台服务器,https://example.com 转到另一台服务器。
【问题讨论】:
标签: websocket dns network-protocols
是否可以在不使用代理服务器的情况下,根据请求的协议将 dns 路由到不同的服务器?
例如 wss://example.com 转到一台服务器,https://example.com 转到另一台服务器。
【问题讨论】:
标签: websocket dns network-protocols
原则上不,这是不可能的。虽然也有例外。
当您应用程序并请求网络地址时,例如example.com 应用程序将(通常)将请求传递给操作系统以打开与该地址的连接。
因为操作系统只能连接到一个 IP 地址,它做的第一件事就是发出一个 DNS 请求以找出它可以连接到的地址。根本没有机制告诉 DNS 请求正在请求什么协议。在操作系统发出 DNS 请求时,它很简单,“example.com 的地址是什么”,消息正文中没有空格来获取更多信息。
从这个意义上说,这是不可能的。
但是,有一些服务使用 SRV 记录来查找他们需要连接的服务器。
在这些情况下,应用程序会告诉操作系统“获取 _somefancyservice.example.com 的 SRV 记录”当它拥有该记录时,它会向操作系统发送另一个请求以打开它在其中找到的任何内容的连接SRV 记录。
因此,理论上,您可以编写一个应用程序,首先执行 SRV 记录查询,然后打开与返回的任何内容的连接。
我专门写了一篇关于 wss 的 detailed answer,你可能会觉得有趣。
【讨论】: