リッスン(リスン)とは | 意味や読み方など丁寧でわかりやすい用語解説
リッスン(リスン)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
リスン (リスン)
英語表記
listen (リスン)
用語解説
「リッスン」とは、IT分野において、ネットワーク通信の接続要求を待ち受ける状態やその動作を指す言葉である。英語の「listen(聞く、耳を傾ける)」が語源であり、特にサーバーアプリケーションがクライアントからの接続要求を受け入れるために、特定のポートを開放して待機する様子を表す際に用いられる。
システムのネットワークサービスは、外部からのアクセスに対して常に準備ができていなければならない。この「準備ができた状態」こそがリッスンである。例えば、ウェブサーバーがHTTPリクエストを処理するためにポート80番や443番で待機している状態や、データベースサーバーがクライアントからのデータベース接続要求を特定のポートで待っている状態がこれに該当する。リッスンは、サーバーがその役割を果たす上で不可欠な、最も基本的な動作の一つと言える。
詳細な動作を見ていくと、リッスンは主にTCP/IPプロトコルにおけるコネクション指向通信で重要な役割を果たす。TCP(Transmission Control Protocol)は、通信相手との間に仮想的な専用回線(コネクション)を確立してからデータの送受信を行うプロトコルであるため、サーバー側はまず接続要求を受け入れる準備をしておく必要がある。この一連のプロセスは、一般的に「ソケット」と呼ばれる通信のエンドポイントを操作するシステムコールを通じて実現される。
サーバーアプリケーションはまず、socket()システムコールを使って通信用のソケットを作成する。次に、bind()システムコールを用いて、そのソケットにサーバー自身のIPアドレスと、通信で使用する特定のポート番号を関連付ける。これにより、サーバーは特定のネットワークアドレスとポート番号で通信を受け付ける準備が整う。そして、listen()システムコールが呼び出されることで、そのソケットが「接続待ち」の状態に移行する。このとき、オペレーティングシステム(OS)は、このソケットを介して新しい接続要求が到着するのを監視し始める。
listen()システムコールには「バックログキュー」と呼ばれる引数を指定することが多い。これは、サーバーが同時に処理できる接続要求の最大数を設定するものであり、一時的に保留できる未処理の接続要求の数を意味する。例えば、サーバーが非常に多くのクライアントから同時に接続要求を受けた場合、即座に処理できない要求はバックログキューに積まれ、サーバーが処理可能になった時点で順次取り出されて処理される。これにより、一時的な高負荷時でも、クライアントからの接続要求が全て拒否されることなく、サービス品質を維持することが可能になる。
接続要求が実際に到着すると、OSはそれを検知し、サーバーアプリケーションがaccept()システムコールを呼び出すことで、キューから接続要求を取り出し、クライアントとの間に新しい通信用のソケットを確立する。このaccept()が呼び出されるまで、ソケットはリッスン状態を継続し、新たな接続要求を待ち続ける。
一方、UDP(User Datagram Protocol)のようなコネクションレス型プロトコルにおいては、TCPのような厳密な「リッスン」状態という概念は存在しない。UDPは接続確立のプロセスを経ずにデータグラム(データパケット)を直接送受信するため、サーバー側はbind()システムコールでポートを割り当てた後、recvfrom()などのシステムコールを使ってデータグラムの受信を直接待ち受ける。しかし、広義の意味でUDPポートを開放し、データグラムの到着を待っている状態を指して「リッスンしている」と表現することもある。
リッスン状態は、システム管理者や開発者がネットワークサービスの稼働状況を確認する上で非常に重要である。例えば、LinuxやWindowsなどのOSで提供されているnetstatコマンドやssコマンド(Linux)を使用すると、現在システム上でどのプロセスがどのポートをリッスンしているかを確認できる。出力結果には「LISTEN」という状態が表示され、これによりサービスが正常に稼働し、外部からの接続を受け入れる準備ができているかどうかが一目で判断できる。
リッスン状態の確認は、セキュリティの観点からも重要である。不要なポートがリッスン状態になっていると、潜在的な攻撃対象となりうるため、必要なサービスのみがリッスンするよう適切に設定し、ファイアウォールなどでアクセスを制限することが求められる。また、リッスンしているポートが何らかの理由でブロックされている場合、外部からのアクセスが不可能となり、サービスの提供に支障をきたすことがあるため、ネットワーク設定やファイアウォールルールの確認も重要となる。
リッスンは、サーバーアプリケーションがクライアントと通信を開始するための出発点であり、ネットワークサービスが健全に機能するために不可欠な概念である。システムエンジニアを目指す者にとって、この動作とそれを支えるプロトコル、システムコール、そして確認方法を理解することは、ネットワークアプリケーションの開発や運用、トラブルシューティングにおいて基本的な知識となる。