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 などのサービス名の追加ソースが提供される場合があります。)