Network Seminar 2014
いい加減書かないとなーと思いつつ気づいたらこんなに時間が立っていました。
ネットワークってなんぞや
簡単にいえば、別々であるが相互に接続されたいくつかのコンピュータが何らかの作業を行うモデルのこと(コンピュータ・ネットワーク)。 昔はコンピュータが高価だったため、1台のコンピュータがすべてを賄うモデルが多く採用されていた。 最も知られる例として、インターネットがあげられる。 ネットワークの分類的には以下の2つの分類が重要となる。
インターネット・ハードウェア
伝送技術
- ポイント・トゥー・ポイント回線(Point to Point)
- 1対のコンピュータの間を接続し、パケット(相手に送るメッセージのようなもの)を送信する。パケットは複数のサーバーを経由する可能性があるので、最短経路を求めることが有用となる。
- ブロードキャスト回線(Broadcast)
- ネットワーク上のすべてのマシンにパケットを送信する。 それぞれのマシンはパケットを解析し、自分宛てだった場合は処理をし、そうでない場合は破棄する。 このような動作をブロードキャストという。一部のマシンにも送れる機能があるものはマルチキャストと呼ばれる。
規模
- PAN(Personal Area Network)
- 一人の人の範囲で機器の通信を可能にするネットワーク。 例として、Bluetooth、無線キーボード、マウスなどがあげられる。
- LAN(Local Area Network)
- 家庭内やオフィス、工場のような一つまたは複数の建物の中で運用される私有ネットワークである。 パソコンや家電機器などを接続し、プリンタなどの資源を共有する際に用いられる。 企業でLANが使われる時は企業ネットワーク(enterprise network)と呼ばれる。 有線LANの規格として、IEEE 802.3で標準化されているEthernetが有名である。
- MAN(Metropolitan Area Network)
- Metropolitanの文字にある通り、ひとつの都市をカバーするネットワークである。 一番の例といえば、多くの都市で使用されているケーブルテレビである。 またWiMAXももう一つのMANとして知られている。(IEEE802.16として標準化された)
- WAN(Wide Area Netowork)
- 国、大陸単位でつながる広大なネットワークである。 ISP(Internet Service Provider),NSP(Network Service Provider)などが例である。
ネットワーク・ソフトウェア
プロトコル階層
- なぜ層があるのか?
- ネットワークの複雑度を軽減させるため。層ごとに役割を分割し、他の層のことは他の層に任せるようにすることによって管理をしやすくする。
- プロトコルとは
- あるマシンの層が他のマシンの同じ層と会話をするときに用いられる決まりや慣習のこと。
- Peer(ピア)
- 異なるコンピュータ上で対応する階層を構成しているもの。 接続されているコンピュータで、同じプロトコルを用いて通信しているマシン同士のことも指す。
- 同じ層同士の通信
- ある層から対応する層へ直接通信するわけではなく、実際は直下の層にデータを渡し、最下層に届けられる。その後最下層から物理媒体を用いて相手に送られる。 隣り合う層の間にはインターフェイスと呼ばれる、下の層に対して上の層ができる操作とサービスを定義したものが存在する。
- ネットワーク・アーキテクチャ
- これらの一連のプロトコルと層の組み合わせのことを、ネットワーク・アーキテクチャと呼ぶ。
- プロトコル・スタック
- あるシステムで用いられる層ごとに存在するプロトコルリストのことをプロトコル・スタックと呼ぶ。
各層における設計上の問題点
- 信頼性
- データの誤り
- 受信した情報に誤りがないという確証はどこにもない。なぜならそれを知る手段がないからである。 これを防ぐために、誤り検出用の符号を用いて通信を行うことによって正しい情報が得られるまで取得し直すことができる。 もっと強力な場合、検出だけでなく訂正も可能となる。
- ルーティング
- 信頼性でもう一つ重要になる課題である。大抵の場合、送信元のマシンと送信先のマシンの間には複数の経路があり、大規模なネットワークとなるとどこか使えない回線があったり、ルーターが動いていない回路もあるかもしれないのである。ネットワークはこの判断を自動的に行い、現状での最短経路を見つけ出そうとする。これをルーティングという。 (ちょうど目的地までの最短ルートを教えてくれるカーナビと同じようなものである。)
- データの誤り
- ネットワークの進化
- 時間とともにネットワークは大きくなり、新しい設計が出現すると既存のネットワークと接続する必要があるかもしれない。こういう時に新しい設計だから繋げないという柔軟ではない設計だと困ってしまうので、ネットワークには柔軟な設計が求められている。その考えから出来たのは上に述べたプロトコル階層である。つまり問題となる部分を細く分割し、実装の詳細をブラックボックス化してしまうことによって解決しようとするのだ。(こんなかんじでいいのかな…?)
他にもアプローチ方法はある。いかなる層においても送信者と受信者を識別するための機構が必要となる。これを下位層ではアドレス付け、上位層では名前付けとよんでいる。
- 時間とともにネットワークは大きくなり、新しい設計が出現すると既存のネットワークと接続する必要があるかもしれない。こういう時に新しい設計だから繋げないという柔軟ではない設計だと困ってしまうので、ネットワークには柔軟な設計が求められている。その考えから出来たのは上に述べたプロトコル階層である。つまり問題となる部分を細く分割し、実装の詳細をブラックボックス化してしまうことによって解決しようとするのだ。(こんなかんじでいいのかな…?)
- 資源割り当て
- ネットワークにも当然資源があり(伝送回線の容量など)、ネットワークはホストに対して資源を提供する。ただしこれだとある特定のホストが資源を占有しすぎてしまうなどの問題点があるため、干渉し過ぎないようにする機構が必要となってくる。 多くのネットワークの設計では、とりあえずホストに帯域を割り当てる(通信するしないは別として)という方式を採用しておらず、ホストからの短い時間内での要求に対して帯域を動的に割り当てている。この設計を系統的多重化(statistical multiplexing)と呼ぶ。
Ethernet
IP
ICMP
TCP
UDP
DNS
BIND
DHCP
Routing
AS
EGP
IGP