こんにちは!当コラム担当の高原です!専業アフィリエイター歴8年で、WEBメディア運営会社を経営しています。
Twitter(@Koshiro_Taka)でも役立つ情報をつぶやきますので、よかったらぜひフォローしてくださいね^^
ホームページを作ったことのある方は、FTPがどういうものか簡単には理解していると思います。
でもなんとなくは分かっているようで、実は理解している人は結構少なかったり・・・。
FTPについて一度理解しておけば、ワードプレスやCMS、HTMLサイト作成時のイレギュラーな状況に素早く対応することができます。
今回はわかっているようで実はよくわからないFTPについて解説をしていきます。
この記事の内容を一読しておくと、さまざまな場面で作業がスムーズにいくので、ぜひ頭に入れておいてください!
FTPとは
そもそもFTPとは?何かの頭文字をとってきてるのは何となく想像ができますよね?
FTPとは「File Transfer Protocol」の頭文字をとったもの。
直訳するとファイルを転送する覚え書きとなります。
要するにファイル転送(送受信などの通信)に係る決まり事です。
WEBサイトを公開するためには、自分で作成したデータ(HTMLファイルやその他のファイル、文章、画像データ、音声データなど)をWEBサーバーに転送複製しなければなりません。
これは皆さんもよく知っているWEBの常識ですね。
この転送作業を経た後にやっと一般公開となりますが、この転送作業を代わりに行ってくれるのがFTPクライアントソフトです。
だた、近年ではWordPressなどのCMS(Contents Management System)の普及によりFTPの必要性が以前と比べ少なくなってきました。
それでもWEBサイトの制作会社では未だFTPは重宝されています。
FTPとは、「File Transfer Protocol」の頭文字をとった、ファイル転送作業を指す
FTPサーバーとFTPクライアント
仕組みを説明する前にもう少しだけFTPについて基本的な部分を解説します。
FTPサーバーとFTPクライアントの関係は、いわば送信と受信の違いだと思ってください。
HTMLファイルなどを作成しそれらを転送する側のコンピューターはFTPクライアントとなります。
逆にレンタルサーバーなどのようなWEBサイトを公開するために関連ファイルを転送される側のサーバーはFTPサーバーとなります。
FTPサーバーとFTPクライアントは送信と受信の違い
FTPの仕組み
冒頭でも簡単に説明しましたが、FTPとは中継のための手段(通信をつなぐ仕組み自体のこと)であり、FTPクライアントとFTPサーバーの両者間でのデータのやり取りのことを指します。
このやり取りは「PI」と「DTP」の2つのプログラムが動作して行われています。
これらは意識する必要はありませんがファイル転送には不可欠な役割であり、この2つが揃って初めてファイルの転送作業が実現できます。
PI
PIとは「Protocol Interpreter(プロトコル・インタプリタ)」の頭文字を取った略語です。
転送指示などの内容をプロトコル(覚え書き)にインタプリタ(翻訳)する役割があります。
PIはサーバーサイトどクライアントサイド双方に存在し、常に相互通信を行っています。
クライアント側PIではユーザーからのFTPコマンドを自動解釈し、それをFTPプロトコルに変換したのちサーバーへ命令を下します。
サーバー側PIでは、送られてきたプロトコルをサーバー側でインタプリタして指定された動作を実行します。
なぜこのような小難しい動作を挟まないといけないのか?
それはプログラムは全て単体動作の連続だからです。
例えば貴方が○○ディレクトリの中の○○ファイルを開きたいと思ったとします。
これを一連の動作で行おうと思っても命令言語は一つ一つ分解しないと理解できません。
- まずは○○ディレクトリを選択
- 次に開く動作をする
- 更にその次にその中の○○ファイルを選択
- 最後にそのファイルをどうするか(実行、変更、削除なのか)を決定する
というように、プログラムでは細分化されて命令を出す必要があります。
これらの作業は普段意識する必要はありませんが、PIとはそれらの動作を自動で分解して伝えてくれる仕組みなのです。
PIとは…
転送指示などの内容をプロトコル(覚え書き)にインタプリタ(翻訳)する役割
DTP
DTPとは「Data Transfer Proccess(データトランスファープロセス)」の略です。
使用されるファイルシステムのアクセス部分を指します。
現在は技術の発展と共通化によりあまり問題視されることはなくなりましたが、ファイル転送と一口に言ってもOS(WindowsやMacなど)毎にファイルシステムの仕組みや格納構造、フォーマットなど全て異なってきます。
転送元はWindowsでも転送先のOSは別のOSだった場合、規格や仕様の違いからそのまま理解できるとは限りません。
これらをモジュール化し転送時に使い分けることで、様々なOSにも対応できるマルチプラットフォームが実現できています。
DTPとは…
使用されるファイルシステムのアクセス部分を指す
様々なOSにも対応できるマルチプラットフォームが実現
コントロールコネクションとデータコネクション
FTPのもう一つの特徴が「コントロールコネクション」と「データコネクション」を分離させている点です。
クライアント側のユーザーPIは、サーバー側のサーバーPIに対しコネクションを発行します。
この時、サーバーでは21番ポートを開放して使用できるようにしユーザーからアクセスを待ちます。
これを「コントロールコネクション」と呼び、HTTPやSMTPと同じようにクライアントからのコマンドを実行し、結果ステータスなどを返します。
一方で実際のファイルデータの転送などはDTPが受け持ちます。
この動作を「データコネクション」と呼びます。
データコネクションとは…
データコネクションに使用するポートはコントロールコネクションとは異なりますので、HTTPやSMTPでのポート接続は常に一つだけですがFTPでは2つのポートを使用します。
データコネクションを別に発行する理由はデータ転送などをスムーズに行うためです。
先にも述べたように、プログラムは単一処理の連続で成り立っています。
もし一つのポートで命令系統と転送を同時に行った場合、大容量のデータを転送中にはそのデータの転送終了まで別の処理は実行できません。
これを分けることで転送途中でも同時に別の命令を判断でき、同時にいくつものファイルを転送できるようになっています。
なお、データコネクションで送受信されるのは物理ファイルとその一覧のみで、ステータスなどの実行結果は全てコントロールコネクションを通じて返されます。
ポートとは…
少し蛇足になりますが、ポートについても解説しておきます。
ポートとは様々な機器との接続窓口と思ってください。
この窓口であるポートには全て法則があり、どの窓口を何が使うかは予め決まっています。
例えばWEBサイトを観覧する際にはインターネットデータを受信する必要がありますが、これには80番ポートが使用されています。
また今回のテーマであるFTPには20番と21番ポートが使用されます。
コントロールコネクション:
21番ポートを開放して使用できるようにしユーザーからアクセスを待つ
データコネクション:
実際のファイルデータの転送などはDTPが受け持ちする
FTPの内部動作について
ほぼ全てのユーザーはGUI(Graphical User Interface)と呼ばれる視覚的に操作できるツール(FFFTPのようなFTPクライアントソフト)を使用してサーバーにアップロードしていると思います。
FTPはtelnetを基に開発されているため、ASCIIと呼ばれるコードをベースにした
- コマンド(命令)
- レスポンス(結果)
によって成り立ちます。
リクエストは全てコマンドとオプションで構成されているのです。
レスポンスはレスポンスコードと呼ばれる3桁の数字で構成されます。
レスポンスコードには個別で番号に対応する意味が定められています。
レスポンスコードについては、mozira公式サイトに解説があったので、こちらをご参考ください。
FTPはtelnetを基に開発されている。
ASCIIをベースにしたコマンド(命令)とレスポンス(結果)で成り立つ
バイナリモードとアスキーモード
FTPで転送を行う場合には暗号化処理はされません。従ってFTPはセキュリティ性に乏しくなります。
しかし様々な環境の変化に伴いSFTPと呼ばれるセキュリティ性も兼ね備えたFTPが登場したことで、全ての転送処理に暗号化処理が施されるようになりました。
SFTPの転送モード選択にはバイナリモードしかないため、アスキーモードを知っているユーザーは少ないかもしれません。
アスキーモードとは、LinuxとWindowsなど異なるOSで存在する改行コードの違いを自動で補正して転送するモードです。
昔は開発環境と本番環境が別々のOSで行われることがしばしばあり、改行コードの違いで動作しないことも頻発しいました。
そのため、アスキーモードは開発する側にとってとても重宝する機能でした。
最近では開発環境やエディタの進化により改行コードも整備され、アスキーモードでアップロードするメリットはほぼなくなりました。
逆に改行コードが補正されることでファイルの破損などを引き起こす可能性もあります。
一方バイナリモードとはデータをそのまま無補正で転送するモードです。
動画や画像などは、内部データを補正すると破損してしまうので常にこのモードが使用されます。
バイナリモードはデータを無補正で転送するモード。
アスキーモードは異なるOSの改行コードの違いを自動で補正して転送するモード
最近ではアスキーモードを使うメリットはほぼなくなった。
まとめ
いかがでしたか?CMSの台頭により今ではホームページ制作においてCMSカスタマイズのみといった事案が増えてきています。
しかし、CMSを使わないサイトもまだまだあります。
それらのサイトデータをサーバーからダウンロードしたり、逆に更新したデータをサーバーにアップロードする際には、FTP(もしくはSFTP)が必要になります。
これを機にもう一度勉強してみるとよいかもしれませんね。
【レンタルサーバーならmixhostがオススメ!】
mixhostは同価格帯で最もハイスペックで、自身をもってご紹介できる高品質サーバーです。
低料金で安定・高速通信が可能な秘密をぜひ確認してみて下さい!