0

TCPSocket(非HTTP)に基づくRubyサーバーがあります。

2 つの異なるドメインがあり、どちらも A レコードでサーバーの IP アドレス (同じもの) を指しています。そのため、これらのドメインの 1 つに接続しているクライアントがあります。クライアントが接続しているドメインを特定することはできますか?

これは他のプロトコルでも可能であることがわかりましたが、これが手動で追加されたヘッダーに基づいているのか、基本的な tcp/ip 接続から実際に抽出されたものなのかはわかりません。たとえば PHP では$_SERVER["HTTP_HOST"]、クライアントがどのドメインに接続していたかを示すものがあります。

4

1 に答える 1

1

TCP ソケット レベルでわかっているのは、接続の発信元と宛先の IP アドレス (およびポート) だけです。IP アドレスが DNS 経由でどのように解決されたかは、この層では知ることができません。HTTP は TCP の上で動作しますが、HTTP サーバーはクライアントからの HTTP ヘッダーを調べて、要求を行っているドメインを認識する必要があります。(これが、HTTP_HOST 値が入力される方法です。)

考えられる解決策の 1 つは、追加の IP アドレスを持つようにサーバーを構成することです。これは、追加の IP アドレスを NIC に割り当てるか、追加の NIC を追加することによって行うことができます。次に、各ドメインで異なる IP アドレスを使用します。それ以外の場合、これは不可能であり、この情報を伝えるために TCP の上にアプリケーション プロトコルを検討することをお勧めします。

于 2014-01-21T07:02:44.407 に答える