Ruby TCPSocket Server - 我可以告诉客户端连接的主机吗?

时间:2014-01-21 06:51:45

标签: ruby sockets tcpsocket

我有一个基于TCPSocket(非HTTP)的ruby服务器。

我有2个不同的域,都指向A-Record到我的服务器IP地址(同一个)。因此,有客户端连接到其中一个域。 是否可以告诉客户端连接到哪个域?

我看到这在其他协议中是可行的,但我不确定这是基于手动添加的头文件还是真正从基本的tcp / ip连接中提取的。例如。在PHP中有$_SERVER["HTTP_HOST"],它显示了客户端连接到哪个域。

1 个答案:

答案 0 :(得分:1)

在TCP套接字级别,唯一已知的是连接的源和目标IP地址(和端口)。如何通过DNS解析IP地址无法在此层知道。即使HTTP在TCP之上工作,HTTP服务器也必须查看来自客户端的HTTP标头,以了解它们向哪个域发出请求。 (这就是HTTP_HOST值的填充方式。)

一种可能的解决方案是将服务器配置为具有其他IP地址。这可以通过为NIC分配额外的IP地址或添加其他NIC来实现。然后让每个域使用不同的IP地址。否则,这是不可能的,您可能需要在TCP之上考虑您的应用程序协议以传达此信息。