インタネット・プロトコル(IP)は、ネットワーク層の機能を実現するプロトコルです。 ネットワーク層の機能とは、送信側ホストから受信側ホストへ、 データを配送することです。
IP は、信頼性の高い通信を保証することはできませんが、 送信側から送られたデータを届ける役割を担当します。
IP の特徴は、コネクションレス型プロトコルであることです。 コネクションレスとは、データを送信する前にコネクションを確立するための、 ハンドシェィクと呼ばれる手続きを行わないことです。 IP は、コネクションの確立を上層のプロトコルにまかせています。
IP の処理を行う IP モジュールは、インタネット上のホストやルータ(中継装置) などで実装されており、受信ホストに到達するまでの各 IP モジュールは、 届いたデータグラムの IP ヘッダ部からインタネット・アドレスを見つけて、 目的の経路となるルータ、またはホストへデータグラムを転送します。 またネットワーク層のフレームのサイズに制限がある場合、 パケットを自動的にフラグメントとよばれる小さなサイズに分割します。 最小サイズは 576 バイトです。
![]() |
![]() |
ネットワークに接続していて、TCP/IP を利用するすべての機器には、 世界で唯一の番号すなわちインタネット・アドレス(IP アドレス) が割り当てられています。 IPv4 のインタネット・アドレスは 32 ビットですが、 これから不足が予想されるため、 128 ビット の IPv6 に移行中です。
1つのインタネット・アドレスは、必ず1つの機器に割り当てられます。 もし、複数の機器に同じインタネット・アドレスがついていたら、 どのコンピュータに送ったらいいか解からなくなります。
しかし、これとは逆に、 1つの機器で複数のインタネット・アドレスを持つものがあります。 それは、ルータです。 2つ以上のネットワークに接続しているルータは、 ネットワークに接続するためのインタフェースに、 異なるインタネット・アドレスが付けられます。 このインタネット・アドレスは、インタフェースを識別するためのものです。
一般的には、インタフェースが1つの計算機をホストと呼び、 インタフェースを複数もつものをルータと呼びます。
![]() |
![]() |
IPv4 のインタネット・アドレスは 32ビットで、通常8ビットずつ区切り、 10進数とドットの組み合わせで使われます。 インタネット・アドレスは、ネットワーク部とホスト部から構成され、 その区切り方で、4つのクラスに分割されます。 それらは、クラス A から D まであり、 ネットワークの規模や接続端末の台数に応じて使い分けます。
クラス | アドレス形式 | ||
---|---|---|---|
ネットワーク部 | ホスト部 | ネットマスク | |
A | 8bits 0XXXXXXX | 24bits | 255.0.0.0 |
B | 16bits 10XXXXXXXXXXXXXXXXXX | 16bits | 255.255.0.0 |
C | 24bits 110XXXXXXXXXXXXXXXXXXXXXXX | 8bits | 255.255.255.0 |
D | 32bits 1110XXXXXXXXXXXXXXXXXXXXXXXX | 0bits | 255.255.255.255 |
![]() |
![]() |
特別に予約されたアドレスは、以下の表で示します。 この他に、インタネット・アドレスはネットワークに接続した機器だけでなく、 ネットワーク自身を表します。 そのためには、ホスト番号をすべて0に設定します。
特別なアドレス | アドレス |
---|---|
ローカルループバックアドレス | 127.XXX.XXX.XXX |
ブロードキャストアドレス | 255.255.255.255 |
指定ネットワークのブロードキャストアドレス | ネットワーク番号+ホストすべて1 |
ローカルループバックアドレスとは、 OS 内で TCP/IP による通信のために利用され、自分自身に送ることで、 ネットワークをエミレーションできます。 このインタフェースには 127.0.0.1 のアドレスと localhost というホスト名が付けられています。
ブロードキャストアドレスは、同一ネットワーク内の全アドレスに対して、 同時に同じパケットを送るときに利用します。 ブロードキャストが送信されると、 ネットワーク上の全システムは一定時間受信状態になり、 ブロードキャストの内容を受け取ろうとします。 従って、ブロードキャストが頻繁に発生すると、 ネットワークの能力が低下し、ネットワーク障害の原因となります。
![]() |
![]() |
直接外部に情報をサービスするサーバマシン以外は,
本物の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
![]() |
![]() |
ネットマスクは、インタネット・アドレスからネットワーク番号部分とホスト番号を、 取り出すために利用されます。 ネットマスクは、インタネット・アドレスのネットワーク部がすべて1、 ホスト部がすべて0のビットパターンをいいます。 従って、アドレスのクラスによって、デフォルト値が決まります。
ルーティングとは、ネットワークにおける経路制御のことです。 データグラムを目的のホストへ届けるためには、 どの経路を通ったらよいかを指定する機能です。 インタネットは、
ルータによって相互接続された複数のネットワークから構成されています。 つまり、ルータは2つ以上のネットワークに直接つながっています。 従ってデータグラムを受け取ったルータは、そのデータグラムをルーティング表を 参照して決定します。 ルーティング表への経路の登録には、2つの方法があります。
![]() |
![]() |
ネットワークの物理的な伝送媒体には、 そのタイプごとに転送できるパケットの最大転送単位 (MTU Maximum Transfer Unit) が決まっています。
転送しようとするデータが、ネットワークの MTU より長ければ、 1つのパケットとして転送できないので、MTU より小さなサイズに分割します。 このとき元のデータグラムについているヘッダの内容を失わないように、 分割後のヘッダを構成します。各フラグメントは 8 の倍数でなければなりません。
送信される IP データグラムはそれぞれ独立した経路をたどります。 従って、受信側へ到着したデータグラムの順序は、送信時の順序通りとは限りません。 受信側の IP モジュールは、分割されたデータグラムをもとのデータグラムへ再構築し、 上位層へ渡します。
![]() |
![]() |
フィールド | 意味 |
---|---|
version | バージョン番号で 4 (IPv4) に固定である。 |
ihl | IPヘッダ長は、オプション領域まで含めたヘッダ長である |
tos | (type of service)パケット処理において 何を優先するかの指針を示す。 (遅延を少なくするか、それよりスループットを上げるかなど) |
tot_len | IPパケット長は、IPパケット全体の長さを示す。 |
id frag_off |
IPレベルのフラグメント(パケットの分割)とリアセンブルを実現するために利用される。 |
protocol | この値を元に上位プロトコル(UDP, TCP等)へIPパケットを 配送する。 unix の場合 /etc/protocols に定義されて下記を参照。 |
ttl | ネットワーク上でのIPパケットの残り生存時間を示す。 通過可能なルータの数で、最大 255 に設定できる |
check | IPヘッダ部分のみのチェックサムである。 |
saddr | 発信元IPアドレスである。 |
daddr | 送信先IPアドレスである。 |
プロトコルタイプ | 値 | 説明 |
---|---|---|
IPPROTO_ICMP | 1 | ICMPプロトコル |
IPPROTO_IGMP | 2 | IGMPプロトコル |
IPPROTO_TCP | 6 | TCPプロトコル |
IPPROTO_UDP | 17 | UDPプロトコル |
![]() |
![]() |