/etc/protocolsと/etc/servicesはどこから来たのですか?

/etc/protocolsと/etc/servicesはどこから来たのですか?

これらのファイルは、IPプロトコル番号、エイリアス、およびサービスマッピングを含むデータベースです。私は通常、ユーザーとして誰とも対話しません。直接方法を使用しましたが、特別なLinux / GNUディストリビューションを作成する必要があり、/etc/protocolsデータベースから必要な番号を取得できず、Perlテストコレクションが失敗したことがわかりました。なぜなら、その番号が私のカスタムシステムに存在しなかったからです。

たとえば、私が選択したデスクトップディストリビューション(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 - ネットワークプロトコルデータベースの機能

これらの関数はプロトコルに関する情報を取得する必要があります。情報は、順次またはランダムにアクセスできるデータベースに格納されていると見なされます。このデータベースの実装は指定されていません。

形式は比較的簡単で、これらのファイルを提供することをお勧めしますが、適切な理解なしに手動でデータベースを作成したり、他のタスクを複製したくない場合があります。どのような中央ソースがありますか?データベースの作成を担当する人は誰ですか?

  • getprotoent(3) 呼び出しを公開して型を定義するライブラリ(glibcなど)?
  • 現在、POSIX仕様で指定された標準コンテンツイメージはありますか?
  • どのディストリビューションマネージャに属していますか?
  • それとも全く違う誰か/何ですか?

答え1

独自のディストリビューションを作成するので、インストールする/etc/protocolsファイルとファイルの内容に対する責任はユーザーにあります。/etc/services

プロトコルとサービス番号の割り当てを制御する権限は、参照したファイルヘッダーに記載されているようにIANAです。これらのリストはIANAウェブサイトで入手できます。契約番号そしてサービス名とポート番号。ただし、ディストリビューションマネージャは、使用されているがまだIANAに送信されていないか、承認されていないアイテムを追加し、廃止されたアイテムを削除することがよくあります。 Debianの場合、これら2つのファイルのソースは次の場所にあります。netbaseリポジトリ

POSIXは、プロトコルおよびサービス情報を取得するために使用できる関数を定義しますが、引用符に示されているように、データの保存または取得方法を指定しません。

このデータベースの実装は指定されていません。

データベースに含まれる情報も指定されません。 POSIXは実際にはスキーマの要件のみを課します。

関連情報