ネットワークの勉強をするため「3分間ネットワーク基礎講座」という本を読みました。
私は2月からインフラエンジニアに転職しました。業務の中でネットワークのことを知らなすぎて危機感を感じたため、有名なマスタリングTCP/IP 入門編 第5版を読もうと試みたのですが、私にとっては難しすぎました。そこでもっと初心者寄りの本を探してこの本に行き着きました。
- 作者: 網野衛二
- 出版社/メーカー: 技術評論社
- 発売日: 2010/09/11
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 8回
- この商品を含むブログ (11件) を見る
本の紹介と感想
本書を読んだ率直な感想は、「めっちゃくちゃわかりやすかった」です。ネットワークについてちゃんと学んだことがない人が最初に読む一冊としてはかなり良い選択だと思います。
本書は「3分間Networking」というWebサイトを元に書籍化したみたいです。
本書の特徴は、
対話形式で読みやすい
OSI参照モデルを中心に広範囲のネットワークについてカバーしている
といった点が挙げられるかと思います。
対話形式である点は、正直好き嫌いがあるかと思うのですが、私は読みやすく感じました。もともとネットワークには堅苦しいイメージがあり、抵抗感があったのですが、難しいこともカジュアルにポイントを押さえて書いてあったので、頭に入りやすかったです。
内容としては、最初にネットワークの基礎について書いてあり、OSI参照モデルの話が出て、そこからOSI参照モデルの各レイヤーを下から順に丁寧に解説していく感じです。特にレイヤー1〜4に大部分のページが割かれており、レイヤー5以上は最後にちょろっと触れてあるだけでした。 本書を読むと、OSI参照モデルの全体像と各レイヤーの役割・要素技術の知識が得られます。
私はTCPとかIPアドレスとかふんわりとしか理解してなかったので、頭の中が整理されてちょうどよかったです。
これでマスタリングTCP/IP 入門編 第5版と戦えるようになっているはずだと信じて読み進めていきたいと思います!
読書ノート
私がポイントだと思ったことだけをまとめた読書ノートです。
1章 ネットワークの基礎知識
回線交換とパケット交換
- データ通信には回線交換とパケット交換がある。コンピュータネットワークはパケット交換方式。
データをパケットに分割して送るため回線を占有する時間が短く、回線を複数のコンピュータで共有できる。
ネットワークの構造
パケット交換機なしでケーブルの分岐でつながっている範囲のことをセグメントと呼ぶ。分岐させるためにハブという機器を使う。
セグメントの範囲内にあるコンピュータはパケット交換機なしで直接データのやりとりができる。このようなネットワークの構造をマルチアクセスネットワークと呼ぶ。一方、専用線を用いて固定した相手としかデータのやりとりができないネットワークをポイントツーポイントネットワークと呼ぶ。
LANとWAN
LAN(Local Area Network)は地域的に狭い範囲で自身の責任で構築するネットワーク。
WAN(Wide Area Network)は離れた地域にあるLAN同士を電気通信事業者(NTTやKDDIなど)の通信ケーブルを借りてつないだネットワーク。
世界規模で最大のWANがインターネット。インターネット接続サービスを行うプロバイダはISP(Internet Service Provider)と呼ばれる。
OSI参照モデル
OSI参照モデル(Open Systems Interconnection Reference Model)はデータ通信の標準化を行うために作られたデータ通信全体の「段階と手順の設計図」。 OSI参照モデルではデータ通信を7つの段階に分けている。この段階のことを層(レイヤー)と呼ぶ。
レイヤーはそれぞれ独立している。すなわち、基本的にはレイヤーのプロトコル変更は他のレイヤーに影響しない。
下のレイヤーは上のレイヤーのために働き、上のレイヤーは下のレイヤーのことに関知しない。
カプセル化
データとデータを送るために必要なものがまとまった状態をプロトコルデータユニット(PDU)と呼ぶ。 それぞれのレイヤーごとにPDUがあり、それらが順々にくっついて実際に送信するPDUができるイメージ。
このようにデータに制御情報をくっつけてPDUを作り上げることをカプセル化と呼ぶ。カプセル化で追加される制御情報は、データの前につくときはヘッダー、うしろにつくときはトレーラーと呼ぶ。
プロトコル
上下のプロトコルをインターフェースでつなぐことでレイヤー7からレイヤー1までを一つのつながったプロトコル群と捉えることができる。基本的にはどのプロトコル群を使うかによって各レイヤーで使用するプロトコルが決まる。
現在最も使われているのがインターネットで使われているTCP/IPプロトコル群である。プロトコルは「データの中身を決める」「ヘッダーを決める」「やりとりの手順を決める」
TCP/IP モデル
2章 信号の伝送と衝突
レイヤー1の役割と概要
レイヤー1の役割は、ケーブルがつながっている機器への信号の伝達。
信号が流れるパイプとなる通信媒体には有線と無線があり、優先には電気信号を使う銅線のUTP(Unshielded Twist Pari Code)と光信号を使う光ファイバーがある。
コンピュータとケーブルの仲介役であるインターフェースは、コンピュータが送りたいデータをケーブルに合った信号に変換してケーブルに流し、ケーブルから流れてきた信号をコンピュータで使うデータに変換する。
コンピュータで使われるインターフェースとして、LAN用のケーブルに接続するためのNIC(Network Interface Card)が一般的。
WANの場合の信号変換器をDCE(Data Circuit terminating Equipment:回線終端装置)と呼ぶ。
信号と衝突
インターフェースはビットを信号に、信号をビットに変換する機器である。信号にはアナログ信号とデジタル信号がある。
ビットは「0」か「1」、デジタル信号は「ON」か「OFF」であるため、デジタル信号はビットを表現しやすい。
信号には減衰、ノイズ・干渉、衝突などの問題が発生する。
ハブ
ハブの機能1:複数の機器をつなげてネットワークを構築する機能。ハブにケーブルでつながっている機器は、同一のケーブルにつながっているのと同じ扱いになり、ハブにつながっている機器同士で信号のやりとりが可能になる。
ハブの機能2:ハブは減衰によって崩れた信号を元の形に増幅・成形する。増幅だけを行う機械としてリピーターというものがある。
ハブとハブをつなぐ接続をカスケード接続と呼ぶ。ハブをカスケード接続していけば大きなネットワークを作ることができる。
ハブは受信したポート以外のすべてのポートに受信した信号を送信する。これをフラッディング(Flooding)と呼ぶ。
信号を送信すると衝突が起きるかもしれない範囲のことを衝突ドメインと呼ぶ。同じハブにつながっているコンピュータ同士は同時に信号を送信すると衝突が発生する可能性があるため、ハブでつながっている範囲は衝突ドメインにあることになる。(違うハブにつながっていてもハブ同士をカスケード接続していると衝突ドメインになる)「たまたま同じタイミング」で信号を送信する可能性を減らすためには衝突ドメインは小さくしなければならない。
レイヤー2の役割と概要
レイヤー2では、信号が届く範囲であるセグメント内でのデータ通信を考える。
レイヤー2ではWANとLANでルールが異なる。LANのデファクトスタンダードはイーサネット。
レイヤー2アドレスとイーサネット
アドレスはデータの送りかたによってユニキャスト、ブロードキャスト、マルチキャストの3種類存在する。
ユニキャストは「1対1」の通信、ブロードキャストは「1対全」の全員宛の通信、マルチキャストは「1対多」の複数機器宛の通信。それぞれの機器は最低1つ以上のユニキャストアドレスを持つ。ルーターのように複数のインターフェースを持つ機器は、インターフェースごとにユニキャストアドレスを持つ。
ユニキャストアドレスはユニークでなければならない。一方マルチキャストアドレスは「グループ番号」といった扱いであるため、同じアドレスを持つ機器が複数あってもよい。
イーサネットで使われるアドレスはMACアドレス(Media Access Control Address)と呼ばれるアドレスで、このアドレスはインターフェースにつけられた固定のアドレスである。
イーサネット
イーサネットでは「イーサネットヘッダー」と「イーサネットトレーラー」をデータグラムにつけて「イーサネットフレーム」にカプセル化する。
ヘッダーには宛先のMACアドレス、送信元のMACアドレス、中身を識別するタイプがつき、トレーラーにはエラーチェックを行うFCS(Frame Check Sequence)がつく。イーサネットではハブによりすべての機器に届いたフレームは自分宛以外の場合は破棄する。
イーサネットでは、CSMA/CD(Carrier Sense Multiple Access / Collision Detection)というアクセス制御によりなるべく衝突が起きないようにしている。
スイッチ
CSMA/CDは衝突を起こりにくくする仕組みであるため、衝突ドメインのコンピュータの台数が多い場合、衝突が起きて効率が悪くなる。これを防ぐために「信号が通る道を分ける」ための機器であるスイッチ(スイッチングハブ、L2スイッチなどとも呼ばれる)をハブの代わりに使用する。
現在LANで使われているUTPや光ファイバーのケーブルは送信と受信の信号の通り道は分かれている。そのため衝突はケーブル上では発生せず、ハブで発生する。スイッチは「MACアドレスフィルタリング」と「バッファリング」で衝突を防ぐ。
スイッチはフレームを受信した際、送信元MACアドレスと受信したポートの対応をアドレステーブルという対応表の形で記憶する。これにより宛先MACアドレスに対応したポートからのみフレームを送信するのがMACアドレスフィルタリングである。
MACアドレスフィルタリングにより別の宛先のフレームが同時にスイッチに届いても衝突が発生しなくなる。
3章 IPアドレッシング
レイヤー3の役割と概要
インターネットプロトコル
レイヤー2のイーサネットではアドレスとしてMACアドレスを使ったが、MACアドレスに含まれているのはベンダーコードとベンダーがつけた番号だけで、「場所を特定できない」アドレスである。
レイヤー2で使用するアドレスは「物理アドレス」と呼ばれ、レイヤー3で使用するアドレスは「論理アドレス」と呼ばれる。違いはアドレスに位置情報が含まれているかいないか。
「アドレッシング」と「ルーティング」によりインターネットワークを行うためのプロトコルとして、TCP/IPプロトコル群で使われるのがIP(Internet Protocol)
データにIPヘッダーがついた状態のレイヤー3PDUはIPデータグラムと呼ばれる。
IPアドレス その1
IPアドレスはネットワーク管理者がコンピュータに割り当てる。インタフェースが故障した場合、物理アドレスは変わるが論理アドレスは変わらない。
MACアドレスはインターフェースに付属しているため、コンピュータどこにいても同じアドレスであるのに対して、論理アドレスはコンピュータの場所を変えるとアドレスも変わる。IPv4では32ビットで「ネットワークの番号」の「コンピュータの番号」を表す。8ビット毎の区切り(オクテット)を10進数にして表記される。
IPアドレス その2
「ネットワークの番号」は接続されているすべてのネットワークでユニークである必要がある。これはICANN(The Internet Corporation for Assigned Name and Number)という組織が割り当てている。ICANNがIPアドレスを実際に使うプロバイダーや企業に貸し出しているイメージ。
どのオクテットまでがネットワーク番号かでクラスに分けられる。ネットワーク番号の部分のビット数が少ないとそれだけ多くのコンピュータを所有する大きなネットワークになれる。
ICANNによりネットワーク番号が割り振られれば、コンピュータ番号(これをホスト番号と呼ぶ)はそのネットワーク管理者が決められる。
ホスト番号のビットがすべて0のアドレスはネットワークアドレスで、ネットワークそのものを示すアドレス。
ホスト番号のビットがすべて1のアドレスはブロードキャストアドレスで、ネットワークに所属するすべてのホストを示す。
サブネッティング
IPアドレスは階層型のアドレスであり、大きなネットワークを小さなネットワークに分割できる。このように分割された小さなネットワークのことをサブネットワーク、またはサブネットと呼ぶ。
ホスト番号のビットを、サブネット番号とホスト番号に分割する。
サブネットを使用する場合、IPアドレスはネットワーク番号、サブネット番号、ホスト番号で構成される。サブネットを使用する場合はサブネットマスクと呼ばれるビット列をIPアドレスと一緒に表記する。ネットワーク番号・サブネット番号のビットをすべて1、ホスト番号を0にしたもの。サブネットを使用していなければクラスによってどこまでがネットワーク番号かわかる。
クラスレスアドレッシング
クラスフルアドレッシングは3つのクラスに分けるため、組織が使用するIPアドレスの個数がクラスにぴったりと当てはまらないと無駄が多くなる。そこで登場したのがクラスレスアドレッシング。
クラスレスアドレッシングでは必要なIPアドレスの個数からネットワーク番号を決める。例えばクラスCのネットワーク(192.168.32.0〜192.168.39.0など)をまとめて1つのネットワークとして運用する。
サブネットマスクと同様にネットワーク番号のビット数を表す値としてプレフィックス長がある。IPアドレスのうしろにスラッシュを書いてネットワーク番号のビット数を書く(例:192.168.32.0/21)。プレフィックス長はCIDR(Classless Inter-Domain Routing)表記とも呼ぶ。
DHCP
DHCP(Dynamic Host Configuration Protocol)は、割り当てるIPアドレスを管理して実際に割り当て作業を行うサーバ(DHCPサーバ)と割り当ててもらうクライアント(DHCPクライアント)から成り立つ。
イーサネットを使ってIPデータグラムをやりとりするためには「宛先MACアドレス」「送信元MACアドレス」「宛先IPアドレス」「送信元IPアドレス」の4つのアドレスが必要
ARP
ARP(Address Resolution Protocol)は宛先IPアドレスに対応したMACアドレスを調べる。そのためにはIPアドレスとMACアドレスの対応表であるARPテーブルを参照する。
ARPテーブルに宛先IPとMACアドレスの対応がない場合、ブロードキャストでネットワーク内の全コンピュータにARP要求が送信される。ARP要求を受け取ったコンピュータのうち、指定されたIPアドレスを持つコンピュータだけがARP応答を返す。ARP応答を受け取ったコンピュータはARPの結果をARPテーブルに載せる。
ARPテーブルの情報は一定時間で消去される。
DNS
DNS(Domain Name System)はドメイン名とIPアドレスを対応させるシステム。ドメイン名とIPアドレスの対応データベースを持っているDNSサーバに対して問い合わせを行い、宛先のIPアドレスを手に入れる。
DNSサーバは各組織に1つずつあり、その組織のドメイン名のみを管理している。DNSは世界中のドメイン名とホスト名を管理する分散型データベースである。
4章 ルーティング
アドレスと経路
宛先IPアドレスは最終的なデータの届け先を示すのに対し、宛先MACアドレスは同じネットワーク内での宛先(次の届け先)を特定する。宛先IPアドレスは最後まで変わらないが、宛先MACアドレスは変わる。
ルーターは宛先までの経路を示しているのではなく、次にどこへ送ればよいかだけ決定している。
ルーターがなければ別のネットワークへデータグラムを送ることはできない。
コンピュータは「宛先が別のネットワークにある場合はルーターへ送信する」「宛先が同じネットワークにある場合は直接宛先へ送信する」というルールで動いている。コンピューターが指定するルーターのことをデフォルトゲートウェイと呼ぶ。
ルーター
デフォルトゲートウェイ
ルーターがネットワークを分断することでブロードキャストが他のネットワークに流れないようにしている。
衝突ドメインはスイッチが区分けし、ブロードキャストドメインはルーターが区分けしている。ハブはどちらにも影響を及ぼさない。デフォルトゲートウェイはコンピューターが次に送るルーターであり、ネットワークの出入口となる。
コンピュータは宛先が決定すると、宛先が同じネットワークかどうか調べて
別ネットワークならば、デフォルトゲートウェイにARPして、デフォルトゲートウェイのMACアドレスを入手
ルーティング
ルーターは最適な経路を見つけるために他のネットワークへの経路をすべて知る必要がある。
経路を知る方法としてルーターが自動で情報を交換し合い経路を知る動的ルーティングという方法がある。動的ルーティングのメリットは障害があった場合に、自動で新たな最適経路にルーティングテーブルを書き換えること。
動的ルーティングのデメリットはルーター同士が情報を交換し合うため、その分の回線の転送を圧迫すること。さらに、最適な経路を計算するための処理能力も必要。
ルーティングプロトコル
ICMP
IP以外のレイヤー3のプロトコルとしてICMP(Internet Control Message Protocol)がある。ネットワークの制御や管理に使用される。
通常IPデータグラムのペイロードにはTCPセグメントかUDPセグメントが入るが、これらの代わりにICMPメッセージを入れて送る。
ICMPにはQueryメッセージとErrorメッセージがある。Queryは状態を調査するために使用されるメッセージで、Errorはエラーを通知するためのメッセージ。
pingやtracerouteはICMPを利用したコマンドである。
5章 コネクションとポート番号
レイヤー4の役割と概要
レイヤー4の役割のにはエラーで届かなかった場合にデータを送り直すエラー回復や、処理しきれないデータが溢れ出てしまうのを防ぐフロー制御などがある。
ポート番号を使って、どのアプリケーションにデータを届けるかを判別する。IPアドレスやMACアドレスだけではアプリケーションを識別できない。
レイヤー4で用いられるプロトコルにはTCP(Transmission Control Protocol)とUDP(User Datagram Protocol)がある。主な役割は「エラー回復」「フロー制御」「アプリケーションの識別」
コネクションとセグメント
TCPではアプリケーション間のデータのやりとりを行う。このアプリケーション間のやりとりを行うデータの道のことをコネクションという。
TCPで作られる通信路は仮想的な通信路と呼ばれる。この仮想的な通信路を作り出すことをコネクションの確立という。
大きいデータはMSS(Max Segment Size)に分割し、その先頭番号をシーケンス番号とする。
ポート番号
- ポートとアプリケーションを接続する機能をソケットという。
ネットワークアドレス変換
ICANNが管理しているIPアドレスはグローバルIPアドレスと呼ばれる。インターネットにつながないネットワークのために自由に使っていいアドレスとしてプライベートIPアドレスが用意されている。
IPアドレスの枯渇問題の対策として、クラスレスアドレッシングやIPv6があるが、もっとも手軽かつ有効な手段として使用されるのがネットワークアドレス変換(NAT)である。
内部ネットワークにはプライベートIPアドレスを割り振り、NATによってプライベートIPアドレスをグローバルIPアドレスに変換する。
NATではプライベートIPアドレスとグローバルIPアドレスは1対1で対応しなけらばならないため、保有するグローバルIPアドレス数以上のホストはインターネットに同時に接続することができない。これを解決するのがNATを発展させたNAPTである。
NAPT
NAPT(Network Address Port Translation)の最大の特徴は、1つのグローバルIPアドレスで複数台が接続可能であること。NAPTではIPアドレスだけでなくポート番号も変換することによって複数台を識別可能にしている。
NAPTではNATテーブルにない変換はされないためセキュリティ面のメリットもある。一方、LAN内部に外部に公開したいサーバがある場合は、手動で変換を入力しておく(静的NAPT)