ITの教科書検索
入門・発展ページ読了 約12分

FTP・TELNET・NTPとは ― SSHとの違いとポート番号

FTP・TELNET・NTPとは何かを、ポート番号・平文か暗号化か・用途で比べます。FTPの2本の接続とアクティブ/パッシブモード、SSH・SFTP・FTPSとの違いも図で解説。

目次
  1. FTP・TELNET・NTPは何をするか
  2. ポート番号と暗号化の比較表
  3. FTPとは:2本の接続
  4. アクティブモードとパッシブモード
  5. SFTP・FTPSとの違い
  6. TELNETとSSHの違い
  7. NTPとは:時刻合わせの仕組み
  8. 練習問題

FTPはファイル転送、TELNETは遠隔操作、NTPは時刻合わせのプロトコル

FTPはファイルを送受信するプロトコルで、TELNETは離れたコンピュータを操作するプロトコルです。NTPは、ネットワークを通して時計の時刻を合わせるプロトコルです。

FTPとTELNETは、パスワードを含む中身を暗号化せずに送ります。そのため今は、暗号化するSSHや、SSHの上で動くSFTPに置き換わってきています。どれもアプリケーション層のプロトコルで、決まったポート番号で待ち受けます。それぞれのポート番号と、SSHやSFTPとの違いは、次の節の表で比べます。

FTP・TELNET・NTP・SSHの違い:ポート番号と暗号化

次の表は、この記事で扱うプロトコルを、用途・ポート番号・通信の中身で比べたものです。ポート番号は、IANAという番号の管理団体に登録された値です。

プロトコル何に使うかポート番号通信の中身
FTPファイルの転送TCP 21(制御用)
TCP 20(データ用)
平文
FTPSファイルの転送TCP 21
TCP 990
TLSで暗号化
SFTPファイルの転送TCP 22SSHで暗号化
TELNET別のコンピュータの遠隔操作TCP 23平文
SSH別のコンピュータの遠隔操作TCP 22暗号化
NTP時計の時刻合わせUDP 123平文

FTPは、制御用とデータ用で2つの番号を持ちます。ただし20番を使うのは、後で見るアクティブモードのときだけです。NTPだけがUDPを使い、ほかはTCPを使います。

平文とは、暗号化されていないそのままの文字のことです。平文のプロトコルは、経路の途中で通信を見られると中身を読まれます。これは、HTTPとHTTPSの記事で説明したHTTPの弱点と同じです。

FTPとは:制御用とデータ用の2本の接続を使う

FTP(File Transfer Protocol)は、クライアントとサーバの間でファイルを送受信するプロトコルです。サーバへファイルを送ることをアップロード、受け取ることをダウンロードと呼びます。規格はRFC 959です。

FTPは、1回の利用で制御用とデータ用の2本のTCP接続を使います。制御用の接続には、ログインやファイルの指定などのコマンドと、その応答が流れます。データ用の接続には、ファイルの中身とファイルの一覧が流れます。

制御用の接続は、クライアントからサーバの21番へ張ります。この接続は、ログインしてから終えるまでつないだままです。一方、データ用の接続はふつう、ファイル1つや一覧1回ごとに張り、送り終えると閉じます。

次の例は、制御用の接続を流れる文字列です。C: はクライアント、S: はサーバが送った行です。気になる行をクリックすると、その行の意味が開きます。

# 制御用の接続(サーバの21番)を流れる文字列

行をクリックすると、その行の意味が開きます。

PASSの行のとおり、パスワードも文字のまま送られます。ファイルの中身もデータ用の接続をそのまま流れるので、FTPには経路の途中で読まれるのを防ぐ手段がありません。

FTPのアクティブモードとパッシブモードの違い

2つのモードの違いは、データ用の接続をどちらから張るかです。アクティブモードではサーバから張り、パッシブモードではクライアントから張ります。制御用の接続は、どちらのモードでもクライアントから張ります。

アクティブモードクライアントFTPサーバファイアウォール制御用の接続(宛先21番)PORTで自分の番号を伝えるデータ用(サーバ20番から)外から入るパッシブモードクライアントFTPサーバファイアウォール制御用の接続(宛先21番)PASVでサーバの番号を聞くデータ用(宛先60001番)内から出る
制御用の接続は、どちらのモードでもクライアントからサーバの21番へ張ります。違うのはデータ用の接続の向きです。アクティブモードではサーバから接続してくるので、クライアント側のファイアウォールを外から入る向きになります。パッシブモードではクライアントから接続するので、内から出る向きで済みます。

アクティブモードでは、クライアントがPORTコマンドで自分のアドレスと待ち受けの番号を伝えます。サーバは、自分の20番からその番号へ接続してきます。20番は、RFC 959で決められたサーバ側の既定のデータ用ポートです。

パッシブモードでは、クライアントがPASVコマンドを送ります。サーバは待ち受ける番号を決め、応答で知らせます。前の節の例では、その番号が60001番でした。

アクティブモードパッシブモード
使うコマンドPORTPASV
データ用の接続を張る側サーバクライアント
サーバ側のポート20番サーバが知らせた番号
クライアント側のファイアウォール外からの接続を通す必要がある内から出る接続だけで済む

家庭や社内のネットワークでは、パッシブモードが使われる

ファイアウォールは、内側から外へ出る接続を通し、外から入る新しい接続を止める設定がふつうです。アクティブモードのデータ用の接続は、外から入る向きなので止められます。パッシブモードなら内から出る向きなので、そのまま通ります。

NATを使っている場合は、もう1つ問題があります。PORTの中には、PCのアドレスが文字で書かれます。たとえば 192.168.10.25 の50001番なら、PORT 192,168,10,25,195,81 と送ります。

195×256+81=50001 なので、後ろの2つで50001番を表しています。しかし、192.168.10.25 は外から届かないプライベートIPアドレスです。そのためNAT機器の多くは、FTPの制御用の接続の中身を見て、このアドレスを書き換えます。

RFC 1579 は、クライアントがPASVを使うよう勧めています。PASVなら、データ用の接続がファイアウォールを越えやすいからです。アドレスの書き換えは、RFC 3022 にFTPの例として書かれています。ファイアウォールの仕組みはファイアウォールの記事で、NATはNATの記事で説明しています。

SFTP・FTPSとFTPの違い

FTPを暗号化して使う方法は、2つあります。名前が似ていますが、仕組みは大きく違います。

FTPSは、FTPの通信をTLSで暗号化したものです。TLSは、HTTPSでも使う暗号化の仕組みです。FTPのコマンドと2本の接続はそのまま残るので、アクティブモードとパッシブモードの区別もあります。

FTPSには、2つの始め方があります。1つは、21番でつないでから AUTH TLS というコマンドで暗号化に切り替える方法で、RFC 4217 に定められています。もう1つは、990番でつないで最初から暗号化する方法で、この番号もIANAに登録されています。

FTPSでは、制御用の接続も暗号化されます。そのため、前の節で見たNAT機器によるアドレスの書き換えができません。RFC 3022 も、中身を暗号化するとこの書き換えが効かなくなると書いています。

SFTPは、SSHの暗号化された接続の上で動く別のプロトコルです。名前にFTPと付きますが、FTPのコマンドは使いません。SSHの22番への1本の接続だけで済むので、データ用の接続を別に張る必要がありません。

TELNETとSSHの違い:平文か暗号化か

TELNETとSSHは、どちらも離れたコンピュータを手元の画面から操作するためのプロトコルです。サーバやルータの設定を、その機器の前に行かずに変えるときに使います。違いは、通信を暗号化するかどうかです。

TELNETは、TCPの23番で待ち受けます。規格はRFC 854です。ログインのパスワードも、入力したコマンドも、返ってきた結果も、すべて平文で流れます。

SSH(Secure Shell)は、TCPの22番で待ち受けます。規格は RFC 4251 から RFC 4254 です。パスワードを含むやり取りを、すべて暗号化して送ります。

SSHは、暗号化のほかに相手の確認もします。多くのSSHクライアントは、最初の接続でサーバの鍵の指紋を表示し、確かめるよう求めます。2回目からは、鍵が前と違えば警告が出るので、なりすましたサーバに気づけます。

利用者の確認には、パスワードのほかに公開鍵を使う方法もあります。公開鍵の方法では、手元に置いた秘密鍵を持っていることを示してログインします。この方法なら、サーバにパスワードを送らずにログインできます。ホスト鍵の確認と公開鍵認証の流れは、SSHの記事で段階を追って見られます。

TELNETは今どう使われるか

今は、遠隔操作にはSSHを使うのがふつうです。ただ、telnet コマンドは、相手のポートにTCPでつながるかを試す道具として使われることがあります。たとえば telnet 203.0.113.50 80 と打つと、そのWebサーバの80番につながるかが分かります。自分のPCでどの番号が待ち受けているかは、netstat・ss・digの記事で説明したssやnetstatで調べます。

NTPとは:ネットワークで時計の時刻を合わせる仕組み

NTP(Network Time Protocol)は、コンピュータの時計を、ネットワークの先にある正しい時計に合わせるプロトコルです。UDPの123番を使います。現在の規格は、NTPバージョン4のRFC 5905です。

時刻がずれると、困ることがあります。たとえば、複数の機器のログを並べても、どれが先に起きたかが分からなくなります。HTTPSの証明書の有効期限も時計で判断するので、時計が大きくずれると正しい証明書でもエラーになります。

ストラタム:時刻の源からの段数

NTPのサーバは、階層をつくって時刻を受け渡します。GPSの受信機などの正確な時刻の源を直接つないだサーバが、ストラタム1です。時刻の源そのものを、ストラタム0と呼ぶ説明もあります。ストラタム1から時刻をもらうサーバがストラタム2で、その下が3と、1段ごとに数字が1つ増えます。

RFC 5905 では、時刻をもらうサーバの段は15までです。16は、まだ時刻が合っていないことを表します。段が下がるほど、ずれは大きくなりやすくなります。

通信にかかる時間を差し引いて、ずれを計算する

サーバから届いた時刻を、そのまま自分の時計に書き込むことはしません。届くまでにかかった時間の分だけ、遅れた時刻になるからです。そこでNTPは、1往復で4つの時刻を記録して計算します。

クライアントNTPサーバ問い合わせ(T1入り)応答(T2とT3入り)0.000秒 T1T2 2.030秒T3 2.040秒0.080秒 T4
時間は上から下へ進みます。T1とT4はクライアントの時計で、T2とT3はサーバの時計で読んだ時刻です。この例のクライアントの時計は、サーバより約2秒遅れています。

まず、往復にかかった時間を求めます。クライアントが待った時間の T4−T1=0.080秒 から、サーバの中で過ごした T3−T2=0.010秒 を引きます。往復の時間は0.070秒で、片道は0.035秒になります。

次に、時計のずれを求めます。ずれは、T2−T1 と T3−T4 を足して2で割ると求まります。この例では 2.030 と 1.960 を足して2で割るので、クライアントの時計は1.995秒遅れています。

この式は、行きと帰りにかかる時間が同じとみなして計算しています。どちらの式も、RFC 5905 の8章に載っています。実際のNTPは、この測定をくり返し、何回分かの結果から確からしい値を選びます。クライアントは、そのずれの分だけ自分の時計を合わせます。

NTPの簡略版として、SNTPがあります。時刻をもらう相手が1台だけで、ほかの機器に時刻を配らないクライアントなどに向けたものです。今は RFC 5905 の14章に含まれています。

複数の機器のログをsyslogサーバに集めて調べるときも、各機器の時計がNTPでそろっていることが前提になります。ログを1か所に集める仕組みはSyslogの記事で説明しています。

練習問題(全5問)

Q1FTPで、ファイルの中身が流れる接続はどれ?
Q2パッシブモードの説明として正しいものは?
Q3家庭のルータの内側のPCから外のFTPサーバを使うとき、アクティブモードで転送に失敗しやすい理由は?
Q4TELNETとSSHの違いとして正しいものは?
Q5NTPの説明として正しいものは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

おすすめの本 PR

ネットワークを初めて学ぶ人向けの入門書です。

目的別の本の選び方を見る

ネットワークの記事を探す