2012-04-17 3 views
2

私は同じユーザーによって実行される2つのプロセスを持っていますが、どちらも(親/子の意味で)他のプロセスに関連していません。サーバーはソケットを作成し、クライアントはポート番号を使用して接続を開きます。これは素晴らしいですが、このポートをローカル/プライベートにする方法があれば良いでしょう。他のコンピュータは私のサーバに接続する必要がないので、リモートポートスキャンから保護するのが良いでしょう。また、ポートが外界に開放されていない場合は、OSのファイアウォールに突き当たるのを避けることができます。同じコンピュータ上のプロセス間で通信するためのローカル専用ポートを作成しますか?

PF_UNIXはこのように動作するファイル名タイプのソケットを作成するかもしれませんが、ポートタイプ(PF_INET)インターフェイスを使用する方法はありますか?

+0

また、bash/kshで限られたプロセス間通信を取得することもできます。 mknod、mkfifo、名前付きパイプ、 '|&'演算子(正しい場合は)を探してみてください。がんばろう。 – shellter

答えて

2

はい、ループバックインターフェイス(127.0.0.1、localhostなど)を使用すると、システム上のプロセスはすべてそれを見ることができますが、外部は何も見ることができません。

編集:具体的には、127.0.0.1/8ブロック全体がループバック用に予約されているため、127.0.0。[1-254]が動作します。

+1

ちなみに、0.0.0以外のx.y.zについては、127.x.y.zを使用することができます。私は正確なルールが何であるか分かりませんし、私が主題について尋ねた質問はあまり人気がないようでしたが、知ることは有益なことかもしれません。 – supercat

+0

非常に真実ですが、詳細は - あなたが示唆するように、少し複雑です。それを見つめて追加します。編集:またはおそらく...私はいくつかの隠された複雑さを覚えていたと思ったが、それは簡単に見えるようになった。奇妙な – jimw

+0

@jimw Aha。私はループバックアドレスに接続できることに気付いていましたが、サーバがそのインターフェイスにのみ応答するように制限されていることに気づいていませんでした。 sockaddr_in.sin_addr.s_addrのINADDR_ANYをINADDR_LOOPBACKに変更するだけでいいのですか? –