ソケットについて
経緯
「DockerのCLIがうまくdocker engineと接続できない」という事があったため、Dockerについて調べた。
HTTPで通信しているという事をfukabori.FMで聞いた事があったので、解決に向けて調査を進めた。
その最中、コンテナ間のHTTP通信は、UNIXソケットを介して実行されていることを知った。
UNIXソケットは、ネットワークを介さずにプロセス間通信を行うための仕組みらしい。
ネットワークスタックを通過することなく、高速でセキュアな通信が可能とのこと。
UNIXソケット以外のソケットについても調べてみた。
ソケット
-
TCPソケット:
- ネットワークを通じての信頼性の高い、順序正しいデータ伝送が可能
- コネクション指向のプロトコルで、データが正確に、確実に届くことを保証する
-
UDPソケット:
- ネットワークを通じての高速だが信頼性の低いデータ伝送
- コネクションレスプロトコルで、オーバーヘッドが少なく高速。データの順序や完全性は保証されない
-
Rawソケット:
- 低レベルのネットワークプロトコルアクセス。カスタムプロトコルの実装やネットワークトラフィックの監視に使用
- ヘッダを含めたパケットを直接読み書きする能力を持ち、通常のデータ転送よりもさらに詳細な制御が可能
-
Bluetoothソケット:
- Bluetoothデバイス間の通信
- 低エネルギーネットワークでの短距離無線通信に適している
KJR020's Blog