日々、思うこと。WEBサーバとFTPサーバについて。

徒然草2.0

【質問に回答】FTPサーバへファイルをアップするとWebサーバに反映されるのはなぜ?

私がプログラミングを教えている生徒さんから質問されたことをご紹介したいと思います。これはよくある疑問・質問なので、多くの方の参考になるのでは?と思います。

質問「FTPツールを用いて(FTPという通信手段で)ファイルのアップロードをしていますが、FTPサーバという言葉を知ってからネットワークやサーバについてよくわからなくなってしまいました。WebサーバとFTPサーバは直接つながっておらず、FTPサーバへファイルをアップロードすると、FTPサーバを経由してWebサーバへファイルがコピーされるのでしょうか?」

はじめに余談ですが、FTPは「エフテーピー」は「エフティーピー」じゃないの?って思った方がいるかもしれませんが、これは講義や会議などで発言する時に、T(ティー)やD(ディー)を聞き間違えないように、昔からの慣例でT(テー)とかD(デー)と言うことになっています。最近は学校の先生がどのように教えているかわかりませんが、私はティーと言わずテーと言うのに慣れているので、FTPと言うことにしています。みなさんは好きな言い方をしてください。

話を戻します。FTPとはファイル・トランスファー・プロトコルという意味で、日本語で言うならば、「ファイルを転送する通信ルール(通信プロトコル)」という意味です。WEBサーバは、Wehページ・ホームページを公開する仕組みになります。

FTPと同じく専門的に言えばHTTP(エイチティーティーピー)といいます。ハイパー・テキスト・トランスファー・プロトコルという意味で、日本語で言うならば、「HTMLファイルを転送する通信ルール(通信プロトコル)」という意味です。HTTPサーバと言ってもいいのですが、この動画では一般的な用語としてWebサーバと呼ぶことにします。ちなみに、サーバというのは、サービスを提供するモノという意味で、インターネット上にあるコンピュータを意味します。

ちなみにこの質問はとても良い質問です。ビギナーの人で深く考えている人であれば、まず疑問に思うところです。疑問に思わない方には、どういう意味なのか分からないかもしれませんが汗 ITエンジニアになるためには重要な部分ですね。

さて用語説明はこのくらいにして質問についてですが、私も初学者の時に質問者の方と同様によくわからなくなったので、気持ちはすごくよくわかります。

図をつかってわかりやすく回答をしていきます。

まず前提として…おさえて欲しいのですが、FTPサーバとかWEBサーバというモノの実体は基本的にありません。ここでいう「実体がない」というのは、それそのモノがないということです。

サーバとは先程も言いましたが日本語で「サービスを提供するモノ」という意味ですから、実体がないというのはおかしいのですが…コンピュータの世界では実体=モノをインスタンスと言ったりしますが、そのインスタンスは基本的にはありません。
「基本的にない」ということは例外もあると逆説的に言っているのですが、IT用語のサーバという言葉は文脈によって意味が異なるんですね。

まずは便宜的に「サーバは無い」ととらえたほうが理解がはやいです。図にはサーバの絵が書いてあるのに、おかしいと感じるかもしれませんが、「サーバは無い」と思ってください。今表示しているこの図ではコンピュータを箱のように書いてしまっています。おそらくITを勉強してまもない初学者は、サーバというコンピュータがこのような感じでイメージされると思います。質問した方も、WEBサーバとFTPサーバというこのような箱をイメージしたのでしゅ。

レンタルサーバを借りる場合も、共用Webサーバ1000円などと書かれている場合、きっとこのような図をイメージされるのでしょう。

この図でもそれほど大きな間違いはないのですが、ネットワーク上にあるコンピュータの状態を正しく捉えるためには不十分なイメージ図です。

繰り返しになりますが「FTPサーバやWEBサーバはありません」では何があるかということなのですが、通信手段を提供するサービス(コンピュータ上のプロセスといたりもしますが)その通信処理をするためのソフトウェア的なモノだけがあります。

ちょっと雑で…プロの人に「こんなんじゃない!」と怒られてしまうかもしれせんが(汗)この図を見てくださいプロのエンジニアは、こんな風にネットワーク構成図をイメージしているはずです。

ビギナーの人と見えている世界が違います。

サーバはプロセスと呼ばれる状態で動いています。だから、実は1つのコンピュータ上に複数のサーバを入れることができます。サーバにはFTPサーバやWEBサーバの他にも例を上げると…メールの送信を行うSMTPサーバ、メールの受信を行うPOP3サーバ、IPとドメインの名前を変換するためなどに使われるDNSサーバ、リモート接続を実現するためのSSHサーバ、データベースと言ってデータを格納する仕組みを提供するDBサーバなど…いろいろなサーバがあります。

1つのコンピュータにたくさんのサーバをいれると、コンピュータの性能が落ちてしまいます。また、トラブルが起こった時に問題が把握しづらいこともあります。そういう意味では各サーバは1つのコンピュータで実行しすぎないほうがよいでしょう。

例えば、WEBアプリを動かすために必要なWEBサーバとDBサーバは、特別な理由がない限り、それぞれ独立したサーバにで運用することがよくあります。

レンタルサーバ屋さんは、Webサーバという言葉をラベル・名札のように使っています。

WebサーバとFTPサーバサーバと、それとは別にDBサーバなどを提供してくれることがほとんどですが、いちいちその名称を上げるのは大変なので、これらWEBページを公開する仕組みとして「共用WEBサーバ」とか「専用WEBサーバ」とか読んでいます。

通信プロセスとしての「WEBサーバ」、色々なサービスを組み合わせたレンタルサーバやさんの商品サービスとしての「WEBサーバ」と、使い分けられているので、文脈に合わせて言葉を理解しないといけません。

不明点があれば気軽にコメント欄に書いてください。

なお、この動画には補足として続きの動画があります。そちらも合わせて御覧ください。

最後まで聞いていただき、ありがとうございました。

徒然草2.0
スポンサーリンク
シェアする
gomiryoをフォローする
ごみぶろぐ

コメント

タイトルとURLをコピーしました