Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

リスナー(リスナー)とは | 意味や読み方など丁寧でわかりやすい用語解説

リスナー(リスナー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

リスナー (リスナー)

英語表記

listener (リスナー)

用語解説

リスナーとは、ネットワーク上で動作するサーバーアプリケーションにおいて、特定の接続要求を待ち受け、受け入れる役割を担うプログラムや機能の総称である。主にTCP/IPのようなコネクション指向型プロトコルを用いる通信において重要な要素となる。クライアントがサーバーへ接続しようとするとき、サーバー側でその接続要求を最初に受け止めるのがリスナーである。

詳細に入ると、リスナーはサーバーアプリケーションがネットワークサービスを提供する上で不可欠な存在である。インターネット上の様々なサービス、例えばウェブサイトの閲覧やデータベースへのアクセス、メールの送受信など、あらゆる場面でクライアントとサーバー間の通信が発生するが、その通信の第一歩は必ずサーバー側のリスナーがクライアントからの接続要求を受け入れることから始まる。リスナーは、サーバーが起動する際に、特定のIPアドレスとポート番号の組み合わせに「バインド」されることで活動を開始する。バインドとは、特定のネットワークアドレスとポート番号に自身のサービスを関連付けて、そこからの通信を待ち受ける状態になることである。

具体的には、ウェブサーバーであれば通常、HTTPプロトコル用にポート80、HTTPSプロトコル用にポート443でリスナーが動作する。データベースサーバーであれば、例えばMySQLはポート3306、PostgreSQLはポート5432といった特定のポートでリスナーがクライアントからの接続を待ち受ける。クライアントがサーバーへ接続しようとする際、クライアントはサーバーのIPアドレスと、目的のサービスが待ち受けているポート番号を指定して接続要求(TCPにおけるSYNパケット)を送信する。サーバー側では、指定されたポートで活動しているリスナーがこのSYNパケットを受信すると、クライアントとの間で「3ウェイハンドシェイク」と呼ばれる手順を開始する。これは、TCP接続を確立するための基本的なプロトコルで、クライアントとサーバーがお互いに通信準備ができたことを確認し合うプロセスである。

3ウェイハンドシェイクが正常に完了すると、クライアントとサーバー間に論理的な接続が確立される。この時点で、リスナーは新たな接続要求が来てもすぐに処理できるように、新しい接続のために「ソケット」と呼ばれる通信のエンドポイントを生成し、その後の通信処理は新しく生成されたソケットに引き渡される。リスナー自身は、引き続き元のIPアドレスとポート番号で次のクライアントからの接続要求を待ち受ける役割に戻る。このようにして、一つのリスナーが同時に多数のクライアントからの接続要求を処理し、それぞれの接続を適切なソケットに分配することで、サーバーは複数のクライアントと並行して通信できるようになる。

リスナーの機能は、サーバーアプリケーションが安定してサービスを提供するために非常に重要である。もしリスナーが存在しなければ、サーバーは能動的にクライアントからの接続要求を受け入れることができず、サービスを提供できない。また、リスナーはサーバーのセキュリティにも深く関わる。ファイアウォールなどのセキュリティ設定では、どのポートでリスナーを許可するか、どのIPアドレスからの接続を許可するかを細かく制御することで、不正なアクセスを防ぐ役割も担う。例えば、必要なポートだけを開き、それ以外のポートへのアクセスを拒否することで、サーバーの攻撃対象を最小限に抑えることができる。

リスナーの実装は、プログラミング言語の標準ライブラリやフレームワークによって提供されることが多い。例えば、PythonのsocketモジュールやJavaのServerSocketクラスなどは、アプリケーションがリスナー機能を実装するためのAPIを提供する。これらのAPIを使用することで、開発者は特定のポートで接続を待ち受け、クライアントからの接続を受け入れて通信を行うサーバーアプリケーションを構築できる。接続要求を一時的にキューに保持する「バックログ」という仕組みもリスナーの機能の一部であり、短時間に大量の接続要求が来た場合に、それらを一時的に溜めておき、順次処理することでサーバーが過負荷になることを防ぐ役割がある。リスナーは、このようにネットワーク通信の基盤を支え、サーバーが円滑かつ安全にサービスを提供するための要となる機能である。

関連コンテンツ

関連ITニュース