関数の概要
getservbyport は、指定したポート番号から対応するサービス名を取得するPHPの組み込み関数です。ネットワークプログラミングやサーバー管理の際に、ポート番号に対応する一般的なサービス名を取得したい場合に便利です。例えば、HTTPが一般的に使う80番ポートに対して “http” というサービス名を取得できます。
パラメータの説明
port(必須):調べたいサービスのポート番号(整数)を指定します。例えば80や443など。protocol(必須):プロトコルを示す文字列で、通常は “tcp” または “udp” を指定します。指定したポート番号がどのプロトコルのものか明示するために必要です。
戻り値
指定した port と protocol に該当するサービス名の文字列を返します。該当するサービス名が見つからなかった場合は 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 が返るため、エラーハンドリングも行いながら活用しましょう。
