どうも。つじけ(tsujikenzo)です。このシリーズでは「ノンプログラマーによるWeb周り基礎学習」について全4回でお送りします。今日は2回目です。
前回のおさらい
前回は、「ノンプログラマーによるWeb周り基礎学習」 ということで、「デベロッパーロードマップ」をご紹介しました。何を学習するのかも、整理できたと思います。
今回は、 「ネットワークとHTTP」 をお届けします。
ネットワークとは
私の考える「デベロッパーロードマップ」の、最初のセクションの基礎は「ネットワーク」です。
Web周りの包括的な用語(図の?にあてはまる言葉)が「ネットワーク」ということです。
「ネットワーク」とは、「つながりを定義したもの」 です。
「つながり」の国際標準化
これから、離れたところにある「もの」と「もの」をつなぐことを考えます。まず、正しい説明をするためにも、言葉の定義をきちんと決めないといけません。言葉の意味が、受け取る人の感覚によってバラバラだと困るからです。
これを、世界中の学者とか頭のいい人たちが話し合って決めます。国際標準化 とか 国際規格 と呼ばれるものです。
「ネットワーク」は、1970年代後半、「階層構造を使って定義しよう」 と国際標準化されました。現実世界のパソコンなどの端末同士のつながりを「階層モデル」を使って定義しよう、ということです。
OSI参照モデル
具体的に言うと、その階層モデルとは「OSI(Open System Interconnection)参照モデル」というものです。 「ネットワークは7つの層で定義できる」 というものです。少し見ていきましょう。
7つの層はこのような構成になっています。下の層から順番に「なにかをやりたい」という要求が高度になっていくイメージをもつとわかりやすいです。
重要な点を抜粋してみましょう。下のかんたんな層から紹介します。
第1層-物理層
まずは、糸電話のように、「とりあえず一本の線でつながりたい」要求を満たします。こんなかんたんな要求でも、決めないといけないことはたくさんあります。
たとえば、
– 技術的には、デジタルデータと電気信号の変換を行う
– 有線でも無線でもいい
– 有線ケーブルの場合はコネクタの形状はどんなものが許されるか
– メーカーが違っても通信できるか
などの決まりごとの数や種類をきめます。(具体的なルールの中身を決めるわけではありません)
第2層-データリンク層
物理層では「誰かと誰かを線でつなぐ」というだけでした。その次は「誰から誰に転送されているのかをわかるようにしたい」という要求です。
プリンターとパソコンをつなぐ「MACアドレス」という決まりごとは、このデータリンク層で定義されている技術です。
第3層-ネットワーク層
さて、個々のパソコンが誰なのか特定できるようになると、1つのネットワーク内だけでなく、複数のネットワークや、LANケーブルで繋がれたネットワーク外のパソコンもつなげたくなります。
この、ネットワーク層の要求に答えるための決まりごとが 「インターネットプロトコル(Internet Protocol)」 です。略して「IP」です。
IPではデータを「IPパケット」という単位で送受信します。IPパケットのヘッダーには、送信元と宛先の両方のIPアドレスが格納されており、ヘッダー情報を元に、宛先にIPパケットが届けられます。(URLをIPアドレスに変換する役割をDNS(Domain Name System)と呼びますが、今回は割愛します。)
「パケット代無料」という言葉は一度でも耳にしたことがあるでしょう。私たちのスマホと携帯会社のサーバは、IPパケットをやりとりすることで通信しています。
このように、とても便利になってきたネットワーク層ですが、IPパケットは、宛先まで到着することを保証しません。また、送信した順序も保証しません。なので、一部でも届かないパケットが発生すると、データ不十分ということで、破棄されてしまいます。
1対1のような通信であれば、IPパケットが全部揃うまで、何度も通信をトライして構わないかもしれませんが(時間と通信費の許す限り)、WEBサーバのような多くの人が通信を望む環境では困ります。
第4層-トランスポート層
IPパケットが届かなかったら、送信元に再送を要求したり、順番が狂っていたら順番を整えて、「信頼性のある通信を保証しよう」という決まりごとが 「TCP(Transmission Contorol Protocol)」 です。
技術的には、「データを一度に送信できるサイズに分割しよう」 というものです。
TCPのおかげで、クライアントとサーバは、データの順番が変わったりすることなく、正しく送受信ができるのです。
第5層(セッション層)・第6層(プレゼンテーション層)は、飛ばします。
第7層-アプリケーション層
さあ、いよいよネットワークについて、やりたい要求が最高度になりました。
– WEBサイトを閲覧したい
– ファイルを転送したい
– メールを送受信したい
といった要求です。
「アプリケーション層」 では、それぞれの要求に応えるための決まりごとが標準化されています。
- WEBサイトを閲覧するための決まりごと・・・HTTP(Hyper Text Transfer Protocol)
- ファイル転送を行う決まりごと・・・FTP(File Transfer Protocol)
- メール送信を行う決まりごと・・・SMTP(Simple Mail Transfer Protocol)
- メール受信を行う決まりごと・・・POP(Post Office Protocol)
どれも、一度は聞いたことがある単語ではないでしょうか。
HTTPは、ネットワークでやりたいことをひとつずつ定義していくと、最上位のアプリケーション層に含まれました。「WEBサイトを閲覧する」ということは、さまざまな通信の決まりごとの上に成り立っているから です。
まとめ
以上で、「ネットワークとHTTP」 ということで、OSI参照モデルをもとにHTTPの位置付けをご紹介しました。
HTTPの具体的な決まりごとは「RFC7230~7235」というドキュメントで定義されています。日本語の翻訳もありますので、興味のあるかたは目を通してみましょう。
次回は、「TCPとHTTPリクエスト」をお届けします。