6.1 アプリケーション間通信の保証

アプリケーション間通信の保証は、第4章で学んだIPとポート番号で指定される インターネット 上での唯一性が保証された通信データの流れによって可能になります。従って、 アプリケーション間の通常の通信は 2つのIPと2つのポート番号で特定されます。つまり、実際のアプリケーション 間の通信は必ずこれによって区別される訳です。ところが、サーバクライアント モデルにおいては、サーバのIPのみならず、サーバのポート番号も分かっていな いと通信は出来ません。 そこで取られた方法は、サーバ側のポート番号については予め決まった数に 決めておくという方法でした。これを Well Known(ウェルノウン:周知の) ポートと呼びます。

一般に、 ポートの管理は IANA (Internet Assigned Numbers Authority) が行っています(古くはRFCで公開されていましたが)。 そして、ポート全体を以下の3種類に分けて管理を行っています。

ポート番号 区別
0-1023 well known port (周知のポート)
1024-49151 registered port (予約されたポート)
49151-65535 private port (プライベートポート)

ちなみに、well known port については、IETF でも標準規格に定めていますが、 1024 番より上のポート番号については、あくまでも利便性のための管理であり、 別の用途に使うこともあり得ます。

さて、通常、このwell knownアドレスに登録されたサービスは、クライアントからの 接続を待ち受けるためのポートであり、特に root あるいは権限を持った ユーザが動かすサービスに主には限定されています。

最新のリストは、

              http://www.iana.org/assignments/port-numbers
に掲載されています。 通常、Unixなどでは、このポート番号とサービス名の対応表は /etc/services に収められています。

幾つかの例を以下に掲げます。

ftp-data         20/tcp    #File Transfer [Default Data]
ftp-data         20/udp    #File Transfer [Default Data]
ftp              21/tcp    #File Transfer [Control]
ftp              21/udp    #File Transfer [Control]
ssh              22/tcp    #Secure Shell Login
ssh              22/udp    #Secure Shell Login
telnet           23/tcp
telnet           23/udp
#                24/tcp    any private mail system
#                24/udp    any private mail system
smtp             25/tcp    mail         #Simple Mail Transfer
smtp             25/udp    mail         #Simple Mail Transfer

なお、#以下行末まではコメント行です。

このように、FTP は 21 をコントロールに使い、データ転送には 20 を使うようになっています(TCP,UDPの両方が登録されているが、 通常どちらもTCPを使う)。また、SSH(Secure SHell)は 22番ポートで 待ちうけ、telnet は 23番、SMTP(Simple Mail Transfer Protocol)は メイルの配送を受け持つプロトコルで 25 番ポートで待ち受けるという ことになっています。

この他に知っているべきだと思われる主なポートを上げておきましょう。 但し、UDPも同じポートで予約されている場合のUDPは割愛しています。

domain           53/tcp    #Domain Name Server
bootps           67/udp    dhcps        #Bootstrap Protocol Server
bootpc           68/udp    dhcpc        #Bootstrap Protocol Client
http             80/tcp    www www-http         #World Wide Web HTTP
pop3            110/tcp    #Post Office Protocol - Version 3
nntp            119/tcp    usenet       #Network News Transfer Protocol
ntp             123/tcp    #Network Time Protocol
netbios-ns      137/tcp    #NETBIOS Name Service
netbios-dgm     138/tcp    #NETBIOS Datagram Service
netbios-ssn     139/tcp    #NETBIOS Session Service
imap            143/tcp    imap2 imap4 #Interim Mail Access Protocol v2
snmp            161/tcp
snmptrap        162/tcp    snmp-trap
ldap            389/tcp    #Lightweight Directory Access Protocol
https           443/tcp
smtps           465/tcp    #smtp protocol over TLS/SSL (was ssmtp)
rtsp            554/tcp    #Real Time Stream Control Protocol
ldaps           636/tcp    sldap #ldap protocol over TLS/SSL
imaps           993/tcp                 # imap4 protocol over TLS/SSL
pop3s           995/tcp spop3           # pop3 protocol over TLS/SSL

この表は先のIANAからコピーした /etc/servicesから抜粋したものだが、 コメントのないものもあります。例えば、443番ポートのhttps は HTTP(Hyper Text Trasnfer Protocol: WWWのプロトコル)を安全な通信路でやりとりするための、 HTTP over TLS/SSL です。この TLS/SSL を使って、通信路の安全を確保している プロトコルは他にも散見されます。

これらのwell knownポートよりも番号の大きなポート番号については、それほど 厳しくなく、registered port も利便性のために予約できるようになってい ますが、実際には private 同様に自由に使っても差し支えはないでしょう。

また、実際の通信では、IP,ポート番号の組だけではなく、 TCP,UDPの区別までつけて、区別することも出来ます。 これは、例えば次のような場合に、クライアント側がTCPとUDPの両方 を使って(しかも同じポート番号で)、アクセスする場合もあり得るから です。

\epsfile{file=same-port}



Noriyo Kanayama