【そけっと】

ソケット とは?

💡 ネットワーク通信の「電源コンセント口」
📌 このページのポイント
ソケット — プロセス間通信の接続口 クライアント アプリケーション ソケット サーバー アプリケーション ソケット TCP/UDP 通信 192.168.1.10:50000 192.168.1.1:80 ソケット = IPアドレス + ポート番号 の組み合わせ プログラムがネットワーク通信するための「窓口」
ソケット通信の仕組み
ひよこ ひよこ

ソケットって何?よく聞くけど実体がよくわからない…

ペンギン先生 ペンギン先生

プログラムネットワークを使うための「接続口」だよ。コンセントに電源プラグを差し込むイメージ。ソケットを作ると、そこを通じてデータを送ったり受け取ったりできるようになる。

ひよこ ひよこ

IPアドレスポート番号の組み合わせってどういうこと?

ペンギン先生 ペンギン先生

IPアドレスは「どのコンピューターか」を示して、ポート番号は「そのコンピューターのどのアプリか」を示す。例えば192.168.1.1:80なら「192.168.1.1のコンピューターの80番ポート(Webサーバー)」って意味だよ。

ひよこ ひよこ

サーバーとクライアントでソケットの使い方は違うの?

ペンギン先生 ペンギン先生

違うよ。サーバーは先にソケットを作って「待ち受け状態」にする。クライアントがそこに接続しに来たら、サーバーは新しいソケットを作って専用の通信路を確立する。だからWebサーバーは1万人の接続を同時に処理できる。

ひよこ ひよこ

「ソケットのファイルディスクリプタ」って何?

ペンギン先生 ペンギン先生

Unixの思想では「すべてはファイル」で、ソケットもファイルと同じように数字(ファイルディスクリプタ)で管理されるんだ。プログラムでソケットを開くと整数値が返って、その数字を使って読み書きする。1プロセスが開けるファイルディスクリプタの数には上限(デフォルトだと1024とか)があって、大量の接続を扱うサーバーで「Too many open files」エラーが出る原因の一つがこれなんだよ。ulimitコマンドで上限を変えられる。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ソケット」って出てきたら「プログラムネットワーク通信するための接続口だな」と思えばだいたいOK!
📖 おまけ:英語の意味
「Socket」 = 差し込み口・ソケット
💬 電気のコンセント(socket)から来た言葉。プラグを差し込んで通信するイメージ
← 用語集にもどる