从TCP套接字获取子域

时间:2017-09-29 14:03:27

标签: sockets tcp server dns subdomain

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

欢迎代码示例,在Go中会更好。

谢谢。

1 个答案:

答案 0 :(得分:1)

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

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

如果您使用的是某些标准协议,则应使用其内置元数据功能。

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