これらのファイルは、IPプロトコル番号、エイリアス、およびサービスマッピングを含むデータベースです。ユーザーとして、私は通常、それらとは対話しませんdirect方法ではありませんが、特別なLinux/GNUディストリビューションを作成する必要が生じ、必要なフェッチができないためにPerlテストスイートが失敗することに気付きました/ etc/protocolsデータベースからの番号。これは、カスタムシステムに存在しないためです。
たとえば、選択したデスクトップディストリビューションから(SMP Debian 4.17.17-1(2018-08-18)x86_64 GNU/Linux):
/ etc/protocolsはIANAリストから作成されると主張しています。
# Internet (IP) protocols
#
# Updated from http://www.iana.org/assignments/protocol-numbers and other
# sources.
# New protocols will be added on request if they have been officially
# assigned by IANA and are not historical.
# If you need a huge list of used numbers please install the nmap package.
/ etc/servicesも同様です。
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, officially ports have two entries
# even if the protocol doesn't support UDP operations.
#
# Updated from http://www.iana.org/assignments/port-numbers and other
# sources like http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/services .
# New ports will be added on request if they have been officially assigned
# by IANA and used in the real-world or are needed by a debian package.
# If you need a huge list of used numbers please install the nmap package.
実際、彼らが提供するデータは、指定されたソースからのものであるように見えます(ただし、完全ではなく、これらのデータベースは部分的であるようです)。その特異性は私を完全に混乱させました。
それらにアクセスするためのposix関数呼び出し-getprotoent(3)があり、IEEE Std 1003.1-2008で次のように記述されています。
endprotoent、getprotobyname、getprotobynumber、getprotoent、setprotoent-ネットワークプロトコルデータベース関数
これらの関数は、プロトコルに関する情報を取得します。この情報は、順次またはランダムにアクセスできるデータベースに格納されていると見なされます。このデータベースの実装は指定されていません。
形式は比較的単純で、それらのファイルを提供するのは良いことですが、データベースを手動で入力したり、適切に理解せずに他の作業をコピーしたりしたくありません。これらの中心的なソースはありますか?誰がデータベースを埋める責任がありますか?
独自のディストリビューションを作成しているので、インストールする/etc/protocols
および/etc/services
ファイルの内容の責任はユーザーにあります。
プロトコルとサービス番号の割り当てを制御する権限は、引用したファイルヘッダーに記載されているIANAです。対応するリストは プロトコル番号 および サービス名とポート番号 のWebサイトで入手できます。ただし、配布管理者は通常、使用されているがIANAに提出されていない、または承認されていないエントリを追加し、廃止されたと見なすエントリを削除します。 Debianの場合、両方のファイルのソースは the netbase
repository にあります。
POSIXは、プロトコルとサービス情報を取得するために使用できる関数を定義していますが、引用に示されているように、そのデータの格納方法や取得方法は指定していません。
このデータベースの実装は指定されていません。
データベースに含まれる情報も特定されていません。 POSIXは、スキーマに要件を効果的に課すだけです。