next up previous
: 2. ポート転送による安全な通信 : ssh2 : ssh2

1. ポート

インターネットに接続された計算機同士が通信を行なう場合,通信相手の特定に IPアドレスを用います.これは電話で会話をする際,通信相手の特定に電話番号 を用いるのに似ています.現在のIPアドレスは32bitの整数値で,133.5.9.1といっ た表記を行ないます.通信相手となる計算機の特定には,IPアドレスの他に kyu-cc.cc.kyushu-u.ac.jpというような計算機名を用いることも可能です.この ような計算機名は人間にとって憶えやすいように付けられている名前です.計算 機内部の通信では,DNS(Domain Name System)などを用いて名前をIPアドレスに 変換して通信が行なわれます.

IPアドレスと電話番号は類似していると述べましたが,インターネットの通信と 電話には大きな違いがあります.それはインターネット上の計算機間通信の場合, 複数の通信を同時に行なう事ができるという事です.電話の場合,ある人がAさ んと話している最中,別のBさんと通話することはできません.つまり一時に一 つの通話しか行なえません(ISDNでは事情が異なります).これに対してインター ネットの通信では,マルチタスクOSの計算機を用いれば,telnetで遠隔利用しつ つ,WWWページデータを入手しつつ,FTPでファイルを転送し,かつchatプログラ ムで文字会話をする,といった事を同時に行なう事ができます.

インターネットで同時に複数の通信を行なう場合,計算機が受けとった通信デー タがどのプログラムのデータなのかをどのように区別しているのでしょうか.IP で使われているTCP 3#3およびUDP 4#4を用いた通信では,同時に行なわれる複数の通信を 区別するために,ポート番号を用いています.ポート番号は16bitの整数値で表 現されます.つまりポート番号は0から65535 (5#5)の間の値を取ること ができます.

図 1: IPアドレスとポート

ポートは約65000個存在しますが,すべてのポートを自由に利用できるわけでは ありません.図1に示しているように,小さな番号のポートは, 20,21番ポートはFTP,23番はtelnet,25番はSMTP(電子メールの転送),80番は HTTP(WWWデータ通信)といった風に用途が決められています.これらの用途が知 られているポートは「well-knownポート」と呼ばれます[2].UNIX系 のOSでは``/etc/services''というファイルに,あるポート番号がどのような通 信サービスを行なっているのかが記述されています.

telnetの場合,サーバ側は23番ポートで通信を待ち受けます.多くの場合, telnetクライアントは自動的にOSが割り当てる大きめのポート番号を使います. UNIX系OSの場合,1024番以上の番号を用いている場合が多いようです.SSHサー バは22番ポートで待ち受けています.SSHのクライアントとなる計算機は,遠隔 地にあるサーバ計算機の22番ポートへ接続します.二者の間で暗号鍵交換等の交 渉が行なわれた後,通信が確立するのです.現在,インターネット上で最も利用 されている通信サービスであるWWWはHTTPという通信方式を用いています.WWWサー バが待ち受けているポートは80番です.Internet ExplorerやNetscapeといった WWWクライアント(ブラウザ)はWWWサーバとなる計算機の80番ポートへ接続してい るのです.

20番ポートと21番ポートはFTPのために用いられます.普通は,telnetやHTTPの ように,ある一つの通信では一つのポートだけを用いるのですが,FTPは2つのポー トを用います.21番ポートはFTPサーバ側の待ち受け口ポート番号です.もう一 方の20番ポートは,FTPサーバがクライアントへデータを送り出すためのデータ 送信専用ポート番号です.

ポートの接続状況はnetstatコマンドで知る事ができます.ここでは Windows95/98のMS-DOSプロンプト上で利用できるnetstatコマンド例に示します. 図2の下線部は,前回の記事で説明したTTSSHを用いて kyu-cc.cc.kyushu-u.ac.jpにSSHの接続している様子を示しています.手元の計 算機(firebird.cc.kyushu-u.ac.jp)の748番ポートと,遠隔地の計算機である kyu-cc.cc.kyushu-u.ac.jpの22番ポートが接続されている事がわかります.

図 2: ポート番号の利用状況 (netstatコマンド)



平成12年1月7日