事前準備

事前準備(ソフトウェアインストール)

Tera Team のインストールの仕方はここに示す。

Wireshark のインストールの仕方、使い方はここに示す。

Javaのランタイムはこのサイトからダウンロードすること.

パケット送受信用Javaプログラムは、ここからダウンロードすること。

0.1 はじめに

 情報技術の進歩により、コンピュータ同士を接続してネットワークを構築することが可能となった. ネットワークを組むことによって、コンピュータの情報を共有することができるようになる.

ネットワークには規模があり、LAN (Local Area Network)やWAN (Wide Area Network)などに分類することができる。 東京電機大学内のネットワークは、メディアセンターのサーバ内のネットワークなのでLANととらえることができる.

本日は次週以降に行う演習のための事前学習を行う。

メディアセンターのサーバ

0.2 OSI7階層モデルとTCP/IPプロトコルスタックの関係

0.2.1 OSI7階層モデルとは

 コンピュータ同士で通信を行うためのプロトコルの概念をまとめたものに、OSI7階層モデルがある。 OSI7階層モデルは、通信に必要な機能要素を「層」にまとめ、各層を分割して考えることが可能となっている。 したがって、層間の約束事さえ守れば層ごとで自由に実装をおこなうことができる。 多くの通信プロトコルはこのOSI7階層モデルにあてはめて考えることができるため、 通信機能全体におけるプロトコルの位置づけや役割を知ることができる。 以下にOSI7階層モデルを示す。

第7層
アプリケーション層

アプリケーションに特化したプロトコル。

(例)電子メールには電子メール用のプロトコル。

第6層
プレゼンテーション層
機器のデータフォーマットとネットワーク共通のデータフォーマットの交換。
第5層
セッション層

通信の管理。

コネクションの確立/切断。

トランスポート層以下の層の管理。

第4層
トランスポート層

コンピュータのデータ転送の管理。

データ転送の信頼性を提供(データを確実に相手に届ける)。

第3層
ネットワーク層
アドレスの管理と経路の選択をする。
第2層
データリンク層
直接接続された機器間でのデータフレームの識別と転送をする。
第1層
物理層
ビット列を電圧の高低や光の点滅などに変換。
OSI7階層モデルでは

0.2.2 TCP/IPの階層モデルとOSI7階層モデル

 TCP/IPのプロトコルも、基本的にはOSI7階層モデルに当てはめることができる。

以下の図にOSI7階層モデルに対するTCP/IPの階層モデルを示す。

0.2.2.1 ネットワークインタフェース層

 ネットワークインタフェース層はOSI参照モデルにおけるデータリンク層と物理層を包括する層である。 ハードウェアはルータやハブ等の機器、ケーブルなどの物理的なものをさす. ネットワーク上でデータ通信を実現するためには、ビット列(情報)を電圧の高低や光の点滅などの信号に変換する必要がある。 ネットワークインタフェース層では、ハードウェアに依存する処理について定義がなされている. なお、現在主流のネットワークインタフェースはイーサネットである。

0.2.2.2 インターネット層

 インターネット層はOSI7階層モデルのネットワーク層に位置している。 インターネット層ではIP(インターネットプロトコル)が用いられている。 TCP/IPネットワークでは、IPアドレスと呼ばれる32ビットのIDを用いてデータ通信を行う。

以下にインターネット層の概要図を示す。

 データ通信を行う際には、上図のように様々な機器や回線を通り抜けることになる。 インターネット層は、送り手から受け手にデータを送信するための概念なので、 下図のように通信経路を抽象化することができる.

IP(Internet Protocol)

 ネットワークを介してホストからホストへ通信を行うためのプロトコル。 ホストの識別にはIPアドレスが用いられ、アドレス長はバージョンによって32ビットのものと128ビットのものに分かれる。 IPではデータ転送時の信頼性は保証していない。(メッセージが必ず相手に届くという保証はない)

0.2.2.3 トランスポート層

 トランスポート層はOSI7階層モデルのトランスポート層に位置している。 ネットワーク層ではホスト同士の通信について定義していたが、信頼性は保証していない。 また、送信した順序どおりにデータが届くという保証もない。 そこで、トランスポート層ではホスト間で信頼のおける通信路を提供するための定義をおこなっている。

トランスポート層のプロトコルにはTCP(Transmission Control Protocol)UDP(User Datagram Protocol)があげられる。

TCP(Transmission Control Protocol)

TCPの主な特徴を以下に記す。

UDP(User Datagram Protocol)

UDPの主な特徴を以下に示す。

TCPとUDPの使い分け

 TCPはエラーリカバリに優れているため、UDPよりも優れたプロトコルのように思われるが、利用されるアプリケーションによって使い分けがなされている。 本項目ではTCPとUDPはどのように使い分けられるのかを説明する。

 TCPはトランスポート層で信頼性のある通信を実現する必要がある場合に利用される。 TCPはコネクション指向で順序制御や再送制御を行なうためアプリケーションに信頼性のある通信を提供することができる。 一方、UDPは高速性やリアルタイム性を重視する通信などに用いられる。

例としてリアルタイムのストリーミングを挙げる。

 もしTCPを利用した場合、パケットが途中で失われた場合に再送処理を行なうため、 その間画像や音が停止するなどの不具合が生じてしまう。 これに対して、UDPは再送処理を行なわないのでパケットは送信され続ける。 もし多少のパケットが失われていたとしても、一時的に画像や音声が乱れるだけである。 よって、ストリーム配信サービスではUDPの方が優れているといえる。

このように、通信の特性によりTCPとUDPが使い分けられている。

0.2.2.4 アプリケーション層(セッション層、プレゼンテーション層、アプリケーション層)

 アプリケーション層はOSI7階層モデルのセッション層、プレゼンテーション層、アプリケーション層を包括する層となる。 そのためTCP/IPのアプリケーションプログラムの機能を細かく見ていくと、OSI7階層モデルの上位3層の機能がみえてくる。 たとえば、TCP/IPのアプリケーションの形態としてクライアント/サーバモデルがあげられるが、 下記の図のように、サーバ/クライアント間でセッションを開始し、どのような情報がどのアプリケーションへ届くのかという処理が行われている。

0.3 IPアドレスとMACアドレス

0.3.1 IPアドレスとは

 IPアドレスはバージョンによって32ビットか128ビットであらわされる。 本演習ではIPv4を扱うため、32ビットのアドレスについて解説をおこなう。以下で表記されるIPアドレスはすべて32ビットのアドレスである。
IPアドレスの表記方法には、8ビット(1オクテット)ずつ4つの組に分け、10進数で表したドット付き十進表記が用いられる。

(例)
10101100 . 00000000 . 00000000 . 0000001

127 . 0 . 0 . 1

IPアドレスは1つのNICに対して1つ割り当てられる。

0.3.2 ネットワーク部とホスト部

 IPアドレスは「ネットワーク部」と「ホスト部」に分けられる。 ネットワーク部とホスト部の区切りはサブネットマスクが用いられる。 たとえばIPが 192.168.1.10 でサブネットマスクが255.255.255.0の場合は
192.168.1 がネットワーク部で 10 がホスト部となる。


太字の部分がネットワーク部となる。 なお「/24」はプレフィックス表記と呼び、先頭から何ビット目までがネットワーク部なのかを示している。

0.3.3 IPアドレスのクラス

 IPアドレスは、クラスA~D の4つのクラスに分類される。
これらのクラスは、IPアドレスのどこまでがネットワーク部となるか、によって分類される。

上図のように、

クラスA・・・先頭ビットが0で始まる
クラスB・・・先頭ビットが10で始まる
クラスC・・・先頭ビットが110で始まる
クラスD・・・先頭ビットが1110で始まる

となる。

「ネットワーク部」は

クラスA・・・先頭から8ビットがネットワーク部
クラスB・・・先頭から16ビットがネットワーク部
クラスC・・・先頭から24ビットがネットワーク部
クラスD・・・先頭から32ビットがネットワーク部

となる。

これより、10進数のIPアドレス範囲は

クラスA・・・0.0.0.0~127.255.255.255
クラスB・・・128.0.0.0~191.255.255.255
クラスC・・・192.0.0.0~223.255.255.255
クラスD・・・224.0.0.0239.255.255.255

となる。
太字部分がネットワーク部となる。

また、それぞれで使用できるホスト数は

クラスA・・・約1678万個
クラスB・・・65534個
クラスC・・・254個
クラスD・・・0個

となる。

0.3.4 サブネットマスクとは

 サブネットマスクは32ビットの値で、IPアドレスの何ビット目までをネットワークアドレスとして使用するのかを指定するために用いられる。 サブネットマスクとIPアドレスの論理積を計算することによって、ネットワークアドレスを取得できる。

【例】

自分のIPアドレスが192.168.0.1で相手のIPアドレスが192.168.1.1だとする。

この時、サブネットマスクが255.255.255.0の場合、2つのホストは別のネットワークとして認識されるが、サブネットマスクが255.255.0.0の場合は同じネットワークとして認識する。

まずサブネットマスクが255.255.255.0の場合を考えてみる。

自分のIPアドレスの場合
IPアドレス      : 192.168. 0. 1
サブネットマスク   : 255.255.255. 0 

この場合 192.168.0.1/24と表現されることもある。/24はサブネットマスクのことで

11111111 11111111 11111111 00000000 となりネットワークアドレスを24ビット分確保を意味する。

(もし/16であったなら   11111111 11111111 00000000 00000000 となる。)

上のIPアドレスとサブネットマスクを二進数に変換してAND演算する。                     

IPアドレス      : 11000000 10101000 00000000 00000001

サブネットマスク   : 11111111 11111111 11111111 00000000

AND演算      ------------------------------------------ 

ネットワークアドレス: 11000000 10101000 00000000 00000000

このネットワークアドレスを十進数に変換すると以下のようになる。

---------------------------------------------------
 ネットワークアドレス :      192.168. 0. 0  

 

相手のIPアドレスの場合
IPアドレス      : 192.168. 1. 1
サブネットマスク   : 255.255.255. 0      

これを二進数に変換してAND演算する。                     

IPアドレス      : 11000000 10101000 00000001 00000001

サブネットマスク   : 11111111 11111111 11111111 00000000

AND演算      ------------------------------------------ 

ネットワークアドレス: 11000000 10101000 00000001 00000000

このネットワークアドレスを十進数に変換すると以下のようになる。

---------------------------------------------------
 ネットワークアドレス :      192.168. 1. 0 

 以上の結果からサブネットマスクが255.255.255.0の場合は自分と相手は違うネットワークということができる。

同様に今度はサブネットマスクを255.255.0.0に変えてみる。二進数の計算は省略する。

                自分         相手
 IPアドレス      : 192.168. 0. 1   192.168. 1. 1
 サブネットマスク  : 255.255. 0. 0   255.255. 0. 0
 ----------------------------------------------------
 ネットワークアドレス: 192.168. 0. 0   192.168. 0. 0

ネットワークアドレスが同じになるので、同じネットワークに相手がいると判断する。目的のホストが同一ネットワークにいるか否かで、pCはデータを送信する相手を変えてしまう。そのため、同じ様なIPアドレスを登録していても、サブネットマスクによっては通信できなくなることがある。


0.3.5 CIDR

 インターネットが全世界で普及するにつれて、クラスによってIPアドレスの枯渇問題が生じている。
そのため、クラスという概念を取り除いた「CIDR(サイダー)」という方式が登場した。

<CIDR適用例>

203.183.224.0 / 23 ネットワーク

11001011 10110111 11100000 00000001 から
            
11001011 10110111 11100001 11111110 まで

510個のホスト数が使用できるネットワークができる。
太字部がネットワークアドレスとなる。

このような構成の場合、

11111111 11111111 11111110 000000000

がサブネットマスクとなる。
これを十進数に直したものは

255 . 255 . 254 . 0

となる。

CIDRを利用することで、1つのネットワーク内のホスト数をより細かく設計することが出来る。

0.3.6 プライベートアドレス、グローバルアドレス

 インターネットに接続されているホストには、必ずユニークなIPアドレスを割り当てなければならない。 世界中でただ1つのユニークなIPアドレスをグローバルIPアドレスと呼ぶ。 グローバルIPアドレスはICANNによって管理されている。 一方、構築を行ったネットワークが閉じている場合にはプライベートIPアドレスを利用することができる。 プライベートIPアドレスはクラスごとに取り決めがなされている。

10.0.0.0 ~ 10.255.255.255 (クラスA)
172.16.0.0 ~ 172.31.255.255 (クラスB)
192.168.0.0 ~ 192.168.255.255 (クラスC)

0.3.7 MACアドレス

 MAC(Medium Acecess Control)アドレスとは、Ethernetでフレームを送受信するときに使用されるアドレスである。 MACアドレスは上位24ビットと下位24ビットに分けられ、上位24ビットはネットワーク接続機器を製造したメーカを特定するための番号であるベンダID、下位24ビットはそれぞれのメーカが製品ごとに割りふる製造番号の合計48ビットで構成されている。各機器のNICごとにMACアドレスは異なり、IEEEによって仕様が定められている。

WindowsにてMACアドレスを知りたい場合は、コマンドプロンプトを開き、

ipconfing /all

と入力すればよい。

0.4 ルーティング

0.4.1 ルーティングとは

 データを転送する際には、まず送信元ホストのイーサネットポートからパケットが送信され、 ハブを通過しルータによって経路が決められる。この経路制御をルーティングとよぶ。 ルータは経路制御表(ルーティングテーブル)を持っており、 「ネットワークアドレス」と「次に配送すべきゲートウェイのアドレス」を用いてパケットの行き先を制御する。

0.4.2 ルーティングの具体例

この例で、ホストAからホストBにパケットを飛ばすケースを考える。

パケットの宛先は 192.168.2.10 である。

  1. ホストAの経路表を確認すると、192.168.1.1に飛ばすように指定があるので、ルータ1(192.168.1.1)に飛ばす。
  2. ルータ1の経路表を確認すると、あて先が 192.168.2.0 に該当するので、ルータ2(192.168.0.2)に飛ばす。
  3. ルータ2の経路表を確認し、192.168.2.1 に飛ばす。
  4. 192.168.2.1 と あて先(192.168.2.10)は同一なので、パケットを転送することができる。

上記の流れで、ルーティングされてパケットは届くことになる。

0.5 ルータとハブの違い

 ルータとは、0.4 のような「ルーティング」を行い、異なるネットワーク同士を相互接続するネットワーク機器である。通信経路が記述されたルーティングテーブルに従い、パケットを宛先のネットワークまで中継する機能を持つ。OSI7階層モデルではネットワーク層、TCP階層モデルではインターネット層に属する。

 一方リピータハブは、OSI7階層モデルでは物理層、TCP階層モデルではハードウェアに属する。LANなどのネットワーク上で、ケーブルを分岐、中継するために使用される機器である。ハブを使用することによって多くの機器をネットワークに接続することができる。ただ1つのネットワークに複数のホストを接続するために分岐させる役割しか持たないため、ルータのようにネットワークを繋げるような機能は無い。 なおスイッチングハブはL2スイッチとも呼ばれ、OSI階層モデルのデータリンク層に属する。

上図がスイッチングハブによって構成されるネットワークである。スイッチングハブは届いたデータをリピートする役割をもっている。

上図はルータを用いて2つのネットワークを接続した図である。