みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

FTPとは???

お世話になります。

FTP(File Transfer Protocol)というプロトコルについて
教えてください。

日本語訳をすると、「ファイル転送プロトコル」であることは
暗記しているのですが、実務上、どのような場面で使用
するのかが理解できておりません。

ファイルのアップロードやダウンロードに使うプロトコルであれば
Vectorなどでソフトをダウンロードしたり、WindowsUpdateの最中
でも使われているのでしょうか?

企業などで、共有フォルダへファイルをアップロードするには、
Windowsであれば、コピー&ペーストで実現できますが、この場合
にもFTPが使われているのでしょうか?

また、単にファイル転送という観点からすると、添付ファイルを
E-mailで送受信するときにも、FTPが登場するのでしょうか?

不勉強で大変お恥ずかしいですが、FTPなるもののイメージが
把握できておりません。

FFFTPというソフトを、ホームページを更新する際に使用したことが
ありますが、ローカルPCからサーバへファイルを更新する程度
しか作業したことがないため、仕組みがわかりませんでした。

とんちんかんな質問であることは、私自身よく心得ておりますが
FTPの考え方をご教示くださいませ。

投稿日時 - 2012-01-25 23:26:11

QNo.7266745

困ってます

質問者が選んだベストアンサー

説明が長くなります。すいません。

FTPは、私がよく使ったのは、Unixサーバへ開発したソフトのコードを転送する場合や、WebサーバへのHTMLページのアップロードやダウンロード(バックアップ等)が主でした。
つまり、ファイル共有機能があればそちらでできますが、それが無い場合は、FTPを使います。
FTP自体はファイル共有機能ができるずっと前に作られた仕様なので、FTPが先で、それが面倒なのでファイル共有が出てきた、と考えると進化したという意味で判りやすいかもしれません。

Vector等のダウンロードは、HTTPが主だと思います。
ダウンロードする際、ミラーサーバとか選択できるケースにおいて、FTPサーバと書かれているものがあります。
これを選択するとFTPで転送されます。通常はHTTPであると思ってかまわないと思います。
なぜFTPが別にあるかといいますと、転送方式がFTPのほうが面倒だからです。

HTTPの場合、TCP接続1本でダウンロードできますが、FTPの場合、制御コマンドや応答の送受信に1本、さらにファイルを転送するためにもう1本接続が必要となります。
そして、FTPのファイル転送(ダウンロード)の場合、基本的に接続してくるのはサーバからになります。この場合、PC~サーバ間にルータやファイアウォールがあると、サーバからの接続要求がPCまで届かないので、転送が出来なくなります。
(正しくは、ファイルを送信する側が受け取る側へ接続を行う・・・だったかな・・・ちょっと自信ありません^^;)
FTPはこれにも対応できて、PC側からサーバへ接続を行うことができます。(こういう仕様もあります、ということ。パッシブFTPとか呼ばれます)
この場合、ルータはPCからの接続要求は通しますので、サーバに接続してサーバからファイルをダウンロードします。
(この際サーバに対して、接続を受け付ける準備をして、その受け付けてくれるIPアドレスとポートを教えて、というコマンドをサーバへ送信しておく必要があります)
FFFTPを使われたと書いてますが、この際、「PASVモードを使う」という項目にチェックを入れませんでしたか?これがパッシブFTPへの切り替えです。

この様に、FTPは転送の仕組みが面倒ですし、元々FTPはコマンドを自分で発行して転送するので、コマンドを発行しなくてもファイルのやりとりができるファイル共有機能が出来た、と。
(なお、Windowsファイル共有は、SMB(サーバメッセージブロック)というもの(プロトコル)を使います)
FFFTPを使った際、ローカルとサーバのファイル一覧の下に、何か文字が出るウィンドウがありませんでしたか?あれがFTPコマンドの送信やサーバからの応答を表示しています。

メールの場合はちょっと違いまして、ファイルを一度文字列に変換した後、タイトルや本文と一緒に送信されます。
この場合に使うプロトコルはSMTPといいます。
(文字列に変換するのはBASE64という方法です。興味があったら調べて見て下さい)

投稿日時 - 2012-01-26 00:16:21

お礼

ご丁寧にありがとうございました。

おぼろげながら、FTPについて、うっすらと輪郭が
浮かんできました…面倒臭い決めごとがあるという。

FFFTPを使ってはいましたが、パッシブモードといった
機能は全く意識してませんでした。

しかし、私自身、本当に情けないくらい理解度と
向上心のない人間だと実感しました…。

ありがとうございました m(_ _)m

投稿日時 - 2012-01-26 20:53:16

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

ああ, あと HTTP と FTP との違いとしては「ステートレスかステートフルか」という視点も挙げることができます.

例えば /A/B/C というディレクトリに FILE001 から FILE100 まで 100個のファイルがあったとして, これを全部ダウンロードするという状況を考えてみます (もちろん実際には「絶対パスで本当にルートからアクセスできる」ということではないです: 念のため).

このとき, HTTP はステートレスなので, ダウンロードするファイルはすべてフルパスで指定します. つまり
/A/B/C/FILE001 をダウンロード
/A/B/C/FILE002 をダウンロード
(中略)
/A/B/C/FILE100 をダウンロード
と指定することになります (オリジナルの HTTP では Keep-alive もないので, すべての「ダウンロード」の前後に「サーバと接続する」「接続を解除する」を追加する必要あり).

一方 FTP はステートフルで,「カレントディレクトリ」を変えればファイル名の指定だけですみます. コマンドとしては
cd /A/B/C
get FILE001
get FILE002
(中略)
get FILE100
です.

さらにいえば, FTP では「複数のファイルを 1つのコマンドで送信する」こともできます.

正直なところ, ウィンドウシステムで FTP をあからさまに使うことはないかなぁ. そういうシステムなら Web のユーザエージェントを使えば HTTP でもよろしくしてくれるし. ただ, CUI で「リモートホストとファイル転送」なら FTP とかだろうねぇ.

投稿日時 - 2012-01-26 12:03:43

お礼

ご回答ありがとうございます。

皆さまのお知恵で、だいぶFTPのイメージが掴めてきました。

'キープアライブ'という私には新たな知識も入ってきました。

ありがとうございました。

投稿日時 - 2012-01-26 21:01:01

ANo.3

SMB か CIFS か, でしょうか>#1.

ちなみに「添付ファイルを E-mailで送受信する」ときには
添付ファイル = メール本体の一部
なので (E)SMTP を使う, かなぁ.

今でこそ HTTP とかが一般的ですが, 二昔前なら「ソフトウェアを配布するときに FTP を使う」のが普通だったんだよね....

投稿日時 - 2012-01-26 00:10:00

お礼

二昔前ですか・・・。

歴史があるんですねぇ。

ありがとうございました。

投稿日時 - 2012-01-26 20:39:32

ANo.2

「ファイルのアップロードやダウンロードに使うプロトコルであれば
Vectorなどでソフトをダウンロードしたり、WindowsUpdateの最中
でも使われているのでしょうか?」
 その通りです。ブラウザからのファイルのダウンロードはftpです。また、ホームページ自体(○○.htmlや○○.jpg)をアップロードするのにも使用します。ftpはコマンドベース(CUI)なので、GUIでftpを行うメジャーなフリーソフトが「ffftp」です。

「企業などで、共有フォルダへファイルをアップロードするには、
Windowsであれば、コピー&ペーストで実現できますが、この場合
にもFTPが使われているのでしょうか?」
 違います。Windows系サーバであれば、NBT(NetBios Over TCP/IP)というプロトコルでドライブを共有して、ファイルを格納しているだけです。


「また、単にファイル転送という観点からすると、添付ファイルを
E-mailで送受信するときにも、FTPが登場するのでしょうか?」
 違います。E-mailでは添付ファイルはBASE64などのエンコード技術を使って、バイナリファイルをテキストに変換して、メールの本文の一部として送ります。プロトコルはSMTP(Simple Mail Transfer Protocol)になります。

 ftpの考え方と言うより、まずは基本となるIP(Internet Protocol)について理解した上で、アプリケーション層のftpなどを勉強するべきです。
http://ja.wikipedia.org/wiki/Internet_Protocol
http://ja.wikipedia.org/wiki/File_Transfer_Protocol

投稿日時 - 2012-01-26 00:08:40

お礼

ありがとうございます。

ftpってのは、コマンドベースだったんですか。
GUIにしたものが、'ffftp'なんですねぇ。

色々とプロトコルの概要を学ぼうと努力しているのですが、
どうも方向性が悪いようです・・・IPについても然りです・・・。

精進いたします。

ありがとうございました。

投稿日時 - 2012-01-26 20:38:18

ANo.1

Wr5

>Vectorなどでソフトをダウンロードしたり、WindowsUpdateの最中
>でも使われているのでしょうか?

DL時のURLがftp://~でなければ、HTTPプロトコルでやっているでしょう。
ルータ越えとかで問題になるパターンもあるので、WindowsUpdateもHTTPだと思いますけどね。
# パケットキャプチャで確認したわけではありませんが。

HTTPプロトコルよりFTPプロトコルの方がファイル転送自体は効率がよかった…ハズです。
# ブロードバンドが一般化している現在ではたいして差がないでしょうかねぇ。

>企業などで、共有フォルダへファイルをアップロードするには、
>Windowsであれば、コピー&ペーストで実現できますが、この場合
>にもFTPが使われているのでしょうか?

明示的に指定しない限りは、ふつ~は使いません。
Windowsファイル共有だとSMBプロトコル…ってことになるんですかね。
別の名前があったような気もしますが…。

>FFFTPというソフトを、ホームページを更新する際に使用したことが
>ありますが、ローカルPCからサーバへファイルを更新する程度
>しか作業したことがないため、仕組みがわかりませんでした。

現実としてはその程度でしょう。
一応、FTPサーバとのファイルのやりとりに使いますが…
ふつ~の人が(アップロードに)使えるFTPサービスとしたらISPなどのホームページスペース…くらいでしょうから。
ダウンロードだと…
ftp://ftp.riken.jp/Linux/ubuntu-iso/CDs/11.10/
とか……。

投稿日時 - 2012-01-25 23:45:32

お礼

ご回答ありがとうございます。

URLで、httpかftpで判断ですか…勉強になりました。

リンク先は、私にはよく解りませんでした。

ありがとうございました。

投稿日時 - 2012-01-26 20:34:24

あなたにオススメの質問