[WEB]ネットワークとHTTP

WEB

どうも。つじけ(tsujikenzo)です。このシリーズでは「ノンプログラマーによるWeb周り基礎学習」について全4回でお送りします。今日は2回目です。

前回のおさらい

前回は、「ノンプログラマーによるWeb周り基礎学習」 ということで、「デベロッパーロードマップ」をご紹介しました。何を学習するのかも、整理できたと思います。

[WEB]ノンプログラマーによるWeb周り基礎学習
どうも。つじけ(tsujikenzo)です。このシリーズでは「ノンプログラマーによるWeb周り基礎学習」について全4回でお送りします。今日は1回目です。※このシリーズは、私が参加しているノンプロ研の定例イベント「ZoomIn6月度」でL...

今回は、 「ネットワークと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」というドキュメントで定義されています。日本語の翻訳もありますので、興味のあるかたは目を通してみましょう。

RFC 7230 — HTTP/1.1: Message Syntax and Routing (日本語訳)

次回は、「TCPとHTTPリクエスト」をお届けします。

このシリーズの目次

  1. [WEB]ノンプログラマーによるWeb周り基礎学習
  2. [WEB]ネットワークとHTTP
  3. [WEB]TCPとHTTPリクエスト
  4. [WEB]HTTPレスポンスとGET/POSTリクエスト
タイトルとURLをコピーしました