Unix-sockets-ports-and-services
Unixソケット-ポートとサービス
クライアントプロセスがサーバーに接続する場合、クライアントは接続するサーバーを識別する方法を持っている必要があります。 クライアントは、サーバーが存在するホストの32ビットインターネットアドレスを知っている場合、そのホストに接続できます。 しかし、クライアントはそのホストで実行されている特定のサーバープロセスをどのように識別しますか?
ホストで実行されている特定のサーバープロセスを識別する問題を解決するために、TCPとUDPの両方が既知のポートのグループを定義しています。
この目的のために、ポートは1024〜65535の整数として定義されます。 これは、1024より小さいすべてのポート番号が「よく知られている」と見なされるためです。たとえば、telnetはポート23を使用し、httpは80を使用し、ftpは21を使用します。
ネットワークサービスへのポートの割り当ては、/etc/servicesファイルにあります。 独自のサーバーを作成している場合は、サーバーにポートを割り当てるように注意する必要があります。 このポートを他のサーバーに割り当てないようにしてください。
通常、5000を超えるポート番号を割り当てることが慣例です。 しかし、ポート番号が5000を超えるサーバーを記述した組織は数多くあります。 たとえば、Yahoo Messengerは5050で実行され、SIP Serverは5060で実行されます。
ポートとサービスの例
以下は、サービスと関連ポートの小さなリストです。 インターネットポートと関連サービスの最新のリストは、http://www.iana.org/assignments/port-numbers [IANA-TCP/IP Port Assignments]で見つけることができます。
Service | Port Number | Service Description |
echo | 7 | UDP/TCP sends back what it receives. |
discard | 9 | UDP/TCP throws away input. |
daytime | 13 | UDP/TCP returns ASCII time. |
chargen | 19 | UDP/TCP returns characters. |
ftp | 21 | TCP file transfer. |
telnet | 23 | TCP remote login. |
smtp | 25 | TCP email. |
daytime | 37 | UDP/TCP returns binary time. |
tftp | 69 | UDP trivial file transfer. |
finger | 79 | TCP info on users. |
http | 80 | TCP World Wide Web. |
login | 513 | TCP remote login. |
who | 513 | UDP different info on users. |
Xserver | 6000 | TCP X windows (N.B. >1023). |
ポートおよびサービス機能
Unixは、/etc/servicesファイルからサービス名を取得するために次の関数を提供します。
- struct servent getservbyname(char name、char proto)*-この呼び出しはサービス名とプロトコル名を取り、そのサービスに対応するポート番号を返します。
- struct servent getservbyport(int port、char * proto)*-この呼び出しはポート番号とプロトコル名を取り、対応するサービス名を返します。
各関数の戻り値は、次の形式の構造体へのポインタです-
struct servent {
char *s_name;
char **s_aliases;
int s_port;
char *s_proto;
};
ここにメンバーフィールドの説明があります-
Attribute | Values | Description |
---|---|---|
s_name | http | It is the official name of the service. For example, SMTP, FTP POP3, etc. |
s_aliases | ALIAS | It holds the list of service aliases. Most of the time, it will be set to NULL. |
s_port | 80 | It will have the associated port number. For example, for HTTP, it will be 80. |
s_proto |
TCP UDP |
It is set to the protocol used. Internet services are provided using either TCP or UDP. |