Internet Protocol
| TCP/IP群 | |
|---|---|
| アプリケーション層 | |
|
BGP / DHCP / DNS / FTP / HTTP / IMAP / IRC / LDAP / MGCP / NNTP / NTP / POP / RIP / RPC / RTP / SIP / SMTP / SNMP / SSH / Telnet / TFTP / TLS/SSL / XMPP カテゴリ |
|
| トランスポート層 | |
|
TCP / UDP / DCCP / SCTP / RSVP / ECN カテゴリ |
|
| ネットワーク層 | |
|
IP (IPv4, IPv6) / ICMP / ICMPv6 / IGMP / IPsec カテゴリ |
|
| リンク層 | |
|
ARP/InARP / NDP / OSPF / トンネリング (L2TP) / PPP / MAC (イーサネット, IEEE 802.11, DSL, ISDN, FDDI) カテゴリ |
Internet Protocol (インターネット・プロトコル、IP) とはインターネットにおいて情報の伝達を行うプロトコルであり、 インターネットの基礎部分となる重要な役割を持つ。
OSI参照モデルのネットワーク層にほぼ対応する機能を持つ。上位のプロトコルであるTCPやUDPなどとあわせて、インターネット・プロトコル・スイート(TCP/IPなど)としてまとめて利用されることが多い。
俗にIPアドレスを指して、略称のつもりで「IP」と呼ぶことがあるが、異なるものを指しており厳密には誤記・誤称である。
目次 |
[編集] 背景
IP以前のプロトコルは、非常に近い位置にある比較的少ないコンピュータ同士の小さなネットワーク(Local Area Network=LAN)か、中央集約的に連結された広域ネットワーク(Wide Area Network=WAN)上にあるコンピュータ同士で通信するように設計されていた。しかしそれでは、中央集約部分を軍事的に攻撃され破壊されると長距離通信が行えなくなり、情報分断されてしまうことになる。このことから、多少の被害を受けても通信が行える通信網を構築することは軍事的に有利であると考えられた。
この目的のために、軍の支援の下に研究及び実験が行なわれたARPANETでIPは生まれた。目標はLAN同士、あるいはLANとWANとのそれぞれのネットワーク(network)を互いに(inter)接続し通信させることで、一箇所が攻撃を受けてもそこを迂回して通信できるプロトコルの研究・設計とその実験であった。
[編集] 概要
IPは、最も基本的な通信単位であるパケットを相手に送信する役割を担う。パケットは、発信者、受信者(手紙でいう宛て先)などの情報を持つIPヘッダ(最小20オクテット、最大60オクテット)と、通信内容を格納するペイロードとで構成される。パケットのうちIPが受け持つネットワーク層の部分はデータグラムと呼ばれる。発信者、受信者は、IPアドレスにより特定する。
IPは自己のインタフェース(ネットワークカードやモデムのこと)からパケットを送出するだけであり、相手まで確実にパケットが届くことに責任を持たない(保証しない)。そのため、不慮の事故でパケットが失われた場合には単に到着しないだけである。確実な送受信を保証する必要がある場合には、IPより上位のトランスポート層のプロトコルであるTCPなどを使用する必要がある。
現在主に利用されているのは32ビットのアドレス空間を持つIPv4であり、IPアドレスの不足が発生することが予測されることから128ビットのアドレス空間を持つIPv6が作られた。
なお、IPv5(ST)、IPv7(TP/IX)、IPv8(PIP)、IPv9(TUBA)というプロトコルも存在するが、いずれも実験的なプロトコルであり実用には至っていない。また、IPのバージョン番号はIETFによる割り振りであり、優劣などの他意はない。
[編集] IPの仕組み
IPでは、各々のLANで通信可能な範囲をセグメントと呼び、セグメント内のコンピュータをホストと呼ぶ。 同じセグメントに属するホスト同士はそのLANで使用されている通信プロトコルをデータリンク層とし、その上のネットワーク層で稼動する。
つまり同じセグメントに属するホスト同士は、IP以前からそうであったように直接通信する。 このため、セグメント内で通信するだけであればIPの存在意義は特にない。 IPがその存在意義を発揮するのはセグメントの外と通信することが可能であり、そして何も変更せずに(全く同じ機器/ソフトウェア構成で)セグメント内とセグメント外との区別なく通信が可能となることである。 そのため、最近はLAN内の通信なのにわざわざIPを使うイントラネットを採用することで、インターネット用のソフトウェア資産やノウハウをそのままLAN内通信に利用することが多くなってきている。
[編集] 同じセグメント内の通信
同じセグメント内のホスト同士の通信では、そのLANで使われているプロトコルを使って通信する。そのためIPの各実装では、そのLANで使われているプロトコルから完全に独立することはできない。
まず、送信先となるIPアドレスを持つホストにデータリンク層のデータとして送信するために必要な情報を収集しなければならない。 例えばイーサネットであれば、送信先となるIPアドレスを持つホストのインターフェースが持つMACアドレスである。 そのためにブロードキャストによって「このIPアドレスの人は返事して!」とメッセージを送る。 そのIPアドレスを持っているホストはそれに対して返答する。 その返答の送信元が、送信先IPアドレスを持つホストのMACアドレスである。
これは後述するルータやゲートウェイかも知れない。 ルータやゲートウェイは、自身が知っている(転送しなければならない)IPアドレスに関してブロードキャストされていたら、本来そのIPアドレスを持つホストの代わりに返事をする。
なお、一般にブロードキャストは負荷が高くLAN内の通信を阻害するため、こうして得られたMACアドレスは今後同じIPアドレスに送信するときにはブロードキャストせずに再利用できるように、キャッシュに控えておく。
IPの実装では、こうしたアドレス解決と実際の送受信部分だけはデータリンク層のプロトコルに依存することになる。 しかしこの依存部分は、実際にそのデータリンク層のプロトコル を使うホストでだけ必要になるため、世界中に散らばる各セグメントとの通信の際には問題にならない。 異なるデータリンク層のプロトコル を使うセグメントに分かれたホスト同士の通信の場合は、後述するゲートウェイがこれを解決する。
[編集] 異なるセグメント同士の相互通信
セグメントとセグメントの間、あるいはセグメントとWANの間にはルーティング(routing)を行なうための特別なホストであるルータ(router)がある。 ルータにはあらかじめ、自身が繋がれているそれぞれのセグメントにいるホストのIPアドレスを教えてある。 これはルーティングテーブルと呼ばれる。 ルータは、一方のセグメントのホストから他方のセグメントのホストにパケットが送られようとしていると、一旦後者のホストの代わりにパケットを(前者のLANのプロトコルで)受け取り、ルーティングテーブルを参照してどのセグメントに送ればいいかを選択し、そのパケットを後者のLANのプロトコルで後者のホストに送る。 ルータはルーティングテーブルによって、あるIPアドレスに送るにはどのセグメントに送ればよいかを把握している。一部が破壊されても、このルーティングテーブルを書き換えるだけで破壊箇所を迂回することが可能になる。
ルータと似ているが、ルーティングテーブルを持たないが異なるLANのプロトコルを変換して右から左、左から右に中継するだけのものにはブリッジと呼ばれるものがある。しかしブリッジはIPより下位の層(OSI参照モデルのデータリンク層)の話でありIPのことなど知らないので割愛する。
また特に、異なるプロトコルを用いるセグメント同士の間をつなぐルータはゲートウェイ(Gateway; Gate=門, way=道)と呼ばれる。 本来ゲートウェイはOSI参照モデルのネットワーク層におけるブリッジに相当するルータの基本機能の一部なのだが、セグメントのほとんどがイーサネットになっているため、特にセグメントとWANとの間にあるルータだけがゲートウェイであることが多い。 またルータが知らないIPアドレスは(ルーティング処理の一環として)全てデフォルトゲートウェイと呼ばれる特別なゲートウェイに送られる。デフォルトゲートウェイは通常WANとの接続部分にあるため、未知のIPアドレスへのパケットは全てWAN側(外の世界)のルータにパケットを送信することになる。 そしてWANのルータが送信先となるIPアドレスの存在するセグメントのゲートウェイにパケットを送信し、ゲートウェイが送信先となるIPアドレスを持つホストにパケットを送信することで世界中のホストと通信が行なわれる。
[編集] 関連項目
[編集] 外部リンク
- RFC
- RFC 791 - Internet Protocol
- RFC 1112 - Host Extensions for IP Multicasting
- RFC 1518 - An Architecture for IP Address Allocation with CIDR
- RFC 1519 - Classless Inter-Domain Routing (CIDR): an Address Assignment and Aggregation Strategy
- RFC 1817 - CIDR and Classful Routing
- RFC 2101 - IPv4 Address Behaviour Today