ブラウザのURLの入力する場所にテキトーに(URLとしては存在しない)文字列を入力すると、
のように「サーバが見つかりません」と表示されますよね。(将来、hogehogeという名のサーバが存在する可能性はあります。)
全体像
Webサイト、ファイル共有など、「誰かが提供しているもの」には必ずサーバーが使われています。
それをパソコン・スマホ(これらをクライアントと呼ぶ)で閲覧したり操作したりします。電脳世界は「提供する側」(サーバー)と、「提供される側」(クライアント)でできています。
サーバーとクライアントは役割が違うだけで、機器として違いはありません。
スマホや普通のパソコンをサーバーとして使うこともできますが、スマホとかはクライアントとして使いやすいように設計されている(液晶タッチパネルなど)ので、何かともったいないって感じです。
最も使われているサーバーは?
最も使われているサーバーはWebサーバーです。その名の通り、Webサイトを提供するために使われています。
HTMLファイル、画像ファイル、プログラム(JavaScriptとか)を保持しています。クライアントがアクセスしてきたら、これらのデータを提供します。
他には↓のようなサーバーがあります。
メールサーバー
メールをするためのサーバー。
メールの送受信をするためのSMTPサーバーと、クライアントにメールを受信させるPOPサーバーがあり、これら2つを合わせてメールサーバーと呼ぶことが多いです。
メールをダウンロードしてから読むのではなく、サーバーに置いたまま読めるIMAPサーバーというのもあります。
データベースサーバー
データを保存したり、検索したりするためのサーバー。
データの管理はこれがないとめっちゃ煩雑になるので、Webサーバーを組み合わせて使われる事が多いです。
DNSサーバー
IPアドレス(数字の羅列)と、ドメイン(ニーモニックアドレスとも言う。https://www.google.comみたいな感じで、人間にとって読みやすいアドレス。)を結びつけるDNS(=Domain Name System)機能を持つサーバー。
人間にとって、IPアドレスは分かりにくいので、ドメインを使ってアクセスします。しかし、実際にはIPアドレスでないとインターネットにはアクセスできないので、IPアドレスに変換してもらいます。
DHCPサーバー
IPアドレスを自動的に割り振る機能を持つサーバー。
サーバーを作っただけでは、まだIPアドレスは振られていません。手動で設定するか、DHCPサーバーによって自動でIPアドレスを設定します。
プロキシサーバー
通信を中継するためのサーバーの総称。
大学・社内LANなどインターネットから隔離された場所から、インターネット上のサーバーにアクセスするときに使われます。例えば、特定のサイトへのアクセスを制限できます。
また、プロキシサーバーを経由すると、アクセス先から自分のアクセス元を隠せます。
サーバーによく使われているOS(Operating System)は?
LinuxというOSがよく使われています。
OSとは、コンピュータの制御をするソフトウェアのことで、iPhoneのOSなら、iOSを指します。iPhoneというハードウェアでLINEやゲームといったアプリ(アプリケーション ソフトウェア)を動かすためにiOSが裏で動いています。
また、サーバーのOSには機能が最小限しか搭載されていません。マウスで操作したければ、自分でそれ用のソフトウェアをインストールする必要があります。これはサーバーの負担を軽くするためです。24時間365日稼働させるので、少しでも燃費を良くするために、必要のないものを動かさずに済むようにしているのです。もちろん、よく使われるソフトをまとめてインストールできるセットもあります。
LinuxのUI=CUI(Command User Interface)
こんな感じの黒い画面にカタカタとコマンド(命令)を打ち込んで使います。
普通のPCはGUI(Graphical UI)といって、視覚的にマウスで操作できるUIです。
OSの種類
大きく、Window系とUnix系の2種類があります。Unix系はさらに色々な派生があり、その中でもLinux系がよく使われています。
有料のもの(マイクロソフト社のWindows Sreverなど)と、無料のもの(Ubuntuなど)があります。
ディストリビューション
Linuxをさらに色々な種類に分けると、Red HatとかUbuntuなどがある。このRed HatとかUbuntuとかをディストリビューションと呼ぶ。
コミュニティや会社がOSを配布(distribution)しているから、こういう名前。
ディストリビューションは「カーネル」と(カーネルの上に乗っている)「ツールやプログラム」で構成される。
ディストリビューションは大きく、Red Hat系と、Debian系がある。用途や好みで使い分ける。
カーネル=プログラムの起動などOSの中心の機能
カーネル=ファイルの読み書きや、メモリ管理など、基礎的・中心的な機能
このカーネルという部分だけは、ある程度同じ派閥のOSなら共通している。
ツールやプログラム=カーネルの上に乗っかるソフトウェア
ディストリビューションによって内容が違う。
シェル(コマンドを解釈するソフトウェア)などが含まれる。
サーバーの機能はソフトウェアで決まる
サーバーの機能は「どんなソフトウェアが動いているか」で決まります。
メールサーバー用のソフトウェアを入れればメールサーバーの機能を持ち、Webサーバー用のソフトを入れればWeb用の機能を持ちます。なので、1つのサーバーに複数のソフトウェアを入れて、複数の機能を持つようにすることもできます。
上の「最も使われているサーバーは?」のところで紹介した色んなサーバーにも、それぞれよく使われている(入っている)ソフトウェアがあります。例えば、メールサーバーなら、Sendmail、Postfix、Devecotなどが使われています。
サーバーは何をしているか=クライアントにデータを提供
では、そのソフトウェアで何をしているのでしょうか。
例えば、WebサーバーにはHTMLファイル、画像ファイルなどのコンテンツが保存されています。そして、クライアントのブラウザが、見たいWebサイトのURLにアクセスすると、そのサイトのデータをWebサーバーが提供し、ブラウザはコンテンツをダウンロードして閲覧することができます。
いつでもデータを提供するために、常にサーバは動いています。(時間を制限してもいいけど、しないほうがいっぱいページを見てくれますからね。サイトによってはたまに「サーバーメンテナンス」のために閲覧できなくなることがありますが。)
サーバーのハードウェアってどんなの?
この質問は「サーバーマシンの構成ってどうなってるの?」と言い換えられますね。
サーバーマシンの構成は
CPU:コンピュータの頭脳にあたる部分
メモリ:一時的にデータを保存する場所
マザーボード:CPUやメモリなどを接続しているボード(板)
ストレージ:永続的にデータを保存する場所
ネットワークカード:ネットワークに接続する口
電源
となっています。
大規模なWebサーバーなんかは、サーバーを管理する業者(データセンター)に預ける事が多いです。
サーバの操作
このようにサーバーは遠隔地において、ネットワーク経由で操作することが多いです。(直接キーボードとモニタを繋いでも操作できますが)
サーバーにあらかじめ「SSHサーバー」というソフトをインストールしておき、クライアントは「SSHクライアント」というソフトを使って操作します。これによって、SSH(Secure Shell)という暗号化して通信するためのプロトコルを使って、安全に操作できます。(出入力が暗号化されているので、通信が傍受されても、第三者は内容を理解できない)
実際に操作してみる具体的な方法の1つ=仮想マシン
普通、サーバーを操作するためには、サーバーを構築するためのサーバー用の物理的なコンピュータが必要です。
しかし、仮想コンピュータ(仮想マシン)で代用できます。その方法を見ていきましょう。
仮想コンピュータとは
仮想コンピュータとは、コンピュータの中に別のコンピュータを仮想的に作る機能です。
VirtualBox、VMwareなどの仮想化ソフトをインストールしたら作ることができます。
(よく、MacでWindowsを動かそう!みたいな話見聞きしますよね。これに関しては、MacでWindowsを使いたい人は結構多いので、専用の使いやすいサービスがいろいろあります。)
用語:仮想コンピュータを使うとき、メインで使っている(元々のPCの)OSをホストOS、その上で稼働させている仮想コンピュータ上のOSをゲストOSと呼びます。
ゲストOSを使う時は、まず、普段通りホストOSを起動し、仮想コンピュータを起動し、ゲストOSの画面を呼び出したり、ネットワークでゲストOSにアクセスして使います。
実際に使ってみた=VirtualBoxでUbuntuというOSを動かす
最後に
文体がバラバラだったりしますが、内容はそこそこあるので、誰かの知識のネットワークの埋め合わせになれば幸いです。
参考になれば、または、追記して欲しい部分があれば、コメントで教えてください^^
コメント