TCP/IP群
アプリケーション層
BGP
DHCP
DNS
FTP
HTTP
IMAP
IRC
LDAP
MGCP
MQTT
NNTP
NTP
SNTP
TIME
POP
RIP
OSPF
ONC RPC
RTP
SIP
SMTP
SNMP
SSH
Telnet
TFTP
TLS/SSL
XMPP
カテゴリ
トランスポート層
TCP
UDP
DCCP
SCTP
RSVP
QUIC
カテゴリ
インターネット層
IP
IPv4
Internet Protocol version 4(インターネットプロトコルバージョン4)、IPv4(アイピーブイ4)は、Internet Protocolの一種で、OSI参照モデルにおいてネットワーク層に位置付けられる通信プロトコルである。
主に、転送の単位であるパケットの経路選択と、その断片化と再構築が規定されている。TCP/IPの基本機能として、インターネットをはじめ、世界中広く用いられている。 IPパケットの先頭には必ずIPヘッダが付加され、それにより経路選択などのIPの機能が実現されている。IPヘッダは12のフィールドと拡張情報(オプション)から成り立っている。拡張情報を含まないIPヘッダ長は20オクテットである。 以下にパケット形式図とそれぞれの領域の役割などを記す。 パケット形式図012345678910111213141516171819202122232425262728293031 サービス種別01234567 フラグ012 IPで用いられる32ビットのアドレスはIPアドレスと呼ばれ、IPアドレスはネットワークアドレスとホストアドレスに分けて用いられる。 .mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation.cs-ja1 q,.mw-parser-output .citation.cs-ja2 q{quotes:"「""」""『""』"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free a,.mw-parser-output .citation .cs1-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited a,.mw-parser-output .id-lock-registration a,.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription a,.mw-parser-output .citation .cs1-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:#d33}.mw-parser-output .cs1-visible-error{color:#d33}.mw-parser-output .cs1-maint{display:none;color:#3a3;margin-left:0.3em}.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}RFC 791
パケット
バージョンヘッダ長サービス種別全長
識別子フラグ断片位置
生存時間プロトコルチェックサム
送信元アドレス
宛先アドレス
拡張情報
データ
バージョン(Version) IPのバージョンであり、IPv4の場合は4が格納される。
ヘッダ長(Internet Header Length、IHL) IPヘッダの長さで、4オクテット単位で表される。この値によりデータの開始位置を知ることができる。通常は「5」が入る。
優先度遅延度転送量信頼性予備
サービス種別(Type of Service、ToS、優先順位) パケットが転送される際に重視するサービスを指定する。ただし、ルータの実装においてパケットごとにサービスを区別することは容易ではない。送信元が全てを重視とする設定を行う場合や、ネットワークの運用方針によっては境界に位置するルータが値を書き換える場合もある。優先度はパケットの優先度を8段階で示す。パケットの送信待ち行列を8個用いて実現する実装もある。遅延度はパケットを早く宛先へと到達させることを求める。転送量はパケットを多く宛先へと到達させることを求める。信頼性はパケットを失わず宛先へと到達させることを求める(このような処理をQoSと呼ぶ)。IPv6のIPv6パケットでは、サービス種別の代わりに「フローラベル」(Flow Label)が定義されている。
全長(Total Length) IPヘッダを含むパケットの全長をオクテット単位で表したもの。最大は65,535オクテット。
識別子(Identification、識別番号とも) パケットの送信元が一意な値を格納する。断片化したパケットの復元に用いられる。パケットを転送するルータがデータを分割したときにバラバラになった複数のパケットを同一のものと判断する。
予備禁止継続
フラグ(Various Control Flags) 断片化の制御に用いる。ビット0は予備であり常に0。ビット1は1の場合に断片化の禁止を意味する。ビット2は1の場合に断片化された後続のパケットが存在するパケットであることを意味し、0の場合は後続のパケットが存在しないことを意味する。
断片位置(Fragment Offset) ルータなどがパケットを断片化した際に、その位置を8オクテット単位で格納する。断片化したパケットの復元に用いられる。以上の識別子、フラグ、断片位置の情報からフラグメントを行うことができる。
生存時間(Time to Live、TTL) パケットの余命を示す値である。送信元はパケットが経由できるルータ数の上限を設定し、ルータはパケットを転送するごとに値を一つ減らし、値が0になるとパケットは破棄される。パケットがネットワーク上で無限に巡回する問題を防ぐ効果がある。TTLは8ビットのため0?255の値をセットできる。
プロトコル(Protocol) TCPなどの上位プロトコルを示すプロトコル番号が設定される。パケットの宛先である装置がパケットを受信すると、この値を用いて上位プロトコルを識別し、その実装へペイロードを渡す。主に使われるプロトコルには、ICMP、TCP、UDP、IPv6、EIGRP、OSPFが挙げられる。
チェックサム(検査合計、Header Checksum) IPヘッダの誤り検査に用いられる。転送ごとに生存時間の値が変わるため、ルータはチェックサムも転送ごとに再計算する必要がある。データ部分に関してはTCPなどの上位層に任せ、IPパケットのヘッダのチェックサムの対象はヘッダ部分だけである。また、IPパケットのチェックサムフィールドは設定必須の項目なので省略できない。IPv6ではチェックサムフィールドはなくなった。
送信元アドレス(Source Address) パケットの送信元IPアドレスが設定される。
宛先アドレス(Destination Address) パケットの送信先IPアドレスが設定される。
拡張情報(Options) 可変長の拡張情報が32ビット単位で設定される。めったに使用されることがないが、セキュリティ、ルーズソースルーティング/ストリクトソースルーティング、レコードルート、インターネットタイムスタンプなどの情報が埋め込まれる。可変長のため0を足すパディング
データ パケットが伝達すべきペイロードである。
アドレス
クラス012345678910111213141516171819202122232425262728293031
a0ネットワークホスト
b10ネットワークホスト
c110ネットワークホスト
111拡張アドレスモード
しかしRFC 791の方式は、ホストアドレスの割り当て数が、クラスaでは16777215、クラスbでは65535にものぼる。これほどの膨大な数のホストを収容するネットワークは一般に存在せず、アドレスの利用に無駄を生じた。そこでRFC 950においてサブネット(subnet)が定められた。サブネットはホストアドレスの一部をアドレスマスク(address mask)を用いて分割することにより得られ、あるネットワークアドレスを与えられた組織内において、更にネットワークを分割するために用いられる。
012345678910111213141516171819202122232425262728293031
10ネットワークサブネットホスト
アドレスマスク11111111111111111111111100000000
RFC 1597においては、ある組織内で私的に用いられる下記のプライベートアドレスが定められた。
10.0.0.0?10.255.255.255(10.0.0.0/8)
172.16.0.0?172.31.255.255(172.16.0.0/12)
192.168.0.0?192.168.255.255(192.168.0.0/16)
上記のアドレス以外はグローバルアドレスとも呼ばれるようになる。 Internet Engineering Task Force (IETF)とInternet Assigned Numbers Authority (IANA)は、特別な用途に用いられるIPアドレスを予約し、一般の使用を制限している。 特別用途のアドレスブロックアドレスブロックアドレス範囲アドレスの数スコープ説明
特別用途のアドレス
0.0.0.0/80.0.0.0?0.255.255.25516777216ソフトウェア現在のネットワーク[1](送信元アドレスとしてのみ有効)
10.0.0.0/810.0.0.0?10.255.255.25516777216プライベートネットワークプライベートネットワーク内での通信に使用[2]
100.64.0.0/10100.64.0.0?100.127.255.2554194304プライベートネットワークシェアードアドレス空間