Socket
ソケットは(プロトコル、ローカル IP、ローカルポート、リモート IP、リモートポート)で識別されるネットワーク通信のエンドポイントで、アプリケーション層とトランスポート層の界面となる。
目的
アプリケーションに、下位プロトコルの詳細を隠す抽象的な通信エンドポイントを与える。
メカニズム
ソケット API では、socket() が生成、bind() がアドレス割り当て、listen() がサーバーをリスニング状態にし、accept() が接続を受け取り、connect() がクライアントから発信し、send()/recv() がデータを転送し、close() が切断する。TCP ソケットは状態機械を持ち、UDP はコネクションレスである。
ユースケース
- ネットワークのサーバーとクライアント
- データベースへの接続
- WebSocket での通信
- Unix ドメインソケット(ローカル IPC)
例
- 入力
(TCP, 0.0.0.0:8080, client:1234)OutputOne connected TCP socketThe five-tuple
よくあるエラー
- Unclosed sockets exhaust available ports
- Use SO_REUSEADDR or close sockets promptly
関連用語
Port
ポートとは、トランスポート層の16ビットアドレス(0〜65535)であり、1台のホスト上で複数のネットワークアプリケーションを区別する。IPアドレスと組み合わされてソケットを構成する。 用語集
TCP
TCP(Transmission Control Protocol)はコネクション型の信頼できる順序付きトランスポート層プロトコルである。3 ウェイハンドシェイクで接続を確立し、スライディングウィンドウによるフロー制御と ACK ベースの確認応答を提供する。 用語集
UDP
UDP(User Datagram Protocol)はコネクションレスで信頼性のない順序なしのトランスポート層プロトコルである。オーバーヘッドが小さく遅延が最小で、リアルタイムやブロードキャストトラフィックに適する。 用語集
IP Address
IP アドレス(IP Address)はネットワークインターフェースに割り当てられる数値識別子である。IPv4 は 32 ビット(10 進 4 組)、IPv6 は 128 ビット(16 進 8 組)で、ネットワークアドレス指定に使われる。 用語集