ここでは、WEBを使ったシステム構築を行うためには欠かせない、ネットワーク技術について解説します。
WEBページが表示されるまで
あなたがこのサイトを見ている時点で、すでに様々なネットワーク技術が利用されています。
たとえばこのページが表示されるために、どのような処理がされているのか説明します。
- ブラウザで「http://○○○○.com/page1/」にアクセスする
- ブラウザはURLからドメインを抜き出す(○○○○.comの部分)
- ブラウザはDNSサーバに、ドメイン「○○○○.com」のIPアドレスを問い合わせる
- DNSサーバはIPアドレスを返す
- ブラウザはサーバのIPアドレスにHTTPリクエストを行う
- WEBサーバが通信OKなことを意味するHTTPレスポンスを返す
- ブラウザはWEBサーバへ、必要なページ「/page1/」をリクエストする
- WEBサーバはページのHTMLを返す
- WEBブラウザはHTMLをパースして、画面に表示する
簡単ではありますが、上記がおおまかな通信の流れになります。
IPとIPパケットとIPアドレス
IP(internet protocol)とは、インターネット上で通信を行う取り決めのことです。
IPパケットとは、通信のデータ単位。
IPアドレスとは、ネットワーク上の住所となります。
IPアドレスとホスト名の関係などは、DNSの仕組みを学ぶ上で重要になってきます。
(IPパケットの中身の理解まではすぐに必要ないと思います)
ポート通信について
ポートとは、通信を行う際の窓口であり、文字通り港(port)となります。
コンピュータは複数のIPアドレスを設定することができますが、それと同時に、無数のポートを利用することができます。
代表的な例としては、
- HTTP 80番ポート
- HTTPS 443番ポート
- SMTP 25番ポート
などがありますね。
上記はウェルノウンポートと呼ばれる、用途がはっきりと決められたポートで、0~1023まであります。
インターネット上の通信はすべて、『IPアドレスに対するポート通信』と考えても差し支えありません。
また、この方式は『TCP/IP』とも呼ばれます。
HTTPもメールもDNSも、共通の『TCP/IP』というプロトコルでの通信になります。
HTTP(WEB)
80番ポートを利用する、『ハイパーテキスト(Hyper Text Transfer Protocol)を取得するためのプロトコル』です。
HTML以外にも、XMLやJSONなどの様々なテキストデータ。あるいは動画や画像などのメディアデータのやりとりも行います。
対応するミドルウェアは、『apache』『Nginx』『IIS』などのWEBサーバです。
HTTPS
443番ポートを利用する、暗号化されたHTTP通信です。
できることはHTTPと変わりません。
HTTPよりも負荷がかかるため重要な通信に限定してHTTPSを使うことが多いですが、昨今ではハードウェア技術の進歩とセキュリティ意識の向上により、適用範囲が増えています。
HTTPS通信(SSLによる暗号化通信)の際は、ホストの信頼性を証明するためにサーバ証明書が使われます。
証明書の取得や設定は難しい場合があるので、証明書の管理もセットになったホスティングサービスなどを利用する手もあります。
SSH
22番ポートを利用する、『暗号化された通信でサーバを管理する』ためのプロトコルです。
SSHが主流になる以前はtelnetが利用されていましたが、昨今はSSHが主流です。
通常のLinuxサーバの管理を行う場合、エンジニアはputtyなどのSSHクライアントを使い、対象のサーバにログインを行います。
DNS
53番ポートを利用する、『ドメイン名をIPに変換する』ためのプロトコルです。
独自ドメインをお名前.comなどで取得して、VPSでサービスを公開する、というようなことをする場合はきちんと理解しておく必要があります。
このDNSがあることで、インターネットは以下のような恩恵を受けています。
- 無機質なIPアドレスではなく、意味のあるドメイン名で運用できる
- ドメイン名に対応するIPアドレスを切り変えることで、負荷分散できる
- サブドメインを利用することで、構造化されたネットワークを表現できる
対応するミドルウェアは、『bind』『Windows server(の一機能)』などのDNSサーバです。
SMTP
通常は25番ポートを利用する、『Eメールの配送』のためのプロトコルです。
サーバサイドプログラミングでは、メールを送る際などにこのプロトコルを使うケースがありますので、覚えておいた方がよいです。
対応するミドルウェアは、『sendmail』『qmail』『Windows server(の一機能)』などの送信メールサーバです。
POP
通常は110番ポートを利用する、『Eメールの取得』のためのプロトコルです。
(現状は、POPのバージョン3であるPOP3が利用されます)
Eメールの取得プロトコルとしては、似たようなものに『IMAP』『APOP』などもあります。
SMTPと違う点としては、以下となります。
- SMTP:コンピュータ間でEメールを送信しあうためのプロトコル
- POP:サーバの記録媒体にあるメールを取りに行くためのプロトコル
つまりPOPは、『エンドユーザーがメールをダウンロードするためのプロトコル』とも考えられます。
対応するミドルウェアは、『qpopper』『dovecot』『Windows server(の一機能)』『ExchangeServer』などの受信メールサーバです。