2021.10.06

その他

ネットワーク基本知識まとめ

最近、情報系についての基本的な部分を勉強しているから
ブログで簡単にまとめていこう

というお話。

今回はネットワーク編です。
長い上に広く浅くになってしまい分かりづらい部分も多いと思いますので気になるとこだけでも見ていただけますと。

※この記事の内容はこちらの本を参考にして書いています。本の方がイラストなど色々あって分かりやすいです。



キタミ式イラストIT塾 基本情報技術者 令和03年 単行本(ソフトカバー)

LANとWAN

事業所など局地的な狭い範囲のネットワークをLANと呼びます。
Local Area Networkの略で、会社内のネットワークや、自宅で複数の端末に構築する宅内ネットワーク等がこれにあたります。

一方、企業などで「東京本社と地方支社をつなぐ」ような、遠く離れたLAN同士を接続するネットワークがWAN
Wide Area Networkの略で、広い意味ではインターネットもWANの一種だと言えます。

通信路の方式

コンピュータがデータをやりとりするための互いを結ぶ通信路にはいくつか方式があります。

もっともシンプルな形は、互いを直接1本と線で結んでしまうこと。
これを専用回線方式といいます。

しかしこれでは1対1の通信しか行えません。

かといってすべてのコンピュータ同士を専用の回線でつなぐのは大変なので、間に交換機をかませ、交換機が回線の選択を行い必要に応じた通信路を確立させる方式が交換方式です。

交換方式には大きく分けて次の2種類があります。

回線交換方式

回線交換方式は送信元から送信先に至る経路を交換機がつなぎ通信路として固定する方式で、通信路に選ばれた回線は使用中のペアに占領されるので、他の端末がその回線を使うことはできなくなります。
アナログ電話がこのタイプです。通信料というのは回線の占領時間に対して課金されているという訳です。

パケット交換方式

パケットとは小包という意味で、通信データを小分けにして回線に送り込みます。
パケットには宛先情報をくっつけていて、交換機がその情報をもとに適切な回線に仕分けしてくれます。
小分けになっているため回線が使用中になるのは短時間だけになり、1つのデータを送りきるまでの長時間1つの通信が回線を独占するのを防ぐことができます。
その分遅延が発生してしまうデメリットもありますが、現在のコンピュータネットワークで用いらせるのは基本的にすべてこのパケット交換方式です。

WAN通信技術

WANの構築では電気通信事業の提供する通信サービスを用いて拠点間をつなぐことになります。
そこで用いられる通信方式として代表的なものは次の通りです。

専用線

拠点間を専用回線で結ぶサービス。回線速度と距離によって費用が決まる。セキュリティは高いが非常に高額。

フレームリレー方式

パケット交換方式をもとに転送中の誤り制御を簡略化して高速化を図ったもの。データ転送の単位は可変長のフレームを用いる。

ATM交換方式(セルフリレー方式)

パケット交換方式をもとに、データ転送の単位を可変長ではなく固定長のセル(53バイト)とすることで高速化を図ったもの。パケット交換方式と比べて伝送遅延は小さい。

広域イーサネット

LANで一般的に使われているイーサネット技術を用いて拠点間を接続するもの。高速で、しかも一般的に使用している機器をそのまま使えるためコスト面でのメリットも大きい。WAN構築における近年の主流サービス。

LANの接続形態(トポロジー)

LANを構築する時に各コンピュータをどのようにつなぐか、その接続形態のことをトポロジーと呼びます。
次の3つが代表的なトポロジーです。

スター型

ハブを中心として、放射状に各コンピュータを接続する形態。イーサネットの100BASE-TXや1000BASE-Tという規格などで使われている。

バス型

1本の基幹となるケーブルに各コンピュータを接続する形態。イーサネットの10BASE-2や10BASE-5という規格などで使われている。

リング型

リング状に各コンピュータを接続する形態。トークンリングという規格などで使われている。

プロトコルとパケット

コンピュータは色んな約束事にのっとってネットワークを介したデータのやり取りを行います。
その約束事のことをプロトコルといいます。

OSI基本参照モデル

プロトコルには様々な種類があり、「どんなケーブルを使って」「どんなデータ形式で」といったことが事細かに決まっています。それらを7階層に分けてみたのがOSI基本参照モデル
基本的にはこの第1階層から第7階層までのすべてを組み合わせることでコンピュータ同士のコミュニケーションが成立するようになっています。

  • 第7層アプリケーション層
    →具体的にどんなサービスを提供するのか
  • 第6層プレゼンテーション層
    →データはどんな形式にするか
  • 第5層セッション層
    →通信の開始から終了までどう管理するか
  • 第4層トランスポート層
    →通信の信頼性はどう確保するか
  • 第3層ネットワーク層
    →ネットワークとネットワークをどう中継するか
  • 第2層データリンク層
    →同一ネットワーク内でどう通信するか
  • 第1層物理層
    →物理的にどうつなぐか

現在はインターネットの世界で事実上の標準とされていることから「TCP/IP」というプロトコルが広く利用されています。

ネットワークを構成する装置

ネットワークの世界で働く代表的な装置にはルータやハブ、ブリッジ、リピータなど様々なものがあります。
代表的な装置と、それらがOSI基本参照モデルでいうとどの層に属しているのかを見ていきましょう。

NIC(Network Interface Card)

コンピュータをネットワークに接続するための拡張カードがNICです。LANボードとも呼ばれます。
OSI基本参照モデルでは第1層「物理層」に属します。

NICの役割は、データを電気信号に変換してケーブル上に流すこと。そして受け取ることです。

NICをはじめとするネットワーク機器には、製造段階でMACアドレスという番号が割り振られています。これはIEEE(米国電気電子技術協会)によって管理される製造メーカー番号と、自社製品に割り振る製造番号との組み合わせでできており、世界中で重複しない一意の番号であることが保証されています。
イーサネットではこのMACアドレスを使って各機器を識別します。

リピータ

リピータは物理層(第1層)の中継機能を提供する装置です。
ケーブルを流れる電気信号を増幅して、LANの総延長距離を伸ばします。

LANの規格では方式ごとにケーブルの総延長距離が定められています。それ以上の距離で通信しようとすると信号がゆがんでしまってまともに通信できません。

リピータを間に挟むとこの信号を整形して再送出してくれるので信号のゆがみを解消することができます。

ブリッジ

ブリッジはデータリンク層(第2層)の中継機能を提供する装置です。
セグメント(無条件にデータが流される範囲)間の中継役として、流れてきたパケットのMACアドレス情報を確認、必要であれば他方のセグメントへとパケットを流します。

ブリッジは流れてきたパケットを監視することで、最初に「それぞれのセグメントに属するMACアドレスの一覧」を記憶してしまいます。
以降はその一覧に従ってセグメント間を橋渡しする必要のあるパケットだけ中継を行います。中継パケットはCSMA/CD方式(ネットワーク上の通信状況を監視して他に送信を行っている者がいない場合に限ってデータの送信を開始する方式。それでも同時に送信してしまい通信パケットの衝突が発生した場合は各々ランダムに求めた時間分待機してから再度送信を行う)に従って送出するため、コリジョン(パケットの衝突)の発生が抑制されてネットワークの利用効率向上に役立ちます。

ハブ

ハブはLANケーブルの接続口(ポート)を複数もつ集線装置です。

ハブには内部的にリピータを複数束ねたものであるリピータハブと、ブリッジを複数束ねたものであるスイッチングハブの2種類があります。
リピータハブはリピータの一種でOSI基本参照モデルでは第1層「物理層」に属し、スイッチングハブはブリッジの一種でOSI基本参照モデルでは第2層「データリンク層」に属します。

ルータ

ルータはネットワーク層(第3層)の中継機能を提供する装置です。
異なるネットワーク(LAN)同士の中継役として、流れてきたパケットのIPアドレス情報を確認した後に適切な経路へとパケットを転送します。
下行び横に並んだ数字ブリッジが行う転送はあくまでもMACアドレスが確認できる範囲でのみ有効なので、外のネットワーク宛のパケットを中継することはできません。
そこでルータの出番。ルータはパケットに書かれた宛先IPアドレスを確認します。IPアドレスというのは「どのネットワークに属する何番目のコンピュータか」という内容を示す情報なので、これと自身が持つ経路表(ルーティングテーブル)とを突き合わせて、適切な転送先を選びます。このことを経路選択(ルーティング)と呼びます。

といっても、いつも隣接しているネットワーク宛とばかりは限りません。特にインターネットのように接続されているネットワークが膨大な数となる場合には直接相手のネットワークに転送するのはまず不可能です。

そのような場合は、「あっちなら知ってるのでは?」というルータに放り投げ、そこも分からなければ次へ、さらに次へ…とルータ同士がバケツリレーのようにパケットの転送を繰り返していくことで、いつかは目的地のネットワークにたどり着く、という仕組みになっています。

ゲートウェイ

ゲートウェイはトランスポート層(第4層)以上が異なるネットワーク間で、プロトコル変換による中継機能を提供する装置です。
ネットワーク双方で使っているプロトコルの差異をこの装置が変換、吸収することでお互いの接続を可能とします。
OSI基本参照モデルでは第4層「トランスポート層」、第5層「セッション層」、第6層「プレゼンテーション層」、第7層「アプリケーション層」に属します。

異なるプロトコル間に位置して相互に変換を行うのはゲートウェイの役割であり、ネットワークの翻訳家のようなものです。
例えば、携帯メールとインターネットの電子メールが互いにやり取りできるのも、間にメールゲートウェイという変換機が入ってくれているおかげです。

ゲートウェイが専用の装置だけでなく、その役割を持たせたネットワーク内のコンピュータなども該当します。

データの誤り制御

ネットワーク上を流れるデータというのは結局のところ電気的な信号でしかないわけで、途中でノイズが入って波形が変わったりしててもなんら不思議ではありません。
なのでそうした誤りを検出したり、訂正できる仕組みが必要となってきます。(データの誤りとはビットの内容が「0→1」「1→0」とノイズやひずみによって異なる値に化けてしまうことです)

パリティチェック

パリティチェックでは、送信するビット列に対して、パリティビットと呼ばれる検査用のビットを付加することでデータの誤りを検出します。
パリティビットを付加する方法には、「ビット列の中の1の数が偶数になるように値をセットする」偶数パリティと、「ビット列の中の1の数が奇数になるように値をセットする」奇数パリティの2種類があります。

例えば「A」という文字を偶数パリティで送る場合、

「A」の文字コードは65なのでビットで表すと
1 0 0 0 0 0 1

偶数パリティなので1の数が偶数個になるようにパリティビットに0が付加される
0 1 0 0 0 0 0 1

これが受信側で一部化けていたとすると、
0 1 0 0 1 0 0 1

「偶数パリティなのに1が奇数個ある」➡「このデータはおかしい!」

と誤りを検出できるということです。

ただし、パリティチェックで可能なのは「1ビットの誤り」を検出することだけで、偶数個のビットの誤りは検出できませんし、「どのビットが誤りか」ということも分かりません。
したがってこの方式では誤り訂正も行えません。

水平垂直パリティチェック

パリティビットはどの方向に付加するかによって垂直パリティ水平パリティに分かれます。

例えば、「ABCDE」という文字列があった場合、

A B C D E
1 0 1 0 1 1
0 1 1 0 0 0
0 0 0 1 1 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
1 1 1 1 1 1
0 0 1 1 1 0

(※偶数パリティの場合)

データを並べた時の各ビット位置単位で付加するのが水平パリティ(一番右列に縦に並んだ数字)
データ単位で付加するのが垂直パリティ(一番下行のに横に並んだ数字)
となります。

この2つのパリティを組み合わせて使うのが水平垂直パリティです。
縦横両面から誤りを検出できるので、1ビットの誤りであれば位置を特定することができ、0と1を反転させれば誤り訂正が行えます。

ただし、2ビット以上の誤りになると位置の特定ができなくなるので、その場合は検出はできますが訂正はできません。

CRC(巡回冗長検査)

CRC(Cyclic Redundancy Check)は、ビット列を特定の式(生成多項式)で割り、その余りをチェック用のデータとして付加する方法です。

送信側は、計算で得られた余りを元々のビット列にくっつけて送信データとします。こうすることで、そのデータは計算に用いた生成多項式で「割り切れるはずの数」に変わります。

したがってデータを受信した側は、送信側と同一の生成多項式を使って受信データを割り算します。
同然データに問題がなければ割り切れるはずなので、割り切れなかった場合はデータに誤りがあることを検出できるということです。

この方式ではデータの誤り訂正は行えませんが、連続したビットの誤り(バースト誤り)など、複数ビットの誤りを検出することができます。

TCP/IPを使ったネットワーク

TCP/IPとはトランスポート層の「TCP」とネットワーク層の「IP」をセットにした呼び方で、この2つのプロトコルの組み合わせがインターネットにおけるデファクトスタンダードです。

その中身ですが、まずIP。これは「複数のネットワークをつないで、その上をパケットが流れる仕組み」といったことを規定しています。いわばネットワークの土台のようあものです。
一方のTCPは、そのネットワーク上で「正しくデータが送られたことを保証する仕組み」を定めたもの。
両者が組み合わせることで「複数のネットワークを渡り歩きながら、パケットを正しく相手に送り届けることができるのですよ」という仕組みになるわけです。

こうしたインターネットの技術を、そのまま企業内LANなどに転用したネットワークのことをイントラネットと呼びます。

TCP/IPの中核プロトコル

TCP/IPネットワークを構成する上で中核となるプロトコルが次の3つ、

トランスポート層(第4層)に属し、送信データの信頼性をどのように保証するかを規定した「TCP」「UDP」と、
ネットワーク層(第3層)に属し、ネットワークをいかにしてつなぎ、経路制御を行うかを規定した「IP」です。

IP(Internet Protocol)

IPは経路制御を行い、ネットワークからネットワークへとパケットを運んで相手に送り届けます。

IPによって構成されるネットワークでは、コンピュータやネットワーク機器などを識別するために、IPアドレスという番号を割り当てて管理しています。

コネクションレス型の通信(事前に送信相手と接続確認を取ることなく一方的にパケットを送り付ける)であるため、通信品質の保証についてはTCPやUDPなどの上位層に任せます。

TCP(Transmission Control Protocol)

TCPは、通信相手とのコネクションを確立してからデータを送受信するコネクション型の通信プロトコルです。パケットの順序や送信エラー時の再送などを制御して、送受信するデータの信頼性を保証します。

UDP(User Datagram Protocol)

UDPは、事前に送信相手と接続確認を取ったりせず、一方的にパケットを送り付けるコネクションレス型の通信プロトコルです。パケットの再送制御などを一切行わないため信頼性に欠けますが、その分高速です。
データの信頼性よりもリアルタイム性を重視する用途に適しており、身近なところでは映像配信サービスなどがこれにあたります。

IPアドレスはネットワークの住所

TCP/IPのネットワークにつながれているコンピュータやネットワーク機器はIPアドレスという番号で管理されています。

個々のコンピュータを識別するために使うものですから、重複があってはいけません。必ず一意の番号が振り分けられているのがお約束です。

IPアドレスは、32ビットの数値で表されます。例えば次のような感じ。

11000000101010000000000100000011

これだとあまりに覚えづらいのでまず8ビットずつに区切って、

11000000 10101000 00000001 00000011

それぞれを10進数で表し、

192 168 1 3

それらを「.」でつないで記述します。

192.168.1.3

グローバルIPアドレスとプライベートIPアドレス

IPアドレスには、グローバルIPアドレス(またはグローバルアドレス)とプライベートIPアドレス(またはプライベートアドレス)という2つの種類があります。

グローバルIPアドレスは、インターネットの世界で使用するIPアドレスです。世界中で一意であることが保証されないといけないので、地域ごとのNIC(Network Information Center)と呼ばれる民間の非営利機関によって管理されています。自分の好きに割り当てることはできません。

一方プライベートIPアドレスは、企業内などLANの中で使えるIPアドレスです。LAN内で重複がなければシステム管理者が自由に割り当てて使うことができます。

グローバルIPアドレスとプライベートIPアドレスの関係は、電話の外線番号と内線番号の関係によく似ています。

IPアドレスは「ネットワーク部」と「ホスト部」で出来ている

IPアドレスの内容は、ネットワークごとに分かれるネットワークアドレス部と、そのネットワーク内でコンピュータを識別するためのホストアドレス部とに分かれています。つまり、宛名表記が住所と名前で構成されているのと同じことです。

例えば次のIPアドレスでは頭の24ビットがネットワークアドレスを表し、後ろ8ビットがホストアドレスを表しています。

110000001010100000000001
ネットワークアドレス部 
00000011
ホストアドレス部

10進数だと

192.168.1.1

IPアドレスのクラス

IPアドレスは使用するネットワークの規模によって、AクラスBクラスCクラスと3つのクラスに分かれています。(実際にはもっとあるけど一般的でない)

それぞれ「32ビット中の何ビットをネットワークアドレスに割り振るか」が規定されているので、それによって持つことのできるホスト数が違ってきます。

クラスA(0.0.0.0 ~ 127.255.255.255)

0XXXXXXX
ネットワークアドレス部
8ビット
 
XXXXXXXXXXXXXXXXXXXXXXXX
ホストアドレス部
24ビット

・大規模ネットワーク用
・先頭ビットは0と決まっている
・割り当て可能なホスト数:16,777,214台

クラスB(128.0.0.0 ~ 191.255.255.255)

10XXXXXXXXXXXXXX
ネットワークアドレス部
16ビット
 
XXXXXXXXXXXXXXXX
ホストアドレス部
16ビット

・中規模ネットワーク用
・先頭2ビットは10と決まっている
・割り当て可能なホスト数:65,534台

クラスC(192.0.0.0 ~ 223.255.255.255)

110XXXXXXXXXXXXXXXXXXXXX
ネットワークアドレス部
16ビット
 
XXXXXXXX
ホストアドレス部
16ビット

・小規模ネットワーク用
・先頭3ビットは110と決まっている
・割り当て可能なホスト数:254台

ホストアドレス部が「すべて0」「すべて1」となるアドレスはそれぞれ「ネットワークアドレス(すべて0)」「ブロードキャストアドレス(すべて1)」という意味で予約されているため割り当てには使えません。
「割り当て可能なホスト数」が、そのビット数で本来表せるはずの数から-2した数値になっているのはそのためです。

ブロードキャスト

同一ネットワーク内のすべてのホストに対して一斉に同じデータを送信することをブロードキャストと言います。
ブロードキャストを行うには、宛先として「ホストアドレス部がすべて1となるIPアドレス」を指定します。このアドレスがつまりは「全員宛て」という意味を持つわけです。

ブロードキャストは「ネットワーク内の全員」宛てなので、OSI階層モデル第3層(ネットワーク層)のルータを越えてパケットが流れることはありません。
一方、第2層以下の機器、たとえばスイッチなどは、このパケットを受信すると全てのポートへと転送します。

ブロードキャストの逆の言葉として、特定の1台のみに送信することをユニキャストと言います。また、複数ではあるけども不特定多数ではなく決められた範囲内の複数ホストに送信する場合はマルチキャストといいます。

サブネットマスクでネットワークを分割する

一番小規模向けのクラスCでも254台のホストを扱えるわけですが、「そんなにホスト数はいらないから、事業部ごとにネットワーク分けたい」などという場合、サブネットマスクを用いてネットワークを分割することができます。

サブネットマスクは各ビットの値(1がネットワークアドレス、0がホストアドレスを示す)によって、IPアドレスのネットワーク部とホストアドレス部を再定義することができます。

例えばクラスCのIPアドレスで次のようにサブネットマスクを指定した場合、62台ずつの割り当てが行える4つのサブネットに分割することができます。

IPアドレス:   110XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
サブネットマスク:11111111111111111111111111XXXXXX

本来24ビットだったネットワークアドレス部がサブネットマスクによって26ビットに拡張されたことで差分の2ビット(サブネット00 01 10 11 の合計4つ )を使って分割したネットワークが表現できるのです。

DHCP

LANにつなぐコンピュータの台数が増えてくると、1台ずつに重複しないIPアドレスを割り当てるのが思いのほか困難となってきます。
DHCP(Dynamic Host Configuration Protocol)というプロトコルを利用すると、こうしたIPアドレスの割り当てなどといったネットワークの設定作業を自動化することができます。
①新しくLANに参加したいコンピュータからLAN上のDHCPサーバにリクエストが飛び
②使われていないIPアドレスと、そのネットワークで用いる各種設定内容が提供され
③提供された内容でLANに参加する
といった流れです。

プロバイダなどのインターネット接続サービスを利用する際も、最初にDHCPを使ってインターネット上でのネットワーク設定を取得する手順が一般的です。

NATとIPマスカレード

LANの中ではプライベートIPアドレスを使っているのが一般的ですが、外のネットワークとやり取りするためにはグローバルIPアドレスが必要です。

では、プライベートIPアドレスしか持たない各コンピュータはどうやって外のコンピュータとやり取りするのでしょうか。それにはNATIPマスカレード(NAPTともいいます)といったアドレス変換技術を用います。これらはルータによく実装されています。

NAT

グローバルIPアドレスとプライベートIPアドレスとを1対1で結び付けて相互に変換を行います。同時にインターネットに接続できるのは、グローバルIPアドレスの個数分だけです。

IPマスカレード

グローバルIPアドレスに複数のプライベートIPアドレスを結び付けて、1対複数の変換を行います。IPアドレスの変換時にポート番号もあわせて書き換えるようにすることで1つのグローバルIPアドレスでも複数のコンピュータが同時にインターネット接続をすることができます。

ドメイン名とDNS

10進数で表記されたIPアドレスは、2進数で表記されているものよりはマシですが、それでも人間にとって覚えやすいとは言いづらいものがあります。
そこで、覚えづらいIPアドレスに対して文字で別名をつけたものがドメイン名です。
皆さんのアドレスバーに表示されている「www.○○.co.jp」なんかがドメインです。

このドメイン名とIPアドレスとを関連付けして管理しているのがDNS(Domain Name System)です。
DNSサーバに対して「www.○○.co.jpのIPアドレスは何?」とか、「IPアドレスがxxx.xxx.xxx.xのドメイン名って何?」などと問い合わせると、それぞれに対応するIPアドレスやドメイン名が返ってきます。

ネットワーク上のサービス

ネットワーク上で働くサービスにはされぞれに対応したプロトコルが用意されています。

代表的なサービス

ネットワーク上のサービスは、そのプロトコルを処理するサーバによって提供されています。
代表的なプロトコルには次のようなものがあり、主だったプロトコルにはあらかじめポート番号が予約されており、これをウェルノウンポートと言います。

プロトコル名 説明 ポート番号
HTTP
(HyperText Transfer Prortocol)
Webページの転送に利用するプロトコル。Webブラウザを使ってHTMLで記述された文書を受信する時などに使う 80
FTP
(File Transfer Prorocol)
ファイル転送サービスに利用するプロトコル。インターネット上のサーバにファイルをアップロードしたり、サーバからファイルをダウンロードするしたりする時に使う 転送用 20
制御用 21
Telnet 他のコンピュータにログインして遠隔操作を行う際に使うプロトコル 23
SMTP
(Simple Mail Transfer Protocol)
電子メールの配送部分を担当するプロトコル。メール送信時や、メールサーバ間での送受信時に使う 25
POP
(Post Office Protocol)
電子メールの受信部分を担当するプロトコル。メールサーバ上にあるメールボックスから受信したメールを取り出すために使う 110
NTP
(Network Time Protocol)
コンピュータの時刻合わせを行うプロトコル 123

サービスはポート番号で識別する

ネットワーク上で動くサービスたちは、個々にそれ専用のサーバマシンを用意しなくてはいけないわけではありません。
サーバというのは、「プロトコルを処理してサービスを提供するためのプログラム」が動くことでサーバになっているわけですから、ひとつのコンピュータが、様々なサーバを兼任することは当たり前にあるわけです。

しかしIPアドレスだと、パケットの宛先となるコンピュータは識別できておそれが「どのサーバプログラムに宛てたものか」までは特定できません。

そこで、プログラムの側では0~65,535までの範囲で自分専用の接続口を設けて待つようになっています。この接続口を示す番号のことをポート番号と呼びます。

WWW(World Wide Web)

WWWはインターネットで標準的に使われているドキュメントシステムで、最も利用されているサービスです。
散在するドキュメント同士が相互につながりを持つのが特徴で、そのつながる様がクモの巣を連想させることからWorld Wide Web(世界に広がるクモの巣)と名付けられました。
今や、インターネットとWWWが同義語として使われるケースがあるほど定着しているサービスです。

Webサーバに要求して表示する

WWWのサービスにはWebサーバとWebブラウザ(という名のクライアント)が欠かせないわけですが、そのやり取りは非常に単純です。

サーバの仕事というのは、基本的に「くれ」と言われたファイルを渡すだけ。なにかデータを整形したり特別な処理を加えたりとかは一切ありません。

Webブラウザがリクエストを出し、Webサーバが要求されたファイルを返す。
この間に使われているプロトコルがHTTPであり、受け取ったファイルを実際に整形したり、さらに必要ファイルがないか確認したりする大変な作業はWebブラウザだけが担います。

しかし、そんな単純な仕組みで出来ているからこそ、様々なファイルが扱えたり、拡張も容易だったりと、広い範囲で使える仕組みになっているのです。

WebページはHTMLで記述する

WebページはHTML(HyperText Markup Language)という言語で記述されています。
HTMLについての説明は省きます。

URLはファイルの場所を示すパス

Web上で取得したいファイルの場所を指し示すにはURL(Uniform Resource Locator)という記述方法を用います。

URLによって記述されたアドレスは次のような形式になっています。

http:
プロトコル
//www.○○.co.jp
ドメイン名
/officialblog
ディレクトリ名
/index.html
ファイル名

つまり上記URLの意味というのは、
①HTTPというプロトコルを使って、
②○○.co.jpというネットワークの、
③wwwというwebサーバが公開している、
④/officialblogディレクトリの下の、
⑤index.htmlというファイル
をやり取りする、ということになります。

Webサーバと外部プログラムを連携させる仕組みがCGI

Webブラウザからの要求に応じてWebサーバ側で外部プログラムを実行するために用いる仕組みにCGI(Common Gateway Interface)があります。

CGIプログラムを示すURLが要求されると、Webサーバは外部のプログラムを実行してその処理結果を返します。

これにより、インタラクティブなページを作ることができます。

電子メール

電子メールは手紙のコンピュータネットワーク版で、メールアドレスを使ってメッセージをやり取りします。
昔はテキスト情報しかやり取りできなかったのですが、MIME(Multipurpose Internet Mail Extensions)という規格の登場によって様々なファイル形式が扱えるようになりました。
メール本文に画像や音声など、なんらかのファイルを添付する場合に、このMIME規格が使われます。

メールアドレスは名前@住所

手紙のやりとりに住所と名前が必要であるように、電子メールのやり取りにもメールアドレスという住所+名前に相当するものが使われます。
ユーザー名@ドメイン名
という形です。

電子メールを送信するプロトコル(SMTP)

電子メールの送信にはSMTPというプロトコルを使用します。
実際の郵便に置き換えると、郵便ポストから相手の郵便受けに届けるまでがSMTPの役割となります。

SMTPに対応したサーバのことをSMTPサーバと呼び、SMTPサーバは「郵便ポスト」と「郵便屋さん」のような2つの仕事を担います。

電子メールを受信するプロトコル(POP)

一方、電子メールを受信するにはPOPというプロトコルを使用します。
先ほどと同じように実際の郵便に置き換えると、自分の郵便受けから電子メールを取り出すのがPOPの役割となります。

POPに対応したサーバのことをPOPサーバと呼び、POPサーバは電子メールソフトなどのPOPクライアントから「電子メールください」と要求があがってくると、そのユーザーのメールボックスから受信済みのメールを取り出して配送します。

現在は「POP Version3」を意味するPOP3が広く使われています。

電子メールを受信するプロトコル(IMAP)

IMAP(Internet Message Access Protocol)は、POPと同じく電子メールを受信するためのプロトコルです。
POPとは異なり送受信データをサーバ上で管理するためどのコンピュータからも同じデータを参照することができます。

現在はIMAP4というバージョンが広く用いられています。

MIME

電子メールでは本来ASCII文字しか扱うことができません。そこで日本語などの2バイト文字や、画像データなどのファイルの添付を行えるようにする拡張規格がMIME(Multipurpose Interner Mail Extensions)です。

MIMEでは電子メールをBase64などの方式でASCII文字に変換し送信データとします。
しかし、そのままでは本来の文と区別がつかなくなるので、メールを「メールヘッダ」「本文」「添付画像」などのパートごとに分けて、それぞれがどんなデータなのか種別を記します。
受信側はこの種別を元に、各パートを復元して参照するわけです。

このMIMEに、暗号化や電子署名の機能を加えた規格としてS/MIMEがあります。

終わり

以上でネットワークについてのまとめを終わります。
基本的なことですが、なかなか覚えきれないものですね。

ご覧いただき
ありがとうございました

この記事を書いた人

葉っぱ一号

葉っぱ一号

フロントエンドエンジニア

おいしいお店を探すのが好きです。おいしいお店のために遠出もしちゃいます。遠出したい衝動のためにおいしいお店を探すのかもしれません。そんなものですよね。