Unixソケットの簡単な説明


20

私は検索することができ、ウィキペディアのエントリや他の場所をすでに見てきましたが、プログラミングの経験はありますが、概念を実際には把握していません。私を10歳のように扱い、ソケット通信について明確な説明をお願いできますか?


それらを使用して、いくつかの小さなテストアプリを作成します。2台のマシンも必要なく、2つの小さなアプリで起動できます。ビンゴ。
パトリックヒューズ

Beejのネットワークプログラミングガイドは、 Unixソケットに関する非常に人気のある紹介テキストのようですが、私はそれが好きだとは言えません。
ネマンジャトリフノビッチ

@DanielPittmanの回答をすでに支持しました。もし書く必要があるなら、私は同じ答えを書きました。それでも、さらにヘルプが必要な場合は、拡張します。質問を編集し、知っていることとしないことの背景を説明してください。また、使用方法、内部での動作、または理論的(プロトコル設計)でヘルプを参照しているかどうかを教えてください何らかの目的で評価しますか?
ディパンMehta

ここに本があります:Unixネットワークプログラミング。この質問に答えるだろう地球上の誰もが、この母親から学ぶだろう。この本を読んで、あなたの質問自体が良くなります。
ディパンMehta

BSDソケットのことですか?Unixソケットはローカルでのみ機能します。
imel96 14

回答:


15

例を挙げましょう。あなたの住所に住んでいない友人と通信/チャットしたいとします。そのためには、「通信チャネル」を確立する必要があります。電話を使用してこの通信を行いたいとします。街には電話線のネットワークがあり、それがすべての家に広がっていることを知っています。

今、あなたの家には電話ソケットがあり、あなたの友人の家には電話ソケットがあります。通信を行うには、通信の両端で電話をソケットに接続して、あなたとあなたの友人がネットワークに接続する必要があります。プログラミングのソケットは、概念的には電話ソケットと同じです。

プログラミングでは、互いに通信したい2つのプロセス(プログラムを実行)があります。そのために、彼らは自分自身の間に通信リンクを確立する必要があります。繰り返しますが、利用可能なネットワークがあり、何らかのソケットを使用してこのネットワークに接続するだけです。Unixソケットは、ネットワークへのこの接続性/プラグ可能性を提供するソケットの1つです。したがって、2つのプログラムのそれぞれに、ソケットを介してネットワークに接続するジョブを実行するコードがあります。

残りは詳細です。


2
十分な評判があれば、これを支持します。あなたのテキストは、ソケットの仕組みを説明していません。ウィキペディアと同じ一般的なテキスト。ソケットはどのようにリッスンしますか?電話ソケットはどのように接続をリッスンできますか?
グリーン

21

Unixソケットは双方向ソケットです-おそらく慣れ親しんでいるIPベースのソケットのようであり、おそらく慣れ親しんでいるパイプに似ています。

興味深いプロパティの小さなセットがあります:

  • これらは「ローカルホスト」のドメインにのみ存在します。ネットワーク経由ではアクセスできず、ローカルマシン上でのみアクセスできます。
  • それらを「ストリーム」モードで作成し、パイプのようにデータをバイトのストリームとして渡すだけです。
  • 「データグラム」モードで作成でき、送信操作間の境界を保持します。これにより、バイトストリームの上に独自のフレーミングプロトコルを構築することなく、フレーミングを保持できます。
  • 彼らは「アドレス」としてファイルシステム、またはLinuxでは「抽象的な名前空間」を使用します
  • OSに応じて、相手になりすます、接続するソフトウェアを安全に識別する、またはソケットを介してファイルハンドルを渡すことができる場合があります。

基本的に、これらは他のソケットと同等です。パイプよりも興味深い特性がわずかにありますが、その他の点では根本的な違いはありません。通常、パイプよりもIPCレイテンシが長く、多くの場合バッファが大きくなります。ただし、調整できる場合もありますが、プラットフォームによって異なります。

覚えておくべき最後の興味深い特性は、名前空間としてファイルシステムを使用することです。したがって、以前の関係がないソフトウェアでは、匿名パイプではなく名前付きパイプのようなものです。(抽象的な名前空間ソケットは同じですが、「ファイル」パスが存在する必要はありません。)

それよりも深いものはありません。通常のパイプやローカルホストへのTCP接続とは根本的に異なるスーパーシークレットの隠しプロパティはありません。


3
感謝しますが、私はそれがまだ複雑で議論に満ちていると思います。
エルゾヴァルギ

2
「TCP / IPソケットとUDP / IPソケットがどのように機能するかご存知ですか?これらは同じですが、IPパーツがない場合のみです」
ダニエルピットマン

私は気分を害することなく、ただ理解したいだけです。ありがとう。これらについてさらに詳しく説明します。
エルゾヴァルギ

4
その用語を使用して用語を定義する(つまり、「Unixソケットは双方向ソケット」)ことは、ソケットが何であるかを知らない人には何も説明しません。
ブライアンオークリー

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.