getservbyport

関数の概要

getservbyport は、指定したポート番号から対応するサービス名を取得するPHPの組み込み関数です。ネットワークプログラミングやサーバー管理の際に、ポート番号に対応する一般的なサービス名を取得したい場合に便利です。例えば、HTTPが一般的に使う80番ポートに対して “http” というサービス名を取得できます。

パラメータの説明

  • port(必須):調べたいサービスのポート番号(整数)を指定します。例えば80や443など。
  • protocol(必須):プロトコルを示す文字列で、通常は “tcp” または “udp” を指定します。指定したポート番号がどのプロトコルのものか明示するために必要です。

戻り値

指定した portprotocol に該当するサービス名の文字列を返します。該当するサービス名が見つからなかった場合は FALSE を返します。

使用例

基本的な使い方

<?php
// 80番ポートのTCPサービス名を取得
$service = getservbyport(80, 'tcp');
echo $service; // 出力: http
?>

80番のTCPポートは一般的にHTTPサービスなので、”http” という文字列が返ります。

UDPプロトコルの例

<?php
// 53番ポートのUDPサービス名を取得
$service = getservbyport(53, 'udp');
echo $service; // 出力: domain
?>

53番UDPはDNSサービスに割り当てられているため、”domain” というサービス名が返されます。

見つからないポート番号の例

<?php
//存在しないか登録されていないポート番号を指定
$service = getservbyport(9999, 'tcp');
var_dump($service); // 出力: bool(false)
?>

9999番TCPポートに対応するサービス名が存在しないため、FALSEが返ります。

関連する関数

  • getservbyname – サービス名からポート番号を取得する関数
  • getprotobyname – プロトコル名からプロトコル番号を取得する関数
  • getprotobynumber – プロトコル番号からプロトコル名を取得する関数

まとめ

getservbyport は、PHPでネットワークサービスのポート番号からサービス名を調べる際に有用な関数です。ネットワーク関連アプリケーションの開発や管理スクリプト作成時に、ポート番号の意味を判別したい場合に役立ちます。サービス名が存在しないポートには FALSE が返るため、エラーハンドリングも行いながら活用しましょう。