普段何気なくアクセスしているWebサイトの仕組みを理解しよう

INDEX

全ての始まりの第一歩

最近、HTMLの個人指導をしている際に気がついたことから、まずは丁寧にWebについてを説明しておくことが大事だなって思いました。我らのような普通にWebを仕事場にしている人は当たり前に理解していることでも、ただコンテンツを読んでいるだけだった側からすると、まずは聞きなれない言葉のオンパレードで混乱しがち。Webとは決して上空の雲の中にあるものではなくてある特定のコンピューターマシンから配信されていることも実はイメージしづらいかもしれません。

サーバーと呼ばれるコンピューターも実は普段みなさんが使っているパソコンと変わりはありません。ただ、24時間稼働させているものだから耐久性能の良いSSDを積んだり多くの処理を賄うために高性能なPUを積んだりすることが多いですが、一般に使っているパソコンをサーバー化することもできるんです。そう、WindowsでもMacでもサーバーになります。IPアドレスを固定させてそこを目掛けてアクセスする仕組みを整えればLAN内(ローカルネットワーク内)でプリントサーバーにもなりますし、外向きにグローバルIPアドレス(パブリックIPアドレス)を設定して接続のためにポートを開ければWebの公開も可能なんです。そう思うと、サーバーというものがグッと身近に思えてきませんか?

そもそもWebとは? インターネットとどう違うの?

インターネットではプロトコルという通信のお決まりの手順にそっていろいろなものを通信しています。Webサイトのほかにメールの送受信などもそれぞれに違うプロトコルでやり取りされているんですね。

インターネットで提供されるサービスの一部にWWW(ワールド・ワイド・ウェブ)と呼ばれるプロトコル層があります。要するにInternet ⊃ WWW。このWWWがWebサイトを公開できる領域で『http』または『https』のプロトコルでWebサイトを見るきまりを司どっています。
インターネットにはいくつかの階層があって、一番上の階層がHTTP&HTTPSのアプリケーション層と呼ばれます。他にはFTP(ファイルトランスファプロトコル)やメールの送受信に利用されるSMTPやPOP3などもここ。そんな感じで、専用のプロトコルによって様々な通信が行われているわけです。

まぁ、そういうイメージだけでもざっくりと掴んでそれぞれの通信の違いが分かればWebサイトで利用するHTML文書(ハイパーテキストマックアップ言語)の理解も進めやすくなると思いますよ。そう、HTTPもHTTPSもこのHTML文書のやり取りを行うために用意されたプロトコルなんです。

WWWにアクセスするためにWebサーバーが必要

通信の仕組みがなんとなくわかってきましたか?
そこへWebサイトとして情報をアップするためにインターネットへのゲートを備えたサーバーというコンピュータマシンを用意して準備していきます。

サーバーにするためにはポートの設定などのネットワーク管理が必要です。そのためWindowsでもMacでもそういう機能を加えた上位のOS(オペレーションシステム)が用意されています。残念なことにこれらは結構高額なOS代を支払わないと利用できないので、Webサーバー構築にはオープンソースのLinuxを利用していくことが一般的でしょうか。現に、レンタルサーバーでもほぼこのLinuxで運用しているところがほとんどだと思います。Windowsサーバーを利用する場合はWeb以外に何か特別なシステムを稼働させることを目的にしている場合が多いんじゃないでしょうかね。WordPressやDrupalなどでサイトを構築する場合はPHPというサーバーサイドの言語モジュールを追加すればOKですのでね、ありがたくこの無償のオープンソースを利用させていただきましょう。

オープンソースのLinuxを使ってみよう

一概にLinuxと言っても分かりませんよね?

LinuxはWindowsやMacと同じようなOS(オペーレーションシステム)の一種なんですが、その中にもディストリビューションと呼ばれる仕立ての違うものが幾つもあります。有償なものもありますけれど、無償で利用できるオープンソースのものがたくさんあって、それを利用すればWebサーバーをメインに仕立てるのならば十分です。2023年現在では古くから利用者の多かったCentoOsがバージョン8を最後にサポートを打ち切りましたので、UbuntuもしくはDebianという名称のLinuxでディストリビューションがおすすめですね。私のサーバーもこのどちらかを利用することが多いです。

ディストリビューションとはメモリやハードウェアにアクセスするような基本的な命令を司る『カーネル』と呼ばれるベースソフトウェアに諸々の便利に使えるソフトウエアを(Webサーバーもこの一つ)パッケージ化して提供しているもののことです。

UbuntuとDebianはそもそも兄弟のような間柄でDebianがお兄さん。ルート構造(ディレクトリ構造)もほぼ同じですのでどちらを選んでも大丈夫。ただ、Ubuntuの方がインストール時にrootと呼ばれるスーパーユーザーを設定しないので初心者に対してはセキュリティーは高めかも。もちろんインストール後に設定も可能ですし、アクセス制限をかけるのは容易にできますのでこれはお好みの問題ですが。

インストール時にどのソフトを組み入れるか選択できます

ここではWebサーバーをメインに解説していきますが、Ubuntuインストールの記事は過去に書いてますのでどうぞそちらを参考になさってください。

あわせて読みたい
Server-01 NginxでWeb環境を構築その1- Ubuntuインストール編 「迷ったらNginxにしておけ」 って言葉をよく聞きますね。そもそもはPHPの動的処理は苦手とされてたNginxでしたけど。

私の場合はこのUbuntuもしくはDebianを最小構成でインストールしたのちにブラウザ上で管理可能なVirtualminというサーバー管理ソフトをインストールします。その時にそのOS構成に沿って必要なソフトウエアを一緒にインストールしてくれるのでこの最小構成にしています。その詳細をServer-01 NginxでWeb環境を構築その1- Ubuntuインストール編で書いていますのでどうぞ参考になさってくださいね。

一般的にはWeb公開するために必要な仕組みを整えてくれる『Webサーバー』を追加したら準備はほぼ整います。このように必要に応じてWeb以外でもいろいろなサーバーにもしていけますよ。

Webサーバーの種類もいくつかあるんです

このWebサーバーにも『Apache』や『Nginx』や『OpenLiteSpeed』などいくつかあります。どれも、仮想ホスト(バーチャルホスト)という機能が使え、サーバーの持っている一つのIPアドレスを共用していくつものドメインでWebサイトを構築できますし、追加でメールシステムをインストールすれば同じ仮想ホストの管理下でメールの利用も可能になります。もちろんオープンソースですが、上位バージョンもあってそれらは有償なものもあります。それは必要に合わせてアップグレードすればいいと思いますが、ほぼこのオープンソース版で私はまかなえてますね。

過去の記事では『迷ったらNginxにしておけ』などと書いてますが、いろいろなレンタルサーバーを見てもWordPressなどのPHP構成のCMS(コンテンツマネージメントシステム)はApacheで実稼働させているものがほとんど。なので自分で構築する場合はApacheでいいような気がします。実際、個人的な印象ではありますが、アパッチの方が手がかからないという大きなメリットもありますからね。リバースプロキシと呼ばれる1アクションを追加したい場合などはApacheとNginxを2つインストールする方もいらっしゃいます。

公開するサイトが育ってきてアクセス数が多くなってからサーバーを乗り換えるなどの方法も取れるので、最初の一歩で始めるならば「管理を簡単にしたいならApache」という感じに覚えておくといいかも。

サーバーのもつIPアドレスがネット上の住所(アドレス)になります

専用サーバもしくはVPSサーバーを契約したら独立した専用のIPアドレスが一つ与えられますので、それがネット上のアドレスになります。レンタルサーバーの場合は先に話した仮想ホスト(バーチャルホスト)の1つの契約なので一つのサーバー内の他の契約者と同じIPアドレスでサイトを運用していくことになります。
自宅のコンピューターをサーバー化した場合は契約しているプロバイダがルーターに向けて割り振られたIPアドレスがサーバーのIPアドレスになるんですけど、通常はこれは動的に変更されるIPアドレスなので別途固定IPの契約が必要になる場合が多いですね。ただ、この契約もそこそこ費用が掛かりますので、それだったらVPSサーバーを借りてLinuxをインストールしてお使いになるほうがいいと思います。

IPとIPアドレスとは?

IPとはインターネットプロトコル(Internet Protocol)の省略した呼び方。Internet Protocol はインターネットを定義する要素の1つで、先に話したネットワーク階層の中間あたりに位置するワーキング・プロトコルです。

それは通信相手を特定するための「IPアドレス」に基づき、パケットを別のネットワークにある端末まで届ける役割を担うんですね。
そもそも、すべてのホストにIPアドレスは振り分けられていてこれによって発信者、受信者をIPアドレスにより特定することができるんです。
IPアドレスにもグローバルIPアドレスという世界中のインターネットで一元的に管理されているものとプライベートIPアドレスという家庭内や企業内で利用している私的なネットワークのものとに分けられます。
通常ネットワークでアクセス可能なサーバーはこのグローバルIPアドレスを一つ以上割り振られていますので、それがネット上のサーバー住所になります。

IPv4とIPv6

IPv4(Internet Protocol Version 4)は32ビットを8ビット(オクテット)ずつに区切って10進数の整数値で表示されています。
たとえば

210.152.243.234

こういうIPアドレスは見たことありませんか?
これがIPv4の表し方ですね。
2の32乗の数だけ用意されていたのにどうやら足りなくなるぞということになって、新しくIPv6というものが登場してきました。
なんとIPv6は128ビットです。

2128 = 340 282 366 920 938 463 463 374 607 431 768 211 456

という数ですので当分は枯渇の心配はないかもしれませんね。
現在も主に使われているのはIPv4ですが、徐々にIPv6での通信に移行し始めました。

IPアドレスでは分かりずらいサイトをドメインに置き換えるDNS

210.152.243.234

上で例にしたこのIPアドレスですが実は東京大学のWebサイトのIPアドレスです。
こういう数字だけのIPアドレスでは人間はすぐにどこのサイトか認識できません。よってこの数字だけのIPアドレスをドメインに置き換えるようにするのがDNS(Domain Name System)です。

上記に書いたとおり、Webサーバーは1つのIPアドレスで複数のサイトを表示させる機能を持っているので、いくつものドメインが同じIPアドレスのサーバーで運用されています。

正引きはドメインからIPアドレスに。逆引きはIPアドレスからドメインに紐づけられたいます。DNS設定はDNSサーバー(別名ネームサーバー)にて行われます。DNSサーバーもLinuxに搭載することも可能なんです。有名なところではBIND DNS サーバーというもの。ただ、ドメインを取得した管理会社も通常このDNS設定が可能なサーバーを持っていますので、一般的にはそこでDNS設定をしてしまえば名前解決します。Google Domainももちろん大丈夫でした。

デフォルトの規格ではアクセスポートは80と443

Webサーバーが準備できるとサイト公開のシステムが整います。通常http://から始まる平文のプロトコル(通信の手順の決まり)の通信は80番ポートでアクセスされます。一方、暗号化されたhttps://のセキュアなプロトコルは443番ポート。通常利用ではあまりポート番号を意識することはないかもしれませんが、知っていると制限的な公開をする時などには役立ちます。ただし、そういう権限を持てるのはサーバー管理者だけなのでレンタルサーバーでは無理なんですね。トータルで管理したい時などには専用サーバーを借りるかVPSと呼ばれる仮想サーバーを借りれば大丈夫です。昨今、レンタルサーバーの料金とVPSサーバーのレンタル料金に大差はないので全て細かく管理したいならVPSをお借りになることをお勧めします。

昨今はWebはほぼWordPressやDrupalのようなCMSで運用されることがほとんどなので、ログインなどに平文のHTTPプロトコルで通信するの危険です。そういう事情もあり、WebではHTTPSのセキュアな通信を推奨するようになりました。SSLと呼ばれる通信の証明書も今では無償ものも出てきているのでハードルも下がりましたね。どんどん皆さんもHTTPSへと移行していらっしゃることでしょう。

ポートは指定可能です

さて、このポートはサーバー管理者が閉じたり開けたり任意に設定が可能。URLの後ろに:10001などのようにポート番号を指定すればその番号のポートにアクセスできるので、スペシャルなアクセス制限をかける時などは有効です。
例えば

https://www.momo-s.info
ならばデフォルトの443ポートでアクセスしますが、
https://www/momo-s.info:76543
とすると同IPアドレスの76543番ポートへアクセスするという仕組みです。

ブラウザでログインできるサーバー管理画面などはこの特殊ポートでアクセスするように設定されている場合が多いと思います。
ここ百聞で利用しているvirtualminのポートも特別なものを設定しています(更にはVPNでIP指定でのポート番号にしていまっす)
セキュリティーについてはまた別途記事にしたいと思っています。やってやりすぎってことはないのでしっかりセキュリティーは固めていきましょう。

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

著者紹介

過去に"MOMO'S Web Design"というPerlで書いたCGIの配布サイトを運営。開設から半年で40万ダウンロード達成しました。 現在は東京都内の某大学で講師とWeb系で研究とお仕事をしています。得意なものはWordPressとDrupal。PHPやJavaScriptであれこれと。今までの研究を活かして自分のブログやってます。

INDEX