Unix-sockets-ports-and-services

提供:Dev Guides
移動先:案内検索

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.