ネットワークの基礎

TCP/IPのプロパティって?

ネットワークに関連する技術情報は、膨大な量です。
このネットワークの世界を解説するにあたり、どこから説明を始めるべきか悩むところです。
色々考えたのですが、身近(って思う)なところでWindowsの「インターネットプロトコル(TCP/IP)のプロパティ」窓からネットワークの世界を掘り下げていきます。

WindowsPCをインターネットに接続する場合必ずTCP/IPのプロパティを設定しなければなりません。
ここで設定する各項目はどのような意味があるのでしょうか?
これらの設定パラメータを理解すると、インターネット世界のネットワーク構造が見えてきます。
<WindowsXPの場合>


・IPアドレスを自動的に取得する
IPアドレス関連の設定値をサーバから受け取り自動的に割り振ります。
サーバにこの機能(DHCP)があれば、この項目をチェックすればOKです。
しかし、それでは勉強にならないので上記の場合の設定値で説明します。

設定項目 設定値 概 要
IPアドレス 192.168.0.5 該当PCのIPアドレス
サブネットマスク 255.255.255.0 ネットワークグループの指定
デフォルトゲートウェイ 192.168.0.1 外部への出口(ルータ)

<IPアドレス>
インターネットに接続される機器(この場合WinXP搭載のPC)に割り当てるIPアドレスを指定します。
このIPアドレスは、世界で唯一のアドレスでなければなりません。
(グローバルとローカルの考えがあり、この限りでない場合もある---後述)
従ってこのIPアドレスを自由に付けることは、出来ません。
ネットワーク管理者が、使用可能なIPアドレスを提示してくれるはずです。

<サブネットマスク>
ネットワークのグループを指定します。
IPアドレスとサブネットマスクのANDとり、マスクが1の範囲をそのIPアドレスが所属するネットワークグループとします。

10進標記 2進標記
IPアドレス 92.168.0.5 11000000 10101000 00000000 00000101
サブネットマスク 255.255.255.0 11111111 11111111 11111111 00000000
ANDの結果 192.168.0.0 11000000 10101000 00000000 00000000

例では、サブネットマスクとAND結果からネットワークグループは次のようになります
ネットワークグループの範囲:192.168.0.0〜192.168.0.255
この中で192.168.0.0と192.168.0.255は特殊なアドレスとして使われます。
インターネット接続機器に割り当て可能なIPアドレスは、192.168.0.1〜192.168.0.254になります。

<デフォルトゲートウェイ>
外部(ネットワークグループ外)への出口のアドレスを指定します。
インターネットの世界では、ゲートウェイとルータは同じ意味で使われます。
今後、ゲートウェイの言葉は使わず「ルータ」を使います
送信先のIPアドレスがネットワークグループ以外を指定した場合、ルータにデータを送り、ネットワークグループ外へ転送するように依頼します。
ネットワークグループ外のどこへデータを送るのかは、ルータが知っています。



IPアドレスとMACアドレス



前に例示したネットワーク構成図のAの経路の場合をもう少し考えて見ます。
Aの経路を単純化して図式化すると経路は、次のようになります

送信元PC
192.168.0.5
ルータ(内部)
192.168.0.1
ルータ外部
192.168.120.1
送信先PC
192.168.120.15

送信元から送信先のPCまで、4つのIPアドレス上をデータが流れます。
送信元PCは、送信先のPCまでの経路情報を作成してデータを送り必要が、あるのでしょうか?
例示した経路は単純ですが、ルータを何段も通らなければ経路が、確立できない場合もあります。
この様な場合、送信元のPCはどのようにして経路情報を作成するのでしょうか?
現実問題として、全世界の経路を把握することは不可能です。

答えは、バケツリレー方式にあります。
このバケツリレー方式の仕組みを支えるのが、MAC(MediaAccessControl)アドレスです。

MACアドレスは、ネットワークカード固有に割り当てられるアドレスで、同じアドレス持つネットワークカードは存在しません。
IPアドレスは、PCを交換しても交換前のIPアドレスを再度割り当てることが可能です。
しかし、MACアドレスはPCの交換、つまり、ネットワークカードの交換になるのでMACアドレスは変わります。

送信元のPCは、自分が所属するネットワークグループ(ネットマスクで指定)とルータのアドレスしか知りません。
宛先が自分のグループ内であれば、宛先IPアドレスを持つ機器のネットワークカードのMACアドレスを探します。
同じグループ内では、IPアドレスからMACアドレスを調べることが可能です。
送信元のPCは、調べたMACアドレスに向けてデータを送信します。

宛先がグループ外の場合は、宛先IPアドレスの情報を乗せて、ルータが持つMACアドレスに向けてデータを送信します。
ルータもグループ内のIPアドレスを持っているのでそのMACアドレスを得ることができます。
すなわち、送信元のPCは、送信先のIPアドレスを見てグループ内のどの機器(PC?、ルータ?)に送信するのかを判断します。
送信後は、受信した機器がデータをどのように処理するかには、無関心です。
(何らかのデータが戻ってくるのを待つだけ)

<グループ内にデータを送信したい場合の手順>
1. 送信宛のIPアドレスを持つ機器のMACアドレスを探す
この場合、ネットワークグループ内に接続する機器全てに問い合わせる
(ブロードキャストと呼ばれる方式を使うと一度に問い合わせ可能)
2. 該当するIPアドレスを持つ機器のMACアドレスが返信されてくる
3. 得られたMACアドレス宛にデータを送信する

<グループ外にデータを送信したい場合の手順>
1. ルータへMACアドレスを問い合わせる
2. ルータからMACアドレスが返信されてくる
3. 得られたMACアドレス宛にデータを送信する

グローバルネットワークとローカルネットワーク


インターネットに接続される機器は、世界で唯一のIPアドレスを割り当てなければならないことを説明しました。
これにより、世界中の機器の選別が可能になります。
このネットワーク(インターネット)は、グローバルネットワークと呼ぶ事があります。
これに対して、ローカルネットワークと呼ばれるネットワークも存在します。
ローカルネットワークは、閉じた世界のネットワーク(インターネットに接続されないネットワーク)とも言えるでしょう。
ローカルネットワークとは、特定の会社内や団体だけが使用するネットワークでグローバルネットワークと相互干渉しません。
ローカルネットワークを構築する主な目的は、セキュリティの向上です。
グローバルネットワークから切り離されているため、ネットワークを通しての外部からの攻撃は防げます。

ローカルネットワークは独立したネットワークです。
接続する機器のIPアドレスは、グローバルネットワークに接続されている機器のIPアドレスを意識しないでIPアドレスを付与することが可能です。
しかし、ローカルネットワーク用のIPアドレスを割り当てられた機器が、誤ってグローバルネットワークに接続された場合ネットワーク全体が混乱します。
そこで、ローカルネットワーク用のIPアドレスが定義されています。

ローカルネットワーク用IPアドレス
10.0.0.0〜10.255.255.255
172.16.0.0〜172.31.255.255
192.168.0.0〜192.168.255.255

グローバルネットワーク上でこれらのアドレスを見つけた場合は、無視する取り決めになっています。

このように外部からの攻撃に関しては有効であるネットワーク構成ですが、純粋なローカルネットワークは、外部との情報の送受信ができません(この仕組みで、セキュリティを確保しているのですから)。
やはり、外部とメールを送受信したり、webの情報を見たりしたい要求は発生します。
このような要求に応えるため、グローバルネットワークとローカルネットワークをアドレス変換によって接続する方法が考え出されました。
NATやIPマスカレードがその方法です。

これらに関しては、次の「IPアドレスとポート」の後で解説します。

IPアドレスとポート


インターネットに接続される機器にはユニークなIPアドレスが割り当てられています。
この事により、特定の機器(PCやサーバ)との情報の授受が可能になります。

IPアドレスで機器の特定は出来きますが、まだ、問題が残ります。
サーバを例に挙げると、webサーバとメールサーバを同じサーバ上に置く場合があります。
同じIPアドレス上で違ったサービスを提供しているわけです。
クライアント(PC)からは、「webの情報を送れ」とか「メールの情報を送れ」などの要求をサーバに出します。
言葉で書くとこんな感じですが、実際にクライアントとサーバではどのような情報を使ってこのサービスの違いを切り分けているのでしょうか?
このサービスの違い切り分ける仕組みとして、ポート番号と呼ばれる情報が使われます。
IPアドレスが住所だとすると、ポート番号は家族の名前のようなものでしょうか。

ポートとサービス種の例
ポート番号 サービス 概  要
80 http web
443 https SSL版web
110 pop3 メールの取り出し
25 smtp メールの送受信

サーバ側にポート番号が必要でしたが、クライアント側ではどうでしょう?
クライアント・サーバモデルでは、クライアントが要求を出し、それに対しサーバが何らかのデータを返信します。
今クライアントが、2つのブラウザを立ち上げていた場合どうなるでしょう?
サーバが返信したデータをどちらのブラウザに表示すべきかの情報が必要です。
クライアントは、webサーバに対して自身のIPアドレスとポート番号の情報を含めて要求を出します。
サーバはクライアントへ返信するときは、要求に含まれていたIPアドレスとポート番号に対してデータを返します。
このIPアドレスとポート番号の組み合わせをソケット(Socket)と言います。
インターネットでは、送信元ソケットと送信先ソケットの情報を付加してデータの送受信を行います

NAT(NetworkAddressTranslator)


ローカルIPアドレスとグローバルIPを1対1で変換します

<イメージ図>


IPマスカレード


グローバルIPアドレスとローカルIPアドレスを1対Nで変換します。
この手法を使えば、一つのグローバルIPアドレスで、複数の機器をインターネットへ接続することが可能です。

<イメージ図>


ルータは、送信元のローカルネットワークのソケットをグローバルネットワークのソケットに変換します。
ここまでは1対1変換のNATと同じでが、変換の再に、ポート番号を他のPCが使わないポート番号に変換します。
そして、その変換情報をルータ内に記録しておきます。
サーバからの返信データは、あて先のソケットから、ルータ内に記録された変換情報に従って変換し、本来のあて先のソケットへ変換します。



クライアント・サーバモデル



NATやIPマスカレードは、ネットワークとネットワークを結ぶ技術です。
今回の例の場合は、ローカルネットワークとグローバルネットワークを接続しています。
つまり、クライアント(PC)が、間接的ながらグローバルネットワークに接続されているのです。
セキュリティ上の問題はどうなのでしょうか?
直接グローバルネットワークに接続する形態に比べるとセキュリティは大幅に向上しています。

インターネットの世界は、クライアント・サーバモデルを採用しています。
データの送受信は、サーバとクライアント間のみで行われます。
メールは、クライアント同士で送受信しているのでは?と疑問を持つ人も居るでしょう。しかし、メールもサーバを仲介してクライアント間の送受信を行っています。

また、データの経路を開く場合、必ずクライアントの要求から開始します。
サーバは、必ずクライアントの要求を確認してからデータの送信を始めます。

これらの事柄を利用しセキュリティの向上を図っています。
ルータでクライアントの要求をスキャンしておき、要求に対する返信のみを通過するようにしておけば、外部からの攻撃的なメッセージは排除できます。

各PCで同じ対策を講じれば同じ効果を得られます。
しかし、PCは一般ユーザが使うためセキュリティ意識にばらつきがあります。
また、攻撃的なメッセージもネットワークグループ内に通すと、無駄にネットワークのトラフィックが上がってしまいます。