NCはサービス名をどのように識別するか

NCはサービス名をどのように識別するか
root@nanana:~# nc -zv localhost 5432
Connection to localhost 5432 port [tcp/postgresql] succeeded!

nc はどのようにして postgres がポートをリッスンしていることを検出するのでしょうか? 共通のポート番号と仮定だけで?

答え1

出力はポート番号のみに基づきます。

ncは通常この情報を/etc/servicesファイルから取得します。このファイルには(オペレーティングシステムによって異なりますが)IANAの完全な内容が含まれている場合があります。サービス名とポート番号レジストリ、または一般的な ARPANET 時代のポートの小さな選択、あるいはその両方の組み合わせ。

(OS によっては、このファイルは通常直接読み取られず、getservent() および libc の「nsswitch」インフラストラクチャを介して読み取られ、NIS/LDAP/Hesiod などのサービス名の追加ソースが提供される場合があります。)

関連情報