インターネットでいろいろなサイトを閲覧するが、たまにアダルトサイトにアクセスすると、いきなり会員登録されてお金の請求をされる場合がある。
いわゆる悪質なサイトだ。
いついつまでに料金を指定の口座に振り込まないと、こちらのIPアドレスから私の住所を特定できるなどと脅しの文言が表示される。
そういうのは無視しているが、サイトの閲覧を続行することもない。
IPアドレスで個人の特定はできないので、業者が自宅に押し掛けてくることはない。
今回はIPアドレスについて観てみよう。
IPアドレスとは
IPアドレスを簡単に言うと、ネットワーク上の情報機器を識別するために指定する、ネットワーク層における識別用の番号である。
データリンク層においてネットワークインタフェースを識別するためのアドレスはMACアドレスといい、物理アドレスともいわれる。
物理アドレスに対して、IPアドレスは論理アドレスとも呼ばれる。
通信規約(プロトコル)を階層化しているのは、すべての通信を一つのプロトコルで実現しようとすると、プロトコルが複雑になったり、複数のプロトコル間で実現すべき機能が重複してしまったりと効率が良くないからである。
インターネットの構造とは
我々が普段利用しているインターネットは、通信プロトコルにTCP/IPを使用し、いくつものネットワークを相互に接続した大規模なネットワークである。
インターネットへの接続性(コネクティビティ)を提供する企業や団体をISP(Internet Service Provider)または単にプロバイダといい、各プロバイダを相互に接続する点をインターネットエクスチェンジ(IX)という。
インターネットは、全体を一括して管理・所有する組織は存在しない。
階層構造をなす各組織により、インターネット上の資源(IPアドレスやドメイン名)は管理されている。
*階層構造の頂点
ICANN(Internet Corporation for Assigned Names and Numbers)
*アジア・太平洋地域の管理
APNIC(Asia Pacific Network Information Center)
*日本の管理
JPNIC(JaPan NIC)
実際のIPアドレスの割り当ては、JPNICから依頼されたJPRS(日本レジストリサービス)という企業がJPNICから業務を移管・委託され、資源管理を行っている。
IP(Internet Protocol)とは
IPとは、ネットワーク層の機能(エンドツーエンドのデータ伝送)を実現するための、コネクションレス型のプロトコルである。
IPでは、送信元ノード(機器)がルータにデータの中継を依頼すると、データはルータからルータへと中継されて宛先ノード(機器)に届く。
ここで、ネットワークやノードを識別するための情報、すなわちネットワーク層のアドレスとして、IPアドレスが利用されるのである。
MACアドレスが隣接ノード間(データリンク)の宛先と送信元を識別するのに対して、IPアドレスはエンドノード間(エンドツーエンド)の宛先と送信元を指定する。
IPアドレスは、各ノード(機器)のインタフェース(ネットワークごとの接続点)ごとに付与され、ノードのインタフェースを一意に識別する。
これにより、ルータなどの複数のネットワークに接続されるノードは複数のIPアドレスをもつ。
IPアドレスは、TCP/IPのネットワークでは重複しないよう設定する必要がある。
IPアドレスが付与されたノードのことをホストといい、IPにおける伝送単位をIPデータグラム(IPパケット)という。
IPデータグラム
IPは、上位の層(アプリケーション層。トランスポート層)から渡されたデータに、宛先IPアドレスと送信元IPアドレスを設定されたIPヘッダをデータに付加し、IPデータグラムとして転送する。
これをカプセル化という。
カプセル化されたIPデータグラムは、データリンク層に渡される。
データリンク層において、宛先MACアドレスと送信元MACアドレスを設定されたヘッダを付加したフレームが作られる。
ルータなどのLAN間接続装置は、フレームの中からIPデータグラムを取り出すことで、宛先IPアドレスと送信元IPアドレスを知ることができる。
IPデータグラムの各部分の説明は以下の通り。
*バージョン
使用するIPのバージョンであり、現在ではIPv4が主流。
*ヘッダ長
IPヘッダの大きさを32ビット単位で示す。通常は20バイト。
*Tos(Type Of Service) サービスタイム
データグラムの優先度など格納。
*データグラム長
ヘッダも含めたIPデータグラムのサイズを8ビット(1バイト)単位で表す。このフィールド(図の上の数字)は16ビットなので、IPが扱えるデータの最大サイズは65,535バイトとなり、これより大きなデータは分割される。
*ID(識別子)/フラグ/フラグメントオフセット
分割されたデータグラムを復元するための情報を格納。
*TTL(Time To Live)
生存時間ともいう。データグラムの生存時間を示す。実際には経由できるルータ数を表していて、データグラムがルータを経由するごとにTTLは1ずつ減算される。TTLが0になったデータグラムはルータによって破棄される。
*プロトコル番号
上位のプロトコルに何を用いているかを示す。ICMPは1、TCPは6、UDPは17が設定される。
*ヘッダ・チェックサム
IPヘッダの誤りを検出するためのチェックサムが格納される。
*送信元IPアドレス
送信元ホストのIPアドレスを表す。
*宛先IPアドレス
宛先ホストのIPアドレスを表す。
IPアドレス
IPアドレスは、32ビットのアドレスである。
8ビットごとにピリオド(.)で区切り、10進数で表記する。
IPアドレスは、32ビットをネットワーク部とホスト部に分けることにより、どのネットワークのどのホストかを識別できるようになっている。
同じネットワークに接続されるホストのIPアドレスは、ネットワーク部がすべて等しいので、ルータはどのネットワークに届ければよいかに基づいて経路選択を行う。
TCP/IPにおいては、IPアドレスが割り当てられた機器をすべてホストという。つまりネットワークにつながるパソコンやサーバ機、ルータなどの中継装置はすべてホストなのである。
ネットワーク部とホスト部は、クラスという概念で区切られている。
クラスはIPアドレスの用途を表す概念であり、クラスA~Cがネットワークの規模を表す。
各IPアドレスがどのクラスに属するかは、上位のビット数によって判断できる。
クラスAは大規模組織用、クラスBは中規模組織用、クラスCは小規模組織用である。
ここでDとEが登場するが、両者ともに特別な用途に使用される。
クラスDは、ネットワークの規模を表すためではなく、マルチキャスト通信に用いられる。
マルチキャスト通信とは、任意の複数のホストと通信するもので、すべてのホストと通信するブロードキャスト通信とは、無関係のホストにまでデータを送信することがない点が異なっている。
クラスEは一般には使用されない。
IPアドレスは32ビットの情報であるため、IPアドレス空間をすべて使用することができたら、2³²=4,294,967,296個のホストに割り当て可能だ。
ただし、IPアドレスのうち、ネットワーク部とホスト部のいずれかが「すべて1」または「すべて0」のアドレスは以下の用途に用いられるため、使用できない。
・ネットワークアドレス
ホスト部が「すべて0」の場合、「そのネットワーク自身」を表す。
ネットワークアドレスはルータの経路制御などで用いる。
・ブロードキャストアドレス
ホスト部が「すべて1」の場合、すべてのホストを対象としたブロードキャストアドレスとなる。
いずれの場合もポイントはホスト部である。
ホスト部がnビットの場合、ホストに割り当てられるIPアドレスの数は、2ⁿから「すべて0」と「すべて1」を除いた(2ⁿ-2)種類となる。
ルーティング
TCP/IPネットワークにおいて、適切な経路を選択してIPデータグラムを宛先まで届けることをルーティング(経路制御)という。
コンピュータやルータは、ルーティングテーブルという経路情報に基づいて経路選択を行う。
ルーティングテーブルは、宛先ネットワークアドレス、データを送出するインタフェース、中継先となるルータなどから構成され、目的のネットワークまでデータを届けるためには、どのインタフェースから、どのルータに対して中継を依頼すればよいか、を判断できるようになっている。
ルーティングテーブルによって中継先が決定したならば、中継先のルータのIPアドレスに対応したMACアドレスを取得して、データを隣接するルータに向けて送出する。
これを繰り返すことで、ルータを経由したエンドノード間の通信が実現される。
ここでMACアドレスが登場してくるが、実際にデータを伝送するのはネットワーク層の一つ下のデータリンク層のプロトコルだからである。
宛先IPアドレスと送信元IPアドレスはエンドツーエンドで変化しないが、宛先MACアドレスと送信元MACアドレスはデータリンク(中継区間)ごとに異なる。
他のルータに中継を依頼する場合は、ルータのIPアドレスからMACアドレスを取得し、それを宛先MACアドレスとすればいいのである。
なお、IPアドレスからMACアドレスを取得するには、ARP(Address Resolution Protocol)というプロトコルが用いられる。
ARPはデータリンク層のプロトコルである。
管理されるIPアドレス
IPアドレスは「有限」であり「限りある資源」であると言える。こうなると効率的な運用・管理が必須になる。
・サブネット分割
TCP/IPでは、ネットワークを複数のサブネットワーク(サブネット)に分割し、IPアドレス空間の有効利用や運用負荷の分散を図ることが多い。
このためサブネットマスクを用いて、ホスト部の一部をネットワーク部の一部(サブネットの識別子)とした扱う。
サブネットマスクは、IPアドレスのどこまでがネットワーク部で、どこからがホスト部かを指定するのに、32ビットのビット列(マスク)で、ネットワーク部に1、ホスト部に0を設定する。
上図の例だと、本来はクラスCのIPアドレスで、ネットワーク部は24ビットの部分までなのだが、ホスト部の8ビットのうち、上位2ビットをネットワーク部とみなし、サブネットワークを識別できるようにする。
このように、ホスト部の上位2ビットをサブネット識別子とすれば、256台のホストを接続できる一つのネットワークが、4つのサブネットに分割される。(2²=4。上位3ビットだと2³=8分割)
各サブネットには62(2⁶-2)台のホストが接続できる。
これは、サブネットに分割した場合でも、ホスト部がすべて0のアドレスはサブネット自身を表し、すべて1の部分はサブネットに接続された全ホストを表すからである。
サブネットマスクを用いると、ネットワークの分割だけではなく統合も可能である。
例えば次のようなクラスCのネットワークアドレスがあったとする。
10進数表記 | 192.168.2.0 |
2進数表記 | 11000000.10101000.00000010.00000000 |
10進数表記 | 192.168.3.0 |
2進数表記 | 11000000.10101000.00000011.00000000 |
これらは2進数表記すると分かりやすいが、1~23ビット目までは同じである。
したがって、以下のサブネットマスクを設定すれば、クラスCの2倍の大きさをもつ一つのネットワークができる。
10進数表記 | 255.255.254.0 |
2進数表記 | 11111111.11111111.11111110.00000000 |
クラスA~クラスCの概念は意味を持たなくなる。
このようにクラスに依存しないアドレスの割り当てを可能にした概念をCIDR(Classless inter Domain Routing)という。
ネットワークアドレスに続けて、ネットワーク部のビット数(ブレフィックス長)をスラッシュで区切って表記する。
先の例だと、192.168.2.0/24と192.168.3.0/24を集約すると、
192.168.2.0/23
となる。
・DHCP(Dynamic Host Configuration Protocol)
DHCPは、IPアドレスにを動的に割り当てるためのプロトコルである。
DHCPを用いる場合、ホスト(DHCPクライアント)は、起動時または必要時にDHCPサーバに対してIPアドレスを要求する。
この要求に対してDHCPサーバは、あらかじめ登録されているIPアドレスのうち一つを割り当てる。クライアントの利用が終了したら、DHCPサーバはそのIPアドレスを回収する。
DHCPは、サブネットマスクやデフォルトゲートウェイも設定できる。
デフォルトゲートウェイとは、他のネットワークと通信するための窓口となるルータである。
各ホストは自分のネットワークに接続されたコンピュータとは直接通信し、異なるネットワークに接続されたコンピュータとの通信は、すべてデフォルトゲートウェィに中継を依頼する。
プライベートIPアドレスとグローバルIPアドレス
IPアドレスの数は有限であり、無制限に割り当てることはできない。
このため、企業のLANなどにおいては、組織の内部ネットワーク(LAN)だけで自由に利用できるIPアドレスが多く用いられる。
これをプライベートIPアドレスという。
これに対して、インターネット上で使用できる正式なIPアドレスをグローバルIPアドレスとよんで区別している。
プライベートIPアドレスを割り当てられた端末は、インターネット上のホストと直接通信はできない。
そこでNATやIPマスカレード(NAPT)といったアドレス変換機能を用いる。
NATは、インターネットに接続したルータが、ヘッダ中のIPアドレスを書き換えて、プライベートIPアドレスとグローバルIPアドレスの変換を行う。NATを用いれば、用意したグローバルIPアドレスの数のホストがインターネットに同時接続できる。
IPマスカレードは、NATの発展バージョンで、ポート番号を組み合わせた変換を行う。
ポート番号とは、IPアドレスが建物の住所だとすると、部屋番号に相当するものだ。
これだと、用意したグローバルIPアドレスが一つであっても、インターネットへの同時接続に制限はなくなる。
組織内はプライベートIPアドレスで構築し、インターネットとの接点となるルータにグローバルIPアドレスを用意する。そしてルータがアドレスを相互に変換するというわけだ。
なお、プライベートIPアドレスは次の範囲が利用可能である。
クラスA | 10.0.0.0~10.255.255.255 |
クラスB | 172.16.0.0~172.31.255.255 |
クラスC | 192.168.0.0~192.168.255.255 |
後記
あけましておめでとうございます。
コロナウイルスの流行はとどまるところを知らない感がある。
大晦日の昨夜は、自宅近所の飲食店等は早々と閉店してしまい、街は閑散としてゴーストタウンのようだった。
今年はもっと明るい1年になるとよいですね。