从 TCP 套接字获取子域

Get subdomain from TCP socket

我正在编写一个服务器应用程序,它接受来自不同 programs/protocols 的 TCP 连接,但我需要将其他信息传递到我的服务器。我正在考虑通过正在使用的子域传递此信息。换句话说,当连接到我的服务器时,使用诸如 somedata.example.com 的地址,其中 somedata 将是我需要的额外信息,我的 DNS 将 *.example.com 指向我的服务器。是否可以获取客户端用来连接到我的服务器的 domain/subdomain?

欢迎提供代码示例,使用 Go 会更好。

谢谢。

TCP 连接在概念上只是每个方向的字节流。没有单一的方式可以传达带有子域的主机名。如果需要,大多数协议都有自己的通信方式。示例:

  • 一个 http 请求有 HOST header.
  • 启动 tls 连接时,握手通常包括所需的主机名。

如果您使用的是某些标准协议,则应使用其 built-in 元数据工具。

如果您要构建自己的自定义二进制协议(如果可以避免,我不会这样做),您可以考虑以某种格式添加一些 header 信息。也许 length|desired-service-name|other-data 的标准化 header 就足够了。如果客户端在新连接开始时发送类似的内容,服务器可以读取它,并适当地分派连接。