サービス名をポートとして解決できるデーモンはありますか?

サービス名をポートとして解決できるデーモンはありますか?

DNSサーバーはホスト名をIPアドレスに解決します。私が正しい場合、プログラムはgetaddrinfo()DNSサーバーを呼び出し、それを確認するために呼び出してホスト名をIPアドレスに解決できます。

SysV initには、DNSサーバーのようにサービス名をポートに解決するデーモンはありますか?読書を通してそうなりますか/etc/servicesgetaddrinfo()解析を実行するためにデーモンも呼び出されますか?

私はinetd読書が/etc/services どのソケットを受け取るかを決定することを知っています。しかし、inetdサービス名をポートとして解決するようなものではありません。そうですか?

ありがとうございます。

ベストアンサー1

DNSはgetaddrinfo()定義されている場合にのみ呼び出されます。nsswitch.confこのfilesトピックはから直接読みます/etc/hosts

基本的に「ネームサービス切り替え」機能(NSS)を見て、/etc/nsswitch.confおそらく動的ローディング「libnss」ルーチン。たとえば、で述べた/lib/x86_64-linux-gnu/libnss_files.so.2ときにロードされるライブラリがあるかもしれません。filesnsswitch.conf

ホストの場合、そのnsswitch.conf行は次のように読み取ることができます。

hosts: files dns

これは、ネームサービスリゾルバに "nss_files"ライブラリ(から取得/etc/hosts)をロードするか、失敗した場合は "nss_dns"ライブラリをロードするように指示します。それそれDNS サーバーを呼び出すライブラリです。

サービスの場合、nsswitch.conf 行は次のようになります。

services:       files ldap

これにより "nss_files" ライブラリ ( で検索された/etc/services) がロードされ、ロードが失敗すると "nss_ldap" ライブラリがロードされます。

名前解決方法を決定するさまざまなバックエンド(file、db、ldap、nis、compat、dns...)があります。

inet次の項目の場合

service time
{
...
}

timeNSSマップで照会する値servicesfilesinを使用するとnsswitch.conf線が見えます。

time        37/tcp      timserver

inetdTCPポート37にバインドするように指示します。

おすすめ記事