ネットワーク

現在勉強している基本情報技術者試験についてまとめたものです。
自分のアウトプット用なので見やすさなどは期待しないでください。

# LANとWAN

局地的な狭い範囲のネットワークを**LAN**、LAN同士をつなぐ広域ネットワークを**WAN**と呼ぶ。

**専用回線方式**
コンピュータがデータのやり取りをするためには互いを結ぶ通信路が必要で、最もシンプルな形の直接１本の回路で結んでしまう方式。

**交換方式**
専用回線方式では１対１の通信しか行えないので、それぞれのコンピュータを交換機に接続し、交換機が回路の選択を行なって必要に応じた通信路を確立させる方式。
交換方式には、大きく分けて次の２種類がある。

・**回線交換方式**
送信元から送信先にまで至る経路を交換機がつなぎ、通信路として固定する。

・**パケット交換方式**
**パケット**という単位に分離された通信データを、交換機が適切な回路へと送り出すことで通信路を形成する。

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

|  |  |
|:-:|:--|
| 専用線 | 拠点間を専用回線で結ぶサービスで、回線速度と距離によって費用が決まる。セキュリティは高いが、非常に高額。 |
| フレームリレー方式 | パケット交換方式を元に、伝送中の**誤り制御を簡略化して高速化**を図ったもので、データ転送の単位は可変長のフレームを用いる。 |
| ATM交換方式（セルリレー方式） | パケット交換方式を元に、データ転送の単位を可変長ではなく**固定長のセル（53バイト）**とすることで高速化を図ったもので、パケット交換方式と比べ、伝送遅延は小さい。 |
| 広域イーサネット | LANで一般的に使われているイーサネット技術を用いて拠点間を接続するもので、高速で一般的に使用している機器をそのまま使えるためコスト面でのメリットも大きい。 |

LANを構築するときに、各コンピュータをつなぐ接続形態のことをトポロジーと呼び、代表的なものは次の３つがある。

・スター型
ハブを中心として、放射状に各コンピュータを接続する形態。

・パス型
１本の基幹となるケーブルに、各コンピュータを接続する形態。

・リング型
リング状に各コンピュータを接続する形態。

LANの規格として、現在最も普及しているのが**イーサネット**で、IEEEによって標準化されており、次のような規格に分かれる。
伝送速度に使われている**bps(bits per second)**という単位は、１秒間に送ることのできるデータ量を表している。

パス型の規格

| 規格名称 | 伝送速度 | 伝送距離 | 伝送媒体 |
|:-:|:-:|:-:|:-:|
| 10BASE5 | 10Mbps | 最大500m | 同軸ケーブル(Thick coax) |
| 10BASE2 | 10Mbps | 最大185m | 同軸ケーブル(Thin coax) |

スター型の規格

| 規格名称 | 伝送速度 | 伝送距離 | 伝送媒体 |
|:-:|:-:|:-:|:-:|
| 10BASE-T | 10Mbps | 最大100m | ツイストペアケーブル |
| 100BASE-TX | 100Mbps | 最大100m | ツイストペアケーブル |
| 1000BASE-T | 1Gbps | 最大100m | ツイストペアケーブル |

**CSMA/CD(Carrier Sense Multiple Accsess/Collision Detection)方式**
イーサネットがアクセス制御方式としてを採用している方式で、ネットワーク上の通信状況を監視して、他に送信を行なっている者がいない場合に限ってデータの転送を開始する。

それでも同時に送信してしまい、通信パケットの**衝突（コリジョン）**が発生した場合は、各々ランダムに求めた時間分待機してから、再度送信を行う。

このように通信を行うことで、１本のケーブルを複数のコンピュータで共有することができる。

**トークンリング**
リング型LANの代表格であり、アクセス制御方式にトークンパッシング方式を用いる。

トークンパッシング方式では、送信の権利を表す**トークン**という小さなデータがネットワーク上を一方通行で流れており、以下の順序で処理が行われる。

1. 平常時は、トークンだけがネットワーク上をぐるぐると流れており（**フリートークン**）、データを送信したいときは、このトークンにデータをくっつけて次へ流す（ビジートークン）。
2. 自分宛ではない場合はそのまま次へ流し、自分宛の場合はデータを受け取ってから、マークをつけて再度ネットワークに流す。
3. マークが付加されたトークンが送信元に到着すると、送信元はトークンをフリートークンに戻してからネットワークに放流することで、ネットワークを平常時の状態へと戻す。

**無線LAN**
ケーブルを必要とせず、電波などを使って無線で通信を行うLANで、IEEE802.11シリーズとして規格化されている。

無線なので電波の届く範囲であれば自由に移動することができる反面、電波を盗聴されてしまう恐れもあるため、通信を暗号化するなどしっかりとしたセキュリティ対策が必要になる。

ネットワークにより、複数のコンピュータが組み合わさって働く処理の形態にはいくつかの種類があり、代表的なものは次の２つ。

| 名称 | 仕組み | 長所 | 短所 |
|:-:|:--|:--|:--|
| **集中処理** | ホストコンピュータが集中的に処理をして、他のコンピュータはそれにぶら下がる構成。 | データの一貫性を維持・管理しやすく、セキュリティの確保や運用管理が簡単。 | システムの拡張が大変で、ホストコンピュータが壊れると全てが止まってしまう。 |
| **分散処理** | 複数のコンピュータに負荷を分散させて、それぞれの処理を行うようにした構成。 | システムの拡張が簡単で、一部のコンピュータが壊れても全体には影響しない。 | データの一貫性を維持・管理しずらく、セキュリティの確保や運用管理が大変。 |

**クライアントサーバシステム**
コンピュータの性能が上がってきたことにより、分散処理ではあるが、集中処理のいいところも取り込んだようなシステム形態。

集中的に管理した方が良い資源やサービスを提供する**サーバ**と、必要に応じてリクエストを投げる**クライアント**という、２種類のコンピュータで処理を行う構成で、現在の主流となっている。

# プロトコルとパケット

**プロトコル**
ネットワークを通じてコンピュータ同士がやり取りするための約束事。
プロトコルには様々な種類があり、それらを７段階に分けたのが**OSI基本参照モデル**で、基本的にはこの階層全てを組み合わせることで、コンピュータ同士のコミュニケーションが成立するようになっている。

| 階層 | 名称 | 内容 | 装置名 | 装置の役割 |
|:-:|:-:|:--|:-:|:--|
| 第７階層 | アプリケーション層 | 具体的にどんなサービスを提供するのか | ゲートウェイ | プロトコル変換を行うことで、トランスポート層以上が異なるネットワーク同士を中継する。 |
| 第６階層 | プレゼンテーション層 | データはどんな形式にするか | 〃 | 　　　　　〃 |
| 第５階層 | セッション層 | 通信の開始から終了までをどう管理するか | 〃 | 　　　　　〃 |
| 第４階層 | トランスポート層 | 通信の信頼性はどう確保するか | 〃 | 　　　　　〃 |
| 第３階層 | ネットワーク層 | ネットワークとネットワークをどう中継するか | ルータ | パケットのIPアドレス情報を使って、ネットワーク間を中継する。 |
| 第２階層 | データリンク層 | 同一ネットワーク内でどう通信するか | ブリッジ | パケットのMACアドレス情報を使って、ネットワーク内のセグメント間を中継する。 |
| 第１階層 | 物理層 | 物理的にどう繋ぐか | NIC、LANケーブル、リピータ | 電気的な信号を送ったり受けたり増幅したりする。 |

現在広く使われているTCP/IPというプロトコルを使うネットワークでは、通信データをパケットに分割して通信路へ流す。

なぜわざわざ分割して流すのかというと、通信路上を流せるデータ量は有限のため大きなデータをそのまま流そうとするとそのデータが流れ終わるまで誰もネットワークを利用できなくなるためである。

ネットワークの伝送に要する時間は、次の指揮によって求めることができる。

**伝送時間 = データ量 ÷ 回路速度**

一般的な使用法で実際に出る速度のことを**実行速度（理論値 × 伝送効率）**といい、理論値に対して実際に出る速度の割合を表すのが**伝送効率（実行速度 × 理論値）**という。

一方、ネットワークを流れるパケットも、分割したサイズがそのまま流れるわけではなく、パケット一つ一つに制御情報が付加されて、サイズが膨らんでしまう。

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

**NIC（LANボード）**
コンピュータをネットワークに接続するための拡張カード。

**MACアドレス**
ネットワーク機器に製造段階で割り振られる番号で、IEEEによって管理される製造メーカー番号と、自社製品に割り振る製造番号との組み合わせでできており、世界中で重複しない一意の番号であることが保証されている。

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

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

そこで、リピータを間に挟むことでこの信号を成形して再送出するので、信号のゆがみを解消することができる。
ただし、パケットの中身を解さず、ただ電気信号を増幅するだけなので、不要なパケットも中継してしまう欠点もある。

**セグメント**
ネットワークに流したパケットが、無条件に流される範囲（論理的に１本のケーブルでつながっている範囲）のこと。

一つのセグメント内に大量のコンピュータが繋がれていると、パケットのコリジョンが多発するようになって、回線の利用効率が下がる。

**ブリッジ**
データリンク層の中継機能を提供する装置で、流れてきたパケットのMACアドレス情報を確認し、必要であれば他方のセグメントへとパケットを流す。

ブリッジは、流れてきたパケットを監視することで、最初にそれぞれのセグメントに属するMACアドレスの一覧を記憶し、以降はその一覧に従って、セグメント間を橋渡しする必要のあるパケットだけ中継を行う。
中継パケットはCSMA/CD方式に従って送出するため、コリジョンの発生が抑制されて、ネットワークの利用効率向上に役立つ。

**ハブ**
LANケーブルの接続口を複数持つ集線装置で、内部的にリピータを複数重ねたものであるリピータハブと、ブリッジを複数重ねたものであるスイッチングハブの２種類があり、それぞれ以下のように動作する。

リピータハブ・・・パケットが流れてくると無条件に全てのポートへ送出する。
スイッチングハブ・・・パケットが流れてくると宛先MACアドレスに該当するコンピュータがつながっているポートにだけ送出する。

**ルータ**
ネットワーク層の中継機能を提供する装置で、異なるネットワーク同士の中継役として、流れてきたパケットのIPアドレス情報を確認した後に、最適な経路へとパケットを転送する。

ルータはパケットに書かれた宛先IPアドレス（どのネットワークに属する何番のコンピュータかという内容を示す情報）と自身が持つ**経路表（ルーティングケーブル）**とを付き合わせて、最適な転送先を選ぶ**経路選択（ルーティング）**を行う。

**ゲートウェイ**
トランスポート層以上が異なるネットワーク間で、プロトコル変換による中継機能を提供する装置で、ネットワーク双方で使っているプロトコルの差異をこの装置が変換、吸収することで、お互いの接続を可能とする。

# データの誤り制御

ケーブル上を流れるデータは波長の範囲から０か１に値を置き換えた電気的な信号なので、伝送距離が伸びれば信号は減衰していき、横から別の電気的な干渉を加えれば波形は乱れる。
こうしてデータの誤りが生まれる。

**パリティチェック**
送信するビット列に対して、**パリティビット**と呼ばれる検査用のビットを付加することで、データの誤りを検出する方法。

ビット列の中の１の数が偶数になるようにパリティビットの値をセットする偶数パリティと奇数になるようにセットする奇数パリティの２種類がある。

これにより、データの一部が化けた場合の１の数と、あらかじめ付加されたパリティビットの偶数（奇数）の整合性がなくなり誤りを検出できる。

ただしパリティチェックで可能なのは１ビットの誤りを検出することだけなので、偶数このビットの誤りは検出できず、どのビットが誤りかということもわからないため、誤り訂正も行えない。

**水平垂直バリティ**
バリティビットは、どの方向に付加するかによって**垂直バリティ**と**水平バリティ**に分かれ、この２つを組み合わせて使うこと。
縦横両面から誤りを検出できるので、１ビットの誤りであれば位置を特定することができ、誤り訂正が行える。

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 | 0 | 1 | 0 |

**CRC(巡回冗長調査)**
ビット列を特定の式（生成多項式）で割り、そのあまりをチェック用のデータとして付加する方法。

送信側は、計算で得られた余りを、元々のビット列にくっつけて送信データとすることで、生成多項式で割り切れるはずの数に変わる。
受信側は、送信側と同一の生成多項式を使って受信データを割り算し、割り切れるか（問題がないか）を確認する。

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

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

ネットワーク上で正しくデータが送られたことを保証する仕組みであるTCPと、複数のネットワークをつないでその上をパケットが流れる仕組みを想定したIPという２つのプロトコルの組み合わせが、インターネットにおける**デファクトスタンダード**（事実上の標準）である。

両者が組み合わさることで、複数のネットワークを渡り歩きながらパケットが正しく相手に送り届けることができ、こうしたインターネットの技術を、そのまま企業内LANなどに転用したネットワークのことを**イントラネット**と呼ぶ。

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

・**IP(Internet Protocol)**
経路制御を行い、ネットワークからネットワークへとパケットを運んで相手に送り届ける。
IPによって構成されるネットワークでは、コンピュータやネットワーク機器などを識別するため、IPアドレスという番号を割り当てて管理している。

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

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

・**UDP(User Datagram Protocol)**
事前に送信相手と接続確認をとったりせず、一方的にパケットを送りつける**コネクションレス型**の通信プロトコルで、パケットの再送制御などを一切行わないため信頼性に欠けるが、その分高速。

**IPアドレス**
TCP/IPのネットワークに繋がれているコンピュータやネットワーク機器に割り振られている番号で、必ず一意の番号が３２ビットで割り振られている。

例として11000000101010000000000100000011の場合

８ビットずつに区切って、それぞれを１０進数で表し、

11000000 10101000 00000001 00000011
　192　　　　168　　　　1　　　　　3

それらを.でつないで表記する。
192.168.1.3

IPアドレスには下記の２種類がある。

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

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

IPアドレスの内容は、ネットワークごとに分かれる**ネットワークアドレス部**と、そのネットワーク内でコンピュータを識別するための**ホストアドレス部**とに分かれている。

一般的には使用するネットワークの規模によって下記の３つのクラスに分けられている。

| 名称 | 先頭ビット | ネットワークアドレス部 | ホストアドレス部 |
|:-:|:-:|:-:|:-:|
| **クラスA** | 0 | 8ビット | 24ビット |
| **クラスB** | 10 | 16ビット | 16ビット |
| **クラスC** | 110 | 24ビット | 8ビット |

ホストアドレス部が全て０か１となるアドレスは、それぞれネットワークアドレス（全て０）とブロードキャストアドレス（全て１）という意味で予約されているため割り当てには使えない。

**ブロードキャスト**
同一ネットワーク内のすべてのホストに対して、一斉に同じデータを送信することで、ブロードキャストを行うには、宛先としてホストアドレス部がすべて１となるIPアドレスを指定する。

ブロードキャストはOSI階層モデル第３層（ネットワーク層）のルータを超えてパケットが流れることはない一方、第２層以下の機器は、このパケットを受信するとすべてのポートへと転送する。

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

**サブネットマスク**
一番小規模のクラスC（２５４台）よりももっと少ないホスト数でネットワークを分けたい場合に用いる方法で、各ビットの値によって、IPアドレスのネットワークアドレス部とホストアドレス部とを再定義することができる。

**DHCP(Dynamic Host Configuration Protocol)**
IPアドレスの割り当てなどといった、ネットワークの設定作業を自動化することができるプロトコル。

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

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

**ドメイン名**
IPアドレスに対して文字で別名をつけたもので、例として以下のように書き表す。

www（コンピュータの名前）.組織の名前.co（組織の種類）.jp（国の名前）

このドメイン名とIPアドレスとを関連づけして管理しているのが**DNS(Domain Name System)**で、**DNSサーバ**に対して問い合わせるとそれぞれに対応するIPアドレスやドメイン名が返ってくる。

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

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

| プロトコル名 | 説明 | ポート番号 |
|:-:|:--|:-:|
| HTTP(HyperText Transfer Protocol) | Webページの転送に利用するプロトコルで、Webブラウザを使ってHTMLで記述された文章を受信するときなどに使う。 | 80 |
| FTP(File Transfer Protocol) | ファイル転送サービスに利用するプロトコルで、インターネット上のサーバにファイルをアップロードしたり、サーバからファイルをダウンロードしたりするのに使う。 | 制御用: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)

自宅からインターネットに接続する場合、ほとんどの人が**インターネットプロバイダ**（ISP、**プロバイダ**）と呼ばれる接続事業者を利用することになる。

その際に、インターネットで使いたいサービスの多くが**WWW**で、このサービスは**Webブラウザ（ブラウザ）**を使って、世界中に散在するWebサーバから文字や画像、音声などの様々な情報を得ることができる。

WWWのサービスでは**Webブラウザ（Internet Explorer、Firefoxなど）**が**Webサーバ**にリクエストを行い、送られてきたファイルをブラウザが整形して表示している。
このやりとりに使われているプロトコルが**HTTP**。

**HTML(HyperText Markup Language)**
Webページを記述している言語で、タグと呼ばれる予約語をテキストファイルの中に埋め込むことで、文章の見栄えや論理構造を指定するようになっている。
代表的なタグには以下のようなものがある。

| タグ | 内容 |
|:-:|:--|
| HTML | HTMLで書かれたページであることを表す。 |
| HEAD | ページのヘッダを表す。 |
| TITLE | ページのタイトルを表す。 |
| BODY | ページの本文を表す。 |
| P | 段落を表す。 |
| IMG | 画像を表示する。 |
| H1 | 見出しを表す。 |

**URL(Uniform Resource Locator)**
Web上で取得したいファイルの場所を指し示す表記方法で、次のような形式になっている。

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

# 電子メール

**電子メール**では、ネットワーク上のメールサーバをポスト兼私書箱のように見立てて、テキストや各種ファイルをやりとりする。
昔はテキスト情報しかやりとりできなかったが、**MIME(Multipurpose Internet Mail Extension)**という規格の登場によって、様々なファイル形式が扱えるようになった。

**メールアドレス**
電子メールのやりとりに使われる、次のような形式のもの。

○○（ユーザ名）@××.co.jp（ドメイン名）

電子メールには、その目的に応じて次の３種類の宛先を使い分けできるようになっている。

| 種類 | 内容 |
|:-:|:--|
| TO | 送信したい相手のメールアドレスをこの欄に記述する。 |
| CC | Carbon Copyの略で、参考までにコピーを送りたい相手などのメールアドレスをこの欄に記述する。 |
| BCC | Blind Carbon Copyの略で、他者に伏せた状態でコピーを送りたい相手などのメールアドレスをこの欄に記述する。 |

CCやBCCなど、同じメールを複数の相手に出すやり方を**同期メール**と呼ぶ。

**SMTP**
電子メールの送信に使用するプロトコルで、SMTPに対応したサーバのことをSMTPサーバと呼ぶ。
SMTPサーバには、電子メールソフトから送信されたメール本文を受け付ける役割と、宛先に書かれたメールアドレスを見て相手先のメールサーバへとメールを配送する２つの役割がある。

**POP**
電子メールを受信するときに使用するプロトコルで、POPに対応したサーバのことをPOPサーバと呼ぶ。
POPサーバは、電子メールソフトなどのPOPクライアントからリクエストが来ると、そのユーザのメールボックスから受信済みのメールを取り出して配送する。
現在はPOP Version3を意味する**POP3**が広く使われている。

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

**MIME**
電子メールでは、本来ASCII文字しか扱うことができないが、日本語などの２バイト文字や、画像データなどファイル添付を行えるようにする拡張機能。
暗号化や電子署名の機能を加えた**S/MIME**もある。

**機種依存文字**
特定のコンピュータでしか表示できない文字で、丸付数字、ギリシア文字、単位、省略文字などがある。