ローカルホストで事前定義されたポートを使用して、TCP/IPを介して通信するいくつかの部分(プロセス)に分割されたアプリケーションがあります。
これは常に安全ですか?ある種のファイアウォール(企業、ローカルにインストールされた、Windowsファイアウォールなど)がこのトラフィックをブロックできますか?または、OSの一部のユーザー設定でこのトラフィックをブロックできますか?
私が興味を持っているOSは、Windows(XPから7)とLinux(Ubuntu、Red Hat Linux、およびSUSE)です。
_127.0.0.0/8
_および_::1/128
_へのトラフィックは、TCP/IPスタックによって内部的に処理されます。物理ネットワークカードに到達せず、コンピューターから離れることもないため、企業のファイアウォールによってブロックされることはありません。
ループバックソケットはIPCで非常に一般的であるため、優れたファイアウォールがそれをブロックすることはありません。 (Windowsファイアウォールはそうではありません。)しかし、いくつかの過度に妄想的なものがあります...しかし、そのような場合、私はあなたのソフトウェアではなくファイアウォールを非難します。
Unixでは、(偶然に)ループバックインターフェイス(通常はlo
)を停止することができます。繰り返しますが、これは非常に珍しいことです。
ポートの衝突を回避するために、ハードコードされたポートの代わりに、該当する場合はsocketpair()
を使用する必要があります。
LinuxではUnixソケットを使用し、Windowsでは名前付きパイプを使用するのがさらに良いでしょう。
これらのOSはすべて、ファイアウォールソフトウェアの実行をサポートしています。これらはローカルホスト接続をブロックする可能性がありますが、それは(私の経験では)あまり一般的ではありません。
これを行うアプリケーション/サービスはたくさんあります。ボックスでnetstat -an
を実行してみてください。127.0.0.1
でリスニングソケットが開いているアプリケーションがかなりの数表示される可能性があります。
これがLinuxで機能するのを妨げる可能性のあるユーザー設定を知りません。 Windowsについてはわかりません。しかし、繰り返しますが、これは一般的な手法です。