Internet Protocol
出典: フリー百科事典『ウィキペディア(Wikipedia)』
| アプリケーション層 |
|---|
| DNS, ENRP, FTP, HTTP IMAP, IRC, NNTP, POP3 SIP, rlogin, RTP, SMTP SNMP, SSH, TELNET CMIP |
| トランスポート層 |
| DCCP, IL, RSVP, RUDP, SSL SCTP, TCP, UDP |
| ネットワーク層 |
| ARP, BGP, IP (IPv4,IPv6) ICMP, IGMP, IGP(OSPF, RIP) RARP |
| データリンク層 |
| ATM, DTM, FDDI, PPP SLIP, SMDS, イーサネット 802.11, トークンリング フレームリレー |
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ヘッダと、通信内容を格納するペイロードとで構成される。発信者、受信者は、IPアドレスにより特定する。
IPは自己のインタフェース(ネットワークカードやモデムのこと)からパケットを送出するだけであり、相手まで確実にパケットが届くことに責任を持たない(保証しない)。そのため、不慮の事故でパケットが失われた場合には単に到着しないだけである。確実な送受信を保証する必要がある場合には、IPより上位のトランスポート層(→OSI参照モデル)のプロトコルであるTCPなどを使用する必要がある。
現在主に利用されているのは32ビットのアドレス空間を持つIPv4であり、IPアドレスの不足が発生することが予測されることから128ビットのアドレス空間を持つIPv6が作られた。
なお、IPv5(Internet Protocol, version 5)というプロトコルもRFC 1190, RFC 1819に規定されているが、奇数バージョンは実験目的のため一般的な実装は存在しないとされる。()
[編集] IPの仕組み
IPでは、各々のLANで通信可能な範囲をセグメントと呼び、セグメント内のコンピュータをホストと呼ぶ。 同じセグメントに属するホスト同士はそのLANで使用されている通信プロトコルをデータリンク層(→OSI参照モデル)とし、その上のネットワーク層で稼動する。
つまり同じセグメントに属するホスト同士は、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アドレスを教えてある[1]。 これはルーティングテーブルと呼ばる。 ルータは、一方のセグメントのホストから他方のセグメントのホストにパケットが送られようとしていると、一旦後者のホストの代わりにパケットを(前者の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
カテゴリ: インターネットのプロトコル | RFC

