embOS / IP FTPサーバ
embOS / IP FTPサーバ
embOS / IP FTPサーバ
embOS / IPのFTPサーバがスタックにFTPプロトコルを追加するオプションを拡張したものです。FTPはFile Transfer Protocolの略。それはインターネットなどのTCP / IPベースのネットワークを介してマシン間でファイルを移動するための基本的なメカニズムです。FTPは一台のマシンは、クライアントが、別のマシン、サーバにコンタクトしてリクエストを行うことによってファイル転送を開始することを意味し、クライアント/サーバプロトコルです。サーバは、OPER-なければなりません
、クライアントが自分の要求を開始する前にating。ほとんどのサーバが同時に複数のクライアントで動作するように設計されている間、一般にクライアントは、一度に1つのサーバーと通信します。
Webサーバーは、コメント(RFC)は、次のリクエストの関連する部分を実装しています。
RFC | 説明 |
---|---|
[RFC 959] | FTP -ファイル転送プロトコル の直接リンク:http://tools.ietf.org/html/rfc959 |
機能リスト
- 低メモリフットプリント。
- 複数の接続はサポートされています。
- ファイルシステムに依存しない:すべてのファイルシステムを使用することができます。
- TCP / IPスタックの独立:ソケットを持つすべてのスタックを使用することができます。
- Microsoft Visual Studio用のPC上で実行可能ファイルのプロジェクトが含まれています。
要件
TCP / IPスタック
embOS / IPのFTPサーバは、TCP / IPスタックが必要です。それはembOS / IP用に最適化されていますが、任意のRFC準拠のTCP / IPスタックを使用することができます。出荷は、標準のWinsock APIとembOS / IPのソケットAPIを使用して実装を使用するWin32のシミュレーションが含まれています。
タスキング、マルチ
FTPサーバが別のスレッドとして実行する必要があります。そのため、マルチタスクシステムはembOS / IP FTPサーバを使用する必要があります。
FTPの背景
ファイル転送プロトコル(FTP)は、アプリケーション層のプロトコルです。FTPは、それが2つのポート、"データ"ポートと"CMD"(コマンド)ポートを利用するという点で珍しいサービスです。伝統的にこれらは、コマンドポートとデータポートのポート20ポート21です。FTPは2つのモードが、アクティブとパッシブで使用することができます。モードに応じて、データポートはポート20で常にではありません。
するときにFTPクライアントがサーバ、TCP接続は2つのマシン間で確立されます。それが動作を開始するときに、サーバーは(ソケットを聞いている)パッシブオープンを行い、その後クライアントは、アクティブオープンを介してサーバーと接続することができます。このTCP接続は、クライアントがサーバーとのセッションを維持し、(通常は人間のユーザーによって決定される)と、サーバーにクライアントからのコマンドを伝達するために使用されている、とサーバがクライアントに戻って応答する限り持続する。この接続は、FTPコマンド接続と呼ばれます。
クライアントからサーバへのFTPコマンドは、オプションのコマンドパラメータが続く、ASCII文字の短いセットで構成されています。例えば、現在の作業ディレクトリを表示するには、FTPコマンドは、PWD(プリント作業ディレクトリ)です。すべてのコマンドは、キャリッジリターンとラインフィードのシーケンス(CRLF)(;またはCtrl - J、Ctrlキーを押しながらM ASCII 10,13)で終端されています。サーバの応答は、いくつかの説明文に続いて3桁のコード(ASCII)で構成されます。一般的に200型のコードは、成功であり、500Sは障害です。コードを返信するための完全なガイドのためのRFCを参照してください。ほとんどのFTPクライアントは、ユーザーがコマンドの進捗状況として、これらのコードを参照できるようにする冗長モードをサポートしています。
FTPコマンドは、サーバがデータ(ファイルなど)の大部分を移動する必要がある場合は、番目のTCP接続は、これを実行する必要があります。これは、FTPデータ接続(のような前述のコマンドの接続ではなく)と呼ばれています。アクティブモードでのデータ接続は、バックリスニングサーバからクライアントに開かれます。パッシブモードでは、クライアントはまた、データ接続を開きます。データ接続は、持続
に必要なデータを転送する。それは、すぐにすべてのデータが送信されたとしてクローズされます。
アクティブモードFTP
クライアントFTPアクティブモードではランダムな非特権ポートP(P> 1023)からFTPサーバのコマンドポート、ポート21に接続します。その後、クライアントはポートP +1にリスニングを開始し、FTPサーバにFTPコマンドPORT P +1を送信します。次に、サーバーはポート20です、そのローカルデータポート、から戻ってクライアントの指定されたデータポートに接続します。
パッシブモードのFTP
クライアントFTPパッシブモードではランダムな非特権ポートP(P> 1023)からFTPサーバのコマンドポート、ポート21に接続します。クライアントのデータ転送にパッシブポートをオープンし、サーバー側から接続を待機するアクティブモードFTP接続の反対側には、クライアントがパッシブモードで?PASVを送信?サーバへのコマンドとサーバがデータ接続を待機しているポート上で情報を持って答えを期待しています。
この情報を受け取った後、クライアントはそのローカルデータポートからのサーバの指定されたデータポートに接続します。
FTPの応答コード
すべてのFTPコマンドは[RFC 959]で定義された1つ以上の応答コードで応答されます。応答は、FTPコマンドに応答して制御コネクションを介してユーザにサーバから送られる(肯定的または否定的な)です。応答の一般的な形式は、スペースに続いて3桁の終了コード(エラーコードを含む)です。
プログラムで使用するため、テキストは通常人間のユーザーを対象としています。
応答コードの最初の数字はレスポンスのクラスを定義します。最初の桁には、5つの値があります。
- 1yz:正予備返信
- 2yz:肯定完了返答
- 3yz:肯定的な中間応答
- 4yz:一時的な否定的な完了応答
- 5yz:永久的な否定的な完了応答
- 5yz:永久的な否定的な完了応
応答コードの2桁目は応答のグループを定義します。
- x0z:構文-構文エラー、どんな適合しない構文上正しいコマンドは,機能的な未実装または不要なコマンド。
- x1z:情報 - これらは状態やヘルプなどの情報、要求に対する応答です。
- x2z:接続 - 制御とデータ接続を参照して返信。
- x3z:認証およびアカウンティング - ログインプロセスと会計処理のための返信。
- x4z:まだとして指定されていない。
- x5z:ファイルシステム - これらの応答は、サーバのファイルシステム向かい合って要求された転送または他のファイルシステムのアクションのステータスを示します。
3桁目は桁目で指定された関数の各カテゴリにおける意味の細かい階調を、与える。
サポートされるFTPコマンド
embOS / IPのFTPサーバは、定義されたFTPコマンドのサブセットをサポートしています。[RFC 959] FTPコマンドの完全なdeteailed説明については、表を参照してください。
次のFTPコマンドが実装されています:
FTPコマンド | 説明 |
---|---|
CDUP | 親ディレクトリに移動します |
CWD | 作業ディレクトリを変更します。 |
DELE | 削除 |
LIST | 一覧 |
MKD | ディレクトリを作る |
NLST | 名前のリスト |
NOOP | ノーオペレーション |
合否 | パスワード |
PASV | Passiv |
PORT | データポート |
PWD | 現在の作業ディレクトリを表示 |
RETR | 取得 |
RMD | ディレクトリを削除します。 |
SIZE | ファイルのサイズ |
STOR | ストア |
SYST | システム |
TYPE | 表現型 |
USER | ユーザー名 |
XCUP | 親ディレクトリに移動します |
XMKD | ディレクトリを作る |
XPWD | 現在の作業ディレクトリを表示 |
XRMD | ディレクトリを削除します。 |
リソースの使用状況
ROMの使用量は、コンパイラオプション、コンパイラのバージョンと使用するCPUに依存します。ARM7、IAR Embedded WorkbenchはV5.11、Thumbモード、サイズの最適化:下の表に表示されているFTPサーバのメモリ要件は、次のようにシステム上で測定されている。
コンフィギュレーションに使用
#FTPS_AUTH_BUFFER_SIZE 32定義
128はFTPS_BUFFER_SIZE定義#
#FTPS_MAX_PATH 128定義
#FTPS_MAX_PATH_DIR 64を定義
#FTPS_ERR_BUFFER_SIZEを(FTPS_BUFFER_SIZE / 2)の定義
ROMの使い方
アドオン | ROM [キロバイト] |
---|---|
embOS / IP FTPサーバ | 6.8 |
RAM使用量
タスク | 説明 | RAM [バイト] |
---|---|---|
ParentTask | 着信接続をリッスンします | 500 |
ChildTask | 要求を処理 | 1800 |
FTPサーバーには、少なくとも1つの子タスクが必要です。
FTPサーバでは約RAM使用量は次のように計算することができます。
RAM使用量= 0.2 Kバイト+ ParentTask +(NumberOfChildTasks * 1.8キロバイト)
例:1のみ接続を受け入れるFTPサーバ
RAM使用量= 0.2 Kバイト+ 0.5 Kバイト+(1 * 1.8 Kバイト)
RAM使用量= 2.5キロバイト