では、/etc/services
サービス名は複数のペア(転送プロトコル、ポート番号)を持つことができます。たとえば、Linuxプログラミングインタフェースは次のように言います。
/ etc / servicesファイルは、次の例に示すように、3つの列を含む行で構成されています。
# Service name port/protocol [aliases] http 80/tcp # Hypertext Transfer Protocol http 80/udp ssh 22/tcp # Secure Shell ssh 22/udp telnet 23/tcp # Telnet telnet 23/udp smtp 25/tcp # Simple Mail Transfer Protocol smtp 25/udp
テーブルでキーとして機能できるフィールドは何ですか?
この例は、サービス名が複数のトランスポートプロトコルに対応できることを示しています。
サービス名とトランスポートプロトコルが与えられた場合、複数のポート番号に対応できますか?つまり、サービスは同じトランスポートプロトコルの両方のポートでリッスンできますか?
ありがとうございます。
答え1
このファイルは以下に説明されています。services(5)
マンページ、そしてその使い方関連機能のマニュアルページ。後者は次のことを示します。右期待が重要です:
- 名前と契約
- ポート番号とプロトコル。
サービスにはエイリアスがあります(例では説明しません)。www
たとえば、通常は次のエイリアスですhttp
。
http 80/tcp www # WorldWideWeb HTTP
どのサービスについてできるマッピングのみ/etc/services
を提供し、何も制限しません。したがって、TCPによって要求された人には、割り当てられたhttp
ポートが80であるというメッセージが表示されますが、HTTPデーモンは任意のポートでリッスンできます(許可されています)。同様に、TCPがポート80を要求している人にとって、その名前は次のとおりですhttp
。ただし、これがポート80でリッスンするサーバーがHTTPサーバーでなければならないという意味ではありません。さらに、単一のプロセスは複数のポートでリッスンすることができ、BSDとLinuxでは、カーネル3.9以降、複数のプロセスが同じポートでリッスンできます。