コンピュータがTCP/IPを使って通信するとき、IPプロトコルやTCPプロトコルの機能はたいてい、オペレーティング・システム(OS)の機能として実現されています。一般にWebブラウザやメーラーといったアプリケーション・プログラムはAPI(エーピーアイ:application program interface)と呼ばれるしくみでOSの機能を呼び出しています。ソケット(socket)はTCP/IPの機能を利用するときに使う標準的なAPIで、ポート番号はそこで使われる識別子です。
UNIXのAPIを他のOSに移植
ソケットはUNIX OSと密接な関係にあります。ソケットはもともと、カリフォルニア大学バークレー校が開発したBSD UNIX(ビーエスディユニックス)と呼ばれるUNIX OSでTCP/IPの機能を利用するためのAPIでした。TCP/IPやこれを使った通信ソフトの開発は米国の大学や研究機関が中心になって進めたのですが、その際に多く使われたのがUNIXワークステーションでした。
BSD UNIXはTCP/IPを使ったネットワーク機能を搭載していたうえに、プログラムのソースコードを無料で公開したので、BSD UNIXとソケットAPIはTCP/IPを使う通信ソフトを開発する際のリファレンス(基本となる手法)になりました。TCP/IPの普及に伴い、ソケットは通信ソフトがOSのTCP/IP機能を利用するAPIとしてデファクト・スタンダードの地位を確立しました。
ソケットは現在、BSD UNIX以外のOSにも広く移植されています。たとえばWindows系OSはWinSock(ウインソック)と呼ばれるソケット互換のAPIを搭載しており、これを活用してTCP/IP機能を使います。そのため、ソケットを使うことを前提に書かれたUNIXの通信ソフトは少しの修正でWindowsで使えるようになります(pict.1)。