ソケット通信 【network socket】 BSDソケット / BSD socket / INETドメインソケット / INET domain socket
概要
ソケット通信(network socket)とは、実行中のプログラム間でデータの送受信を行うための標準的な仕組みの一つ。通信の相手方と紐づいたオブジェクトなどを生成し、これを通じて通信を管理する。特定の通信相手(IPネットワーク上の場合はIPアドレスとポートの組み合わせ)と紐付いた通信端点をプログラム上に生成し、これを通じてコネクションの確立やデータの送受信、切断などの処理を行う。
具体的な通信方式や通信相手の指定方式が複数用意されており、同じコンピュータ上の他のプロセスとも、TCP/IPなどを利用して他のコンピュータ上のプログラムとも通信できる。通信方式などが異なっても共通する手順は同じコードで実装することができる。
ソフトウェア開発者にとっては、ソケット通信の仕組みに則ってプログラムを記述すれば、具体的な通信規格の仕様や制御手順の詳細を知らなくてもよく、通信相手の種類や仕様を調べてそれぞれに合わせて通信を行うコードを記述する必要もない。
UNIX系OSの一種である「BSD」(Barkeley Software Distribution)で最初に用いられたことから「BSDソケット」とも呼ばれる。通信を行うプログラムが利用する標準的なインターフェースとしてUNIX系以外も含め多くのプログラミング言語やオペレーティングシステム(OS)が対応している。
UNIX系OSでは、ソケットの仕組みを用いて同じコンピュータ上で動作するプロセス間のデータの受け渡し(IPC:プロセス間通信)を行う「UNIXドメインソケット」(IPCソケット)も提供される。ファイルシステムを介してプロセス同士が通信する手法で、ネットワークソケットと共通のコードで高速にIPCを行うことができる。
(2024.9.2更新)