2012-04-23 14 views
0

私は2つのIPアドレスを持つクライアントシステムを持っています:10.172.12.13 & 58.53.12.15。クライアント側の影響力tcpはどのように接続しますか?

Serverは、二つするIPアドレスに構成されている:今10.172.12.18 & 58.53.12.17

を、クライアント側では、私が最初にローカルアドレス&ポートにバインドを行います(ポートは0である)、次にやりますTCP非ブロック接続。

奇妙な振る舞いは、バインドするローカルアドレスとして10.172.12.13を指定し、サーバーの58.53.12.17に接続すると、「Host Unreachable」としてエラーを返す接続に失敗します。

クライアントでローカルアドレスを指定した場合、58.53.12.15 &とし、サーバ側で58.53.12.17との接続を試してみます。

最も興味深いのは、上記の実行後、私が再び58.53.12.15にバインドして接続するローカルアドレスとして10.172.12.13を与えると、今すぐ正常に接続するということです。しかし、これはほんの数分だけ起こります。しばらくすると、接続はローカルアドレスとして10.172.12.13で再び失敗します。

何か起きていることを説明するように誰かに依頼してください。バインドがTCP接続に与える影響

+0

あなたのサーバー側は10.172.12.13に到達する方法を知っていますか? 10.0.0.0/8はプライベートアドレスです。公衆インターネットは、どのようにそれらにルーティングするのか分からない。 –

+0

「ip route show」、「ip route show cache」、「58.53.12.15から58.53.12.15まで」、「ip route get 58.53.12.15 from 10.172.12.13」、「ip route flush cache」が啓発。 – ninjalj

答えて

2

通常、特定のインターフェイスにクライアントサイドソケットをバインドしません。ローカルエリアネットワークインターフェイスである10.172.12.18にバインドすることで、プライベートネットワークの可視性のためにローカルエリア接続とのみ通信できます。

インターネット経由でサーバに接続するには、ソケットを作成して、すぐにあなたのケースで58.53.12.17の外部IPに接続する必要があります。

ローカルIPにバインドすることは、クライアントがローカルで表示されるサーバーに接続し、インターネット経由ではないことを確認する場合に便利です。

これらの2つのIPアドレスも同じではありません。プライベートIPアドレスとパブリックIPアドレスに関する情報とその理由http://www.vicomsoft.com/glossary/ip-addresses/

依然としてバインドされたクライアントソケットを使用する外部IPへのアクセシビリティは、いくつかのルートを捕らえ、大きな変更を加えずにキャッチするルータの最適化の結果である可能性があります。数分後、ルーティングデータがわずかに異なり、キャッシュがクリアされることがわかります。 (これは単なる思考であり、完全に間違っているかもしれません)

関連する問題