2021/06/07

IPv4

IPはコネクションレス型のプロトコル。通信する両端のホスト間でパケットを伝送する機能を有し、パケット単位のエラーチェック機能、MTUを超えるパケットの分割機能/再構築機能をもつ。パケット廃棄の検知及び再送が必要な場合は、上位層にTCPを用いて通信する。

rfc791


IPヘッダフォーマット

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Version|  IHL  |Type of Service|          Total Length         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Identification        |Flags|      Fragment Offset    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Time to Live |    Protocol   |         Header Checksum       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Source Address                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Destination Address                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Options                    |    Padding    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Version:  4 bits

バージョン4を表す「0x04」が格納される。

IHL:  4 bits

単位は4オクテット。オプションがない場合、IPヘッダは20オクテットなので「0x05」が格納される。

Identification:  16 bits

データグラムのフラグメントを組み立てるのに役立つように送信者によって割り当てられる識別値。

Flags:  3 bits、 Fragment Offset:  13 bits

ルータは、IPデータグラムを転送する際、データグラムの長さがリンクのMTUに収まるようにIPデータグラムを分割する。分割した各々のデータグラムにIPヘッダを付加し、複数個のIPパケットを生成する。これをフラグメンテーションという。分割されたIPパケットは、宛先ホストで再構築される。このフラグメント処理を行うため、IPヘッダにフラグ(3ビット)とフラグメントオフセット(13ビット)が定義されている。

      Bit 0: reserved, must be zero
      Bit 1: (DF) 0 = May Fragment,  1 = Don't Fragment.
      Bit 2: (MF) 0 = Last Fragment, 1 = More Fragments.

          0   1   2
        +---+---+---+
        |   | D | M |
        | 0 | F | F |
        +---+---+---+

送信ホストによって、「分割禁止」がセットされていた場合、そのIPデータグラムの長さがMTUを超えたときはルータによって破棄される。その際、ルータは送信元ホストにICMPパケット(宛先到達不能)を送信する。

フラグメントオフセットには、分割されたデータグラムがオリジナルデータのとこに位置していたかを示すオフセット値(単位は8オクテット)が入る。分割されたパケットがすべて届いていれば、順番通りでなくても、フラグメントオフセットで復元することが
できる。

Time to Live:  8 bits

ルータを経由するごとに、この値が一つずつ減っていく。この値が「0」になるとパケットは破棄され、ルータからICMPパケット(時間超過)が送信元ホストへ送信される。


Protocol:  8 bits

上位層のプロトコルを識別する番号でICANNによって管理されている。

主要なプロトコル番号
プロトコル番号 プロトコル
1 ICMP
2 IGMP
4 IP in IP(encapsulation)
6 TCP
17 UDP
46 RSVP
50 ESP
51 AH
89 OSPF


Header Checksum:  16 bits

IPヘッダのビットレベルの整合性チェックを行う。TTLがルータを経由するたびに減算されるため、ヘッダチェックサムもその都度再計算される。

IP Address:  32 bits

IPアドレスはICANNによって管理されており、以下の範囲が予約されている。
IPアドレスの範囲 用途
127.0.0.0~127.255.255.255 ループバックアドレス。通常は、127.0.0.1が使用されている。
169.254.0.0~169.254.255.255 リンクローカルアドレス。自動プライベートIPアドレス指定(Automatic Private IP Addressing:APIPA)で使用される。APIPAは、DHCPサーバがないとき、ホスト自身がこの範囲からIPアドレスをランダムに設定する機能。サブネットマスク長は16ビット。
224.0.0.0~239.255.255.255 マルチキャストアドレス
255.255.255.255~255.255.255.255 制限ブロードキャストアドレス。ネットワークアドレスを指定せずに、送信元ホストが所属するサブネットにブロードキャストを送出するときに使用する。
10.0.0.0~10.255.255.255 プライベートアドレス
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255

IPパケット

IPパケットは到達範囲により3つに分類される。
  • ユニキャストパケット
  • マルチキャストパケット
  • ブロードキャストパケット
ブロードキャストパケットが到達する範囲をブロードキャストドメインという。
ブロードキャストパケットは2種類がある。
種類 説明
ローカルブロードキャスト 自分と同じサブネットの全ホストを宛先とするブロードキャスト。宛先IPアドレスは、ネットワーク部に自ネットワークアドレス、ホスト部は全てのビットが「1」となる。
制限ブロードキャスト 宛先IPアドレスに255.255.255.255を使用し、自分と同じサブネットの全ホストを宛先とするブロードキャスト。DHCPクライアントは、ホストを起動した直後にDHCP発見パケットを送信する。起動時にはIPアドレスやサブネットなどの情報がないので、制限ブロードキャストが用いられる。

ルータはブロードキャストパケットを中継しない。

0 件のコメント:

コメントを投稿

人気の投稿