 |
|  |
◆固有の動作(FTPアクティブモード)
※動作確認は、YAMAHA RTX1000ルータで確認しています。コマンド、出力結果、動作は、機種、ファームウェアのバージョンで異なる場合があります。
資格取得が就職、転職、派遣に有利なのは確かですが、「資格=即戦力」とは言えません。実機を操作して資格取得と同時に就職・転職・派遣後に求められるエンジニア(仕事・ジョブ・ワークの達人)としての即戦力を養いましょう。
◆固有の動作(FTPアクティブモード)
FTPの通信には、PORTモード(アクティブモード)とPASVモード(パッシブモード)があります。ここでは、アクティブモードについて説明してゆきます。
アクティブモードは、多くのFTPソフトウェアで、デフォルトの転送モードになっています。
このモードでは、データコネクションは、制御コネクションとは異なり、FTPサーバ側の20番ポートからクライアントの任意のポートに向けてコネクションが確立されます。
FTPサーバ側からコネクションを張るために、サーバはクライアントのIPアドレスとポート番号を知っている必要があります。これらは、制御コネクション時のPORTコマンドで、FTPサーバに通知されるようになっています。
ここで、注意が必要です。データコネクションの方向が、FTPサーバ側からクライアント方向になっています。
これは、ファイルのダウンロード、アップロードにかかわらず、FTPサーバ側からコネクションが確立されるということです。
ファイルをアップロードする場合には、クライアントから通信が始まるのでは?
と疑問に思うかもしれませんが、アップロードもFTPサーバからコネクションが始まります。
このデータコネクションの方向が、いくつかの問題を引き起こします。
まずは、ファイアウォールのセキュリティの問題です。
クライアントのポート番号は、任意(1,024以上)である為、FTPで通信を行う為には、FTPサーバ側からの
データコネクションのポートをファイアウォールで開けておく必要があります。1,024以上のポートの全て開けておくということは非常にリスクが高くなります。
その他にも、サーバからクライアント方向へデータコネクションを確立する際に、問題がさらに発生してきます。
アクティブモードでは、ファイルのダウンロード、アップロードにかかわらず、下図のようにFTPサーバ側からコネクションが確立されるようになっています。
データ転送時、クライアントは、PORTコマンドで、自分の接続を待ち受けるIPアドレスとポート番号をFTPサーバに通知します。
PORTコマンドは、以下のように指定するようになっています。
PORT aaa,bbb,ccc,ddd,ee,ff
aaa,bbb,ccc,ddd ・・・ クライアントの待ち受けIPアドレスを指します。
ee,ff ・・・ クライアントの待ち受けポート番号を指します。
上の図のポート番号の場合のPORTコマンドは次のようになります。
PORT 192,168,1,1,11,185
ここで、疑問が生じてきます。なぜ、ポート番号の「3001」が、「11」と「185」になるのかです。
そのからくりは、このようになっています。
10進数の3001を16進数に変換すると下記のようになります。
(3001)10=(0BB9)16
16進数の(0BB9)16をオクテットに分割し、その各々を10進数に変換します。
(0B)16=(11)10
(B9)16=(185)10
また、(11)10は、8ビットシフト移動させたものなので、次のことが成り立ちます。
3001=11×256+185
アクティブモードのデータ転送の様子をもう少し詳しく見てゆくと、クライアントとサーバのシーケンスは、下表のようになります。
クライアント |
内容 |
サーバ |
任意 |
---> PORT aaa,bbb,ccc,ddd,ee,ff ---> |
21 |
任意 |
<--- PORT command successfull <--- |
21 |
任意 |
---> RETR filename ---> |
21 |
ee*256+ff |
<--- ( SYN ) <--- |
20 |
ee*256+ff |
---> ( SYN , ACK ) ---> |
20 |
ee*256+ff |
<--- ( ACK ) <--- |
20 |
任意 |
<--- Opening ASCII mode data connection <--- |
21 |
ee*256+ff |
( ファイルのダウンロード )
・
・
・ |
20 |
任意 |
<--- Transfer complete. <--- |
21 |
◆アクティブモードは、ファイアウォールとNATとの相性が悪い
クライアントが、ファイアウォールの内側に位置する場合、アクティブモードのFTPは、失敗する場合がほとんどです。それは、多くのファイアウォールは、セキュリティの問題から外部からのSYNを拒否する設定を行っている場合があるからです。
また、クライアントがNATルータの配下にある場合も問題になってきます。
NATやIPマスカレードでは、IPアドレスやポート番号が変換されます。そのため、PORTコマンドで渡される値も書換える必要があります。
その理由は、PORTコマンドで通知されるIPアドレスとポート番号では、クライアントと通信を行うことができないからです。変換される前の内部のIPアドレスとポート番号を使って通信することができません。NATで変換されるIPアドレスとポート番号で通信する必要があります。
そのため、PORTコマンドの引数を書き換える必要があります。PORTコマンドの引数は10進表記であり、IPアドレスとポート番号の値の文字列の長さが変わるので、チェックサムを書き換える必要も出てきます。
このような、複雑な処理が必要なため、PORTコマンドの書換えに対応していないNATルータも存在し、NATルータの配下にクライアントがある場合、FTP通信が行えないという問題があります。
「固有の動作(FTPの通信)」 ← 前項 | 次項 → 「固有の動作(FTPパッシブモード)」
<ネットワーク資格の練習問題に挑戦> ●CCNA練習問題に挑戦!(650問)
●Network+練習問題に挑戦!(393問)
●テクニカルエンジニア(ネットワーク)試験
◆Cisco実機で学ぶ(CCNAスイッチ編) |
 |
|
<関連メニュー>
●CCNA実機で学ぶ
●CCNP実機で学ぶ
●CCENT(ICND1)実機で学ぶ
●ICND2実機で学ぶ
●SDMで設定する(Cisco実機で学ぶ)
●CCENT・CCNA無線実機で学ぶ
●アライドテレシス実機で学ぶ
●YAMAHAルータ実機で学ぶ
●TCP/IP入門・無料ネットワークツール
●PLCでホームネットワーク構築
|
|
 |