原文:ftp://ftp.rfc-editor.org/in-notes/rfc791.txt
原文との対訳として読みたい方へ:このページをローカルに保存して、スタイルシートの original クラスの display 属性を none から block に変更してみてください。


ソーシャルブックマーク: このページをはてなブックマークに追加 このページをDeliciousに登録 このページをlivedoorクリップに登録
サイト内関連リンク:RFC 792 ICMP(日本語訳)/RFC 768 UDP(日本語訳)/RFC 1332 IPCP(日本語訳)/RFC 4301 IPsec(日本語訳)


INTERNET PROTOCOL

DARPA INTERNET PROGRAM

PROTOCOL SPECIFICATION

September 1981

prepared for

Defense Advanced Research Projects Agency
Information Processing Techniques Office
1400 Wilson Boulevard
Arlington, Virginia 22209

by

Information Sciences Institute
University of Southern California
4676 Admiralty Way
Marina del Rey, California 90291

TABLE OF CONTENTS 目次

PREFACE 前置き

This document specifies the DoD Standard Internet Protocol. This document is based on six earlier editions of the ARPA Internet Protocol Specification, and the present text draws heavily from them. There have been many contributors to this work both in terms of concepts and in terms of text. This edition revises aspects of addressing, error handling, option codes, and the security, precedence, compartments, and handling restriction features of the internet protocol. この文書は DoD 標準インターネットプロトコルを規定する。この文書は ARPA インターネットプロトコル仕様の既存の 6 つの文書を元にしており、文章の多くはそれらから引用されている。構想と文章とに関して、多くの貢献者がいた。このバージョンは、アドレッシング・エラー処理・オプションコードの解釈・セキュリティ・優先順位・インターネットプロトコルの制限機能の扱いを改定する。

Jon Postel
Editor

RFC: 791
Replaces: RFC 760
IENs 128, 123, 111,
80, 54, 44, 41, 28, 26

INTERNET PROTOCOL

DARPA INTERNET PROGRAM
PROTOCOL SPECIFICATION

1. INTRODUCTION 1. 導入

1.1. Motivation 1.1. 動機

The Internet Protocol is designed for use in interconnected systems of packet-switched computer communication networks. Such a system has been called a "catenet" [1]. The internet protocol provides for transmitting blocks of data called datagrams from sources to destinations, where sources and destinations are hosts identified by fixed length addresses. The internet protocol also provides for fragmentation and reassembly of long datagrams, if necessary, for transmission through "small packet" networks. インターネットプロトコルは、パケット交換方式のコンピュータ通信ネットワークで相互接続しているシステムにおいて使用されることを目的に設計されている。このようなシステムは "catanet"[1] と呼ばれていた。インターネットプロトコルはデータグラムと呼ばれるデータブロックを送信元から宛先へと転送する方法を提供する。ここで送信元と宛先とは、固定長のアドレスによって識別されるホストである。またインターネットプロトコルは、"小さいパケット(small packet)" のネットワークを通して通信するために必要であれば、長いデータグラムを分割および再構築する方法も提供する。

1.2. Scope 1.2. 範囲

The internet protocol is specifically limited in scope to provide the functions necessary to deliver a package of bits (an internet datagram) from a source to a destination over an interconnected system of networks. There are no mechanisms to augment end-to-end data reliability, flow control, sequencing, or other services commonly found in host-to-host protocols. The internet protocol can capitalize on the services of its supporting networks to provide various types and qualities of service. インターネットプロトコルは、ネットワークで相互接続されたシステムを通して送信者から受信者へとビットのかたまり(インターネットデータグラム)を配送するために必要とされる機能を提供するために、範囲が特に制限されている。エンドツーエンドのデータの信頼性を上げるためのメカニズム、フロー制御、順序付け、その他のホスト-ホスト間のプロトコルで一般的に見られるサービスはない。さまざまな種類/品質のサービスを提供するために、インターネットプロトコルは自身の提供するネットワークのサービスを利用することができる。

1.3. Interfaces 1.3. インターフェイス

This protocol is called on by host-to-host protocols in an internet environment. This protocol calls on local network protocols to carry the internet datagram to the next gateway or destination host. このプロトコルはインターネット環境におけるホスト-ホスト間のプロトコルによって呼び出される。インターネットデータグラムを次のゲートウェイや宛先ホストへと運ぶために、このプロトコルはローカルネットワークプロトコルを呼び出す。

For example, a TCP module would call on the internet module to take a TCP segment (including the TCP header and user data) as the data portion of an internet datagram. The TCP module would provide the addresses and other parameters in the internet header to the internet module as arguments of the call. The internet module would then create an internet datagram and call on the local network interface to transmit the internet datagram. 例えば TCP モジュールは、インターネットデータグラムのデータ部として TCP セグメント(TCP のヘッダとユーザーデータとを含む)を置くために、インターネットモジュールを呼び出すだろう。その呼び出しの引数として、TCP モジュールはインターネットモジュールに対しインターネットヘッダ内のアドレスと他のパラメータとを提供するたろう。次にインターネットモジュールはインターネットデータグラムを生成し、そのインターネットデータグラムを転送するためにローカルネットワークのインターフェイスを呼び出すだろう。

In the ARPANET case, for example, the internet module would call on a local net module which would add the 1822 leader [2] to the internet datagram creating an ARPANET message to transmit to the IMP. The ARPANET address would be derived from the internet address by the local network interface and would be the address of some host in the ARPANET, that host might be a gateway to other networks. 例えば APRANET の場合、インターネットモジュールは、IMP へ転送される ARPANET メッセージを生成するインターネットデータグラムに 1822 leader [2] を追加するローカルネットモジュールを呼び出すだろう。ARPANET アドレスはローカルネットワークインターフェイスによってインターネットアドレスから取得され、APRANET 内のホストのアドレスになるだろう。そのホストは他のネットワークへのゲートウェイかもしれない。

1.4. Operation 1.4. 動作

The internet protocol implements two basic functions: addressing and fragmentation. インターネットプロトコルは 2 つの基本機能、アドレス指定とフラグメント化とを提供する。

The internet modules use the addresses carried in the internet header to transmit internet datagrams toward their destinations. The selection of a path for transmission is called routing. インターネットモジュールはインターネットデータグラムを宛先へと転送するために、インターネットヘッダ内にあるアドレスを使用する。転送のための経路選択はルーティングと呼ばれる。

The internet modules use fields in the internet header to fragment and reassemble internet datagrams when necessary for transmission through "small packet" networks. インターネットモジュールは、"小さいパケット(small packet)" のネットワークを通して通信するのに必要であれば、インターネットヘッダ内のフィールドを使用してインターネットデータグラムを分割・再構築する。

The model of operation is that an internet module resides in each host engaged in internet communication and in each gateway that interconnects networks. These modules share common rules for interpreting address fields and for fragmenting and assembling internet datagrams. In addition, these modules (especially in gateways) have procedures for making routing decisions and other functions. この動作のモデルは、インターネット通信に参加している各ホストとネットワークを相互接続する各ゲートウェイとに、インターネットモジュールが存在するというものである。それらのモジュールは、アドレスフィールドの解釈とインターネットデータグラムの分割・再構成とに関する一般的な規則を共有する。加えてこれらのモジュールは(特にゲートウェイにおいて)、ルーティングを決定するなどの機能を持つ。

The internet protocol treats each internet datagram as an independent entity unrelated to any other internet datagram. There are no connections or logical circuits (virtual or otherwise). インターネットプロトコルは各インターネットデータグラムを他のインターネットデータグラムとは無関係の独立した実体として扱う。関連も論理回路も存在しない(仮想でもそれ以外でも)。

The internet protocol uses four key mechanisms in providing its service: Type of Service, Time to Live, Options, and Header Checksum. インターネットプロトコルはサービスを提供するために 4 つの重要なメカニズムを使用する:サービス種別(Type of Service)、有効期間(Time to Live)、オプション(Options)、ヘッダチェックサム(Header Checksum)である。

The Type of Service is used to indicate the quality of the service desired. The type of service is an abstract or generalized set of parameters which characterize the service choices provided in the networks that make up the internet. This type of service indication is to be used by gateways to select the actual transmission parameters for a particular network, the network to be used for the next hop, or the next gateway when routing an internet datagram. サービス種別(Type of Service)は希望するサービス品質を示すために使用される。サービス種別は、インターネットを構成するネットワークにおいて提供されるサービスの選択を特徴づけるパラメータの、抽象的または汎用的な集合である。このサービス種別の指定は、ゲートウェイが特定のネットワークのための実際の転送パラメータや、次ホップに使用されるネットワーク、インターネットデータグラムをルーティングする場合の次のゲートウェイなどを選択するために使用される。

The Time to Live is an indication of an upper bound on the lifetime of an internet datagram. It is set by the sender of the datagram and reduced at the points along the route where it is processed. If the time to live reaches zero before the internet datagram reaches its destination, the internet datagram is destroyed. The time to live can be thought of as a self destruct time limit. 有効期間(Time to Live)はインターネットデータグラムの寿命の上限を表す。この値は送信者によってセットされ、経路上で処理されるたびに減らされていく。インターネットデータグラムが送信先に届く前に有効期間の値がゼロになった場合、そのインターネットデータグラムは破棄される。有効期間は自爆までのタイムリミットと考えることができる。

The Options provide for control functions needed or useful in some situations but unnecessary for the most common communications. The options include provisions for timestamps, security, and special routing. オプション(Options)は、ごく一般的な通信には不要だが一部の状況で必要とされる制御機能を提供する。このオプションにはタイムスタンプやセキュリティ、特殊なルーティングが含まれる。

The Header Checksum provides a verification that the information used in processing internet datagram has been transmitted correctly. The data may contain errors. If the header checksum fails, the internet datagram is discarded at once by the entity which detects the error. ヘッダチェックサム(Header Checksum)は、インターネットデータグラムの処理に使用された情報が正しく転送されたことの検証を提供する。データはエラーを含んでいる可能性がある。ヘッダチェックサムが間違っている場合、エラーを検出した実体によってそのインターネットデータグラムは即座に破棄される。

The internet protocol does not provide a reliable communication facility. There are no acknowledgments either end-to-end or hop-by-hop. There is no error control for data, only a header checksum. There are no retransmissions. There is no flow control. インターネットプロトコルは信頼できる通信機能を提供しない。エンドツーエンド(ent-to-end)でもホップバイホップ(hop-by-hop)でも受信確認は行われない。エラー制御は無く、あるのはヘッダチェックサムだけである。再送信もないし、フロー制御もない。

Errors detected may be reported via the Internet Control Message Protocol (ICMP) [3] which is implemented in the internet protocol module. 検出されたエラーは、インターネットプロトコルのモジュール内に実装された Internet Control Message Protocol (ICMP) [3] を通して報告されてよい。

2. OVERVIEW 2. 概観

2.1. Relation to Other Protocols 2.1. 他のプロトコルとの関係

The following diagram illustrates the place of the internet protocol in the protocol hierarchy: 以下の図は、プロトコル階層におけるインターネットプロトコルの位置付けを示している:

                 +------+ +-----+ +-----+     +-----+  
                 |Telnet| | FTP | | TFTP| ... | ... |  
                 +------+ +-----+ +-----+     +-----+  
                       |   |         |           |     
                      +-----+     +-----+     +-----+  
                      | TCP |     | UDP | ... | ... |  
                      +-----+     +-----+     +-----+  
                         |           |           |     
                      +--------------------------+----+
                      |    Internet Protocol & ICMP   |
                      +--------------------------+----+
                                     |                 
                        +---------------------------+  
                        |   Local Network Protocol  |  
                        +---------------------------+  

                         Protocol Relationships

                               Figure 1.
                 +------+ +-----+ +-----+     +-----+  
                 |Telnet| | FTP | | TFTP| ... | ... |  
                 +------+ +-----+ +-----+     +-----+  
                       |   |         |           |     
                      +-----+     +-----+     +-----+  
                      | TCP |     | UDP | ... | ... |  
                      +-----+     +-----+     +-----+  
                         |           |           |     
                      +--------------------------+----+
                      |    Internet Protocol & ICMP   |
                      +--------------------------+----+
                                     |                 
                        +---------------------------+  
                        |   Local Network Protocol  |  
                        +---------------------------+  

                           プロトコル関連図

                                 図 1.

Internet protocol interfaces on one side to the higher level host-to-host protocols and on the other side to the local network protocol. In this context a "local network" may be a small network in a building or a large network such as the ARPANET. インターネットプロトコルは一方で上位レベルのホスト間プロトコルと接続し、もう一方でローカルネットワークプロトコルと接続している。この文脈における "ローカルネットワーク(local network)" は、ビルの中の小規模なネットワークから ARPANET のような大規模なネットワークまでを意味する。

2.2. Model of Operation 動作モデル

The model of operation for transmitting a datagram from one application program to another is illustrated by the following scenario: あるアプリケーションから別のアプリケーションへとデータグラムを送信する場合の動作モデルは、以下のようなシナリオで説明される:

We suppose that this transmission will involve one intermediate gateway. この通信には中間ゲートウェイがひとつ含まれると仮定する。

The sending application program prepares its data and calls on its local internet module to send that data as a datagram and passes the destination address and other parameters as arguments of the call. 送信側アプリケーションプログラムはデータを準備し、それをデータグラムとして送信するために自身のローカルのインターネットモジュールを呼び出し、その引数として宛先アドレスなどのパラメータを渡す。

The internet module prepares a datagram header and attaches the data to it. The internet module determines a local network address for this internet address, in this case it is the address of a gateway. It sends this datagram and the local network address to the local network interface. インターネットモジュールはデータグラムのヘッダを準備し、それにデータを付加する。インターネットモジュールは、その宛先インターネットアドレスに必要となるローカルネットワークアドレスを判断する。このケースではこれはゲートウェイのアドレスになる。インターネットモジュールはデータグラムとローカルネットワークアドレスとをローカルネットワークインターフェイスに送信する。

The local network interface creates a local network header, and attaches the datagram to it, then sends the result via the local network. ローカルネットワークインターフェイスはローカルネットワークのヘッダを生成し、それにデータグラムを付加したデータをローカルネットワーク経由で送信する。

The datagram arrives at a gateway host wrapped in the local network header, the local network interface strips off this header, and turns the datagram over to the internet module. The internet module determines from the internet address that the datagram is to be forwarded to another host in a second network. The internet module determines a local net address for the destination host. It calls on the local network interface for that network to send the datagram. データグラムはローカルネットワークヘッダに包まれた状態でゲートウェイホストに到達する。ローカルネットワークインターフェイスはそのヘッダを取り除き、中のデータグラムをインターネットモジュールに引き渡す。インターネットモジュールはそのインターネットアドレスから、そのデータグラムが第二のネットワーク上の別のホストへと転送されるべきであることを知る。インターネットモジュールは宛先ホストのローカルネットアドレスを判断し、データグラムを送信するためにそのネットワークのためのローカルネットワークインターフェイスを呼び出す。

This local network interface creates a local network header and attaches the datagram sending the result to the destination host. ローカルネットワークインターフェイスはローカルネットワークのヘッダを生成し、それにデータグラムを付加し、宛先ホストに送信する。

At this destination host the datagram is stripped of the local net header by the local network interface and handed to the internet module. 宛先ホストにおいて、ローカルネットワークインターフェイスはローカルネットのヘッダを取り除き、データグラムをインターネットモジュールに引き渡す。

The internet module determines that the datagram is for an application program in this host. It passes the data to the application program in response to a system call, passing the source address and other parameters as results of the call. インターネットモジュールは、そのデータグラムがそのホスト上のアプリケーションに向けられたものであることを見つけ出す。インターネットモジュールはシステムコールに応えてアプリケーションプログラムにデータを渡し、呼び出しの結果として送信元アドレスなどのパラメータを引き渡す。

   Application                                           Application
   Program                                                   Program
         \                                                   /      
       Internet Module      Internet Module      Internet Module    
             \                 /       \                /           
             LNI-1          LNI-1      LNI-2         LNI-2          
                \           /             \          /              
               Local Network 1           Local Network 2            



                            Transmission Path

                                Figure 2
   アプリケーション                                      アプリケーション
   プログラム                                            プログラム
         |                                                   /
     インターネット          インターネット         インターネット
     モジュール              モジュール             モジュール
             |                 /       |                /
             LNI-1          LNI-1      LNI-2         LNI-2
                |           /             |          /
           ローカルネットワーク 1     ローカルネットワーク 2



                                転送経路

                                  図 2

2.3. Function Description 2.3. 機能説明

The function or purpose of Internet Protocol is to move datagrams through an interconnected set of networks. This is done by passing the datagrams from one internet module to another until the destination is reached. The internet modules reside in hosts and gateways in the internet system. The datagrams are routed from one internet module to another through individual networks based on the interpretation of an internet address. Thus, one important mechanism of the internet protocol is the internet address. インターネットプロトコルの機能または目的は、相互接続されたネットワークの集合を通してデータグラムを移動させることである。これは、あるインターネットモジュールから別のインターネットモジュールへと、目的地に到達するまでデータグラムを引き渡していくことで実現される。インターネットモジュールはインターネットシステム内のホスト上やゲートウェイ上に存在する。データグラムはインターネットアドレスの解釈に基づき、個々のネットワークを通して、あるインターネットモジュールから別のインターネットモジュールへとルーティングされる。したがってインターネットプロトコルの重要なメカニズムのひとつは、インターネットアドレスである。

In the routing of messages from one internet module to another, datagrams may need to traverse a network whose maximum packet size is smaller than the size of the datagram. To overcome this difficulty, a fragmentation mechanism is provided in the internet protocol. あるインターネットモジュールから別のインターネットモジュールへとメッセージをルーティングするとき、最大パケットサイズがそのデータグラムのサイズより小さいネットワークを横断しなければならない可能性がある。この問題を解決するために、インターネットプロトコルはフラグメント化のメカニズムを提供する。

Addressing アドレス指定
A distinction is made between names, addresses, and routes [4]. A name indicates what we seek. An address indicates where it is. A route indicates how to get there. The internet protocol deals primarily with addresses. It is the task of higher level (i.e., host-to-host or application) protocols to make the mapping from names to addresses. The internet module maps internet addresses to local net addresses. It is the task of lower level (i.e., local net or gateways) procedures to make the mapping from local net addresses to routes. 名前・アドレス・経路[4]で区別される。名前は私たちが見るものである。アドレスはそれがどこにあるのかを表す。経路はそこに到達する方法を表す。インターネットプロトコルは主としてアドレスを扱う。名前からアドレスへのマッピングは、上位レベルのプロトコル(すなわちホスト間プロトコルまたはアプリケーションプロトコル)の仕事である。
Addresses are fixed length of four octets (32 bits). An address begins with a network number, followed by local address (called the "rest" field). There are three formats or classes of internet addresses: in class a, the high order bit is zero, the next 7 bits are the network, and the last 24 bits are the local address; in class b, the high order two bits are one-zero, the next 14 bits are the network and the last 16 bits are the local address; in class c, the high order three bits are one-one-zero, the next 21 bits are the network and the last 8 bits are the local address. アドレスは 4 オクテット(32 ビット)の固定長である。アドレスはネットワーク番号で始まり、その後にローカルアドレス("rest(残りの)" フィールドと呼ばれる)が続く。インターネットアドレスには 3 つのフォーマットまたはクラスがある:クラス A - 上位ビットがゼロ、次の 7 ビットがネットワーク、残りの 24 ビットがローカルアドレス。クラス B - 上位 2 ビットが 1 - 0、次の 14 ビットがネットワーク、残りの 16 ビットがローカルアドレス。クラス C - 上位 3 ビットが 1 - 1 - 0、次の 21 ビットがネットワーク、残りの 8 ビットがローカルアドレス。
Care must be taken in mapping internet addresses to local net addresses; a single physical host must be able to act as if it were several distinct hosts to the extent of using several distinct internet addresses. Some hosts will also have several physical interfaces (multi-homing). インターネットアドレスをローカルネットアドレスにマッピングする際には注意しなければならない。物理的には単一のホストが複数の異なるインターネットアドレスを使用することで、複数の別々のホストであるかのように振る舞うことができるはずである。さらに一部のホストは、複数の物理的インターフェイスを持っている(マルチホーム)可能性がある。
That is, provision must be made for a host to have several physical interfaces to the network with each having several logical internet addresses. つまり、一台のホストが複数の物理的インターフェイスを持ち、それぞれのインターフェイスに複数の論理的なインターネットアドレスを持つ場合の対策を立てておかなければならないということである。
Examples of address mappings may be found in "Address Mappings" [5]. アドレスのマッピングの例は "Address Mappings" [5] に見つけられるだろう。
Fragmentation フラグメンテーション
Fragmentation of an internet datagram is necessary when it originates in a local net that allows a large packet size and must traverse a local net that limits packets to a smaller size to reach its destination. インターネットデータグラムのフラグメント化は、大きいパケットサイズを許可しているローカルネットから発信されたデータが、宛先に到達するために小さいパケットサイズに制限されているローカルネットを横断しなければならない場合に必要とされる。
An internet datagram can be marked "don't fragment." Any internet datagram so marked is not to be internet fragmented under any circumstances. If internet datagram marked don't fragment cannot be delivered to its destination without fragmenting it, it is to be discarded instead. インターネットデータグラムには "don't fragment(フラグメント不可)" というマークをつけることができる。そのようなマークを付けられたインターネットデータグラムは、どのような条件であってもフラグメント化されることはない。フラグメント不可とマークされたインターネットデータグラムがフラグメント化せずには宛先へ到達できないとき、そのデータグラムは破棄される。
Fragmentation, transmission and reassembly across a local network which is invisible to the internet protocol module is called intranet fragmentation and may be used [6]. インターネットプロトコルモジュールから見えない範囲でローカルネットワークを横断するフラグメント化・転送・再構築はイントラネットフラグメンテーションと呼ばれ、使用されてもよい[6]。
The internet fragmentation and reassembly procedure needs to be able to break a datagram into an almost arbitrary number of pieces that can be later reassembled. The receiver of the fragments uses the identification field to ensure that fragments of different datagrams are not mixed. The fragment offset field tells the receiver the position of a fragment in the original datagram. The fragment offset and length determine the portion of the original datagram covered by this fragment. The more-fragments flag indicates (by being reset) the last fragment. These fields provide sufficient information to reassemble datagrams. インターネットのフラグメント化と再構築の手続きは、後に再構築可能なほぼ任意の数のフラグメントにデータグラムを分割できる必要がある。フラグメントの受信者は、異なるデータグラムのフラグメントが混在しないことを保証するために識別フィールド(identification field)を使用する。フラグメントオフセットフィールド(fragment offset field)は受信者に、元のデータグラム内におけるそのフラグメントの位置を教える。フラグメントのオフセットとレングスとにより、そのフラグメントが元のデータグラム内に占めていた部分がわかる。 モアフラグメント(more-fragments)フラグは(それがリセットされることで)、最後のフラグメントを表す。これらのフィールドはデータグラムを再構築するのに十分な情報を提供する。
The identification field is used to distinguish the fragments of one datagram from those of another. The originating protocol module of an internet datagram sets the identification field to a value that must be unique for that source-destination pair and protocol for the time the datagram will be active in the internet system. The originating protocol module of a complete datagram sets the more-fragments flag to zero and the fragment offset to zero. 識別フィールドは、あるデータグラムのフラグメントを別のデータグラムのフラグメントから区別するために使用される。インターネットデータグラムの発信側プロトコルモジュールは、そのデータグラムがインターネットシステム内に存在する間、この識別フィールドに送信元-送信先の組およびプロトコルに対して一意な値をセットしなければならない。完結するデータグラムを発信するプロトコルモジュールは、モアフラグメントフラグにゼロ、フラグメントオフセットにゼロをセットする。
To fragment a long internet datagram, an internet protocol module (for example, in a gateway), creates two new internet datagrams and copies the contents of the internet header fields from the long datagram into both new internet headers. The data of the long datagram is divided into two portions on a 8 octet (64 bit) boundary (the second portion might not be an integral multiple of 8 octets, but the first must be). Call the number of 8 octet blocks in the first portion NFB (for Number of Fragment Blocks). The first portion of the data is placed in the first new internet datagram, and the total length field is set to the length of the first datagram. The more-fragments flag is set to one. The second portion of the data is placed in the second new internet datagram, and the total length field is set to the length of the second datagram. The more-fragments flag carries the same value as the long datagram. The fragment offset field of the second new internet datagram is set to the value of that field in the long datagram plus NFB. インターネットデータグラムを分割するために、(例えばゲートウェイ内部の)インターネットプロトコルモジュールは、新しいインターネットデータグラムを二つ生成し、それらのヘッダフィールドに元の長いデータグラムのインターネットヘッダフィールドの内容をコピーする。元の長いデータグラムのデータ部は 8 オクテット(64 ビット)境界で二つの部分に分割される(後半部分のサイズは 8 オクテットの整数倍ではないかもしれないが、前半部分はそうでなければならない)。最初のフラグメントの 8 オクテットブロック数を NFB(Number of Fragment Blocks)と呼ぶ。最初のフラグメントは第一の新しいインターネットデータグラム内に置かれ、全長フィールド(total length field)には最初のフラグメントの長さがセットされ、モアフラグメントフラグには 1 がセットされる。第二のフラグメントは二番目の新しいインターネットデータグラム内に置かれ、全長フィールド(total length field)には二番目のデータグラムの長さがセットされ、モアフラグメントフラグは元の長いデータグラムと同じ値がセットされる。二番目の新しいインターネットデータグラムのフラグメントオフセットフィールドには、元の長いデータフィールドの同じフィールドの値に NFB を加えた値がセットされる。
This procedure can be generalized for an n-way split, rather than the two-way split described. この手続きは上記の 2 分割ではなく、n 分割に一般化することができる。
To assemble the fragments of an internet datagram, an internet protocol module (for example at a destination host) combines internet datagrams that all have the same value for the four fields: identification, source, destination, and protocol. The combination is done by placing the data portion of each fragment in the relative position indicated by the fragment offset in that fragment's internet header. The first fragment will have the fragment offset zero, and the last fragment will have the more-fragments flag reset to zero. インターネットダイアグラムのフラグメントを再構築するために、(例えば宛先ホスト上の)インターネットプロトコルモジュールは、識別(identification)・送信元(source)・宛先(destination)・プロトコル(protocol)の 4 つのフィールドがすべて同じ値のインターネットデータグラムを結合する。この結合は、各フラグメントのヘッダ内のフラグメントオフセットに示されている相対位置に各フラグメントのデータ部分を配置することで行われる。先頭のフラグメントのオフセットはゼロになる。最後のフラグメントのモアフラグメントフラグはゼロに初期化される。

2.4. Gateways 2.4. ゲートウェイ

Gateways implement internet protocol to forward datagrams between networks. Gateways also implement the Gateway to Gateway Protocol (GGP) [7] to coordinate routing and other internet control information. ゲートウェイはネットワーク間でデータグラムを転送するためにインターネットプロトコルを実装する。またゲートウェイは、ルーティングや他のネットワーク間制御情報を調整するためにゲートウェイ間プロトコル(GGP) [7] も実装する。

In a gateway the higher level protocols need not be implemented and the GGP functions are added to the IP module. ゲートウェイ内に上位プロトコルを実装する必要はなく、GGP 機能は IP モジュールに追加される。

                   +-------------------------------+   
                   | Internet Protocol & ICMP & GGP|   
                   +-------------------------------+   
                           |                 |         
                 +---------------+   +---------------+ 
                 |   Local Net   |   |   Local Net   | 
                 +---------------+   +---------------+ 

                           Gateway Protocols

                               Figure 3.
                   +-------------------------------+   
                   | Internet Protocol & ICMP & GGP|   
                   +-------------------------------+   
                           |                 |         
                 +---------------+   +---------------+ 
                 |   Local Net   |   |   Local Net   | 
                 +---------------+   +---------------+ 

                        ゲートウェイプロトコル群

                                 図 3

3. SPECIFICATION 3. 仕様

3.1. Internet Header Format 3.1. インターネットヘッダのフォーマット

A summary of the contents of the internet header follows: インターネットヘッダの概要は以下の通り:

    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    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Example Internet Datagram Header

                               Figure 4.
    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    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                 インターネットデータグラムのヘッダの例

                                 図 4

Note that each tick mark represents one bit position. 1 目盛りが 1 ビットを表していることに注意してほしい。

Version: 4 bits Version(バージョン): 4 ビット
The Version field indicates the format of the internet header. This document describes version 4. Version フィールドはインターネットヘッダのフォーマットを表す。この文書はバージョン 4 について記述している。
IHL: 4 bits IHL: 4 ビット
Internet Header Length is the length of the internet header in 32 bit words, and thus points to the beginning of the data. Note that the minimum value for a correct header is 5. Internet Header Length はインターネットヘッダの長さを 32 ビットワード値で表したものであり、したがってデータの開始位置を指している。正しいヘッダであれば最低でも 5 となる。
Type of Service: 8 bits Type of Service(サービス種別): 8 ビット
The Type of Service provides an indication of the abstract parameters of the quality of service desired. These parameters are to be used to guide the selection of the actual service parameters when transmitting a datagram through a particular network. Several networks offer service precedence, which somehow treats high precedence traffic as more important than other traffic (generally by accepting only traffic above a certain precedence at time of high load). The major choice is a three way tradeoff between low-delay, high-reliability, and high-throughput. Type of Service は、望まれるサービス品質の抽象的パラメータの指定を提供する。これらのパラメータは、特定のネットワークを通してデータグラムを送信するときに実際のサービスパラメータの選択を誘導するものである。一部のネットワークはサービスの優先順位付けを提供しており、何らかの方法で重要なトラフィックを優先順位の高いものをとして扱う(一般的には高負荷時に特定の優先順位以上のトラフィックだけを受け付けることで実現される)。選択に重要となるのは、低遅延・高信頼性・高スループットという三者間のトレードオフである。
      Bits 0-2:  Precedence.
      Bit    3:  0 = Normal Delay,      1 = Low Delay.
      Bits   4:  0 = Normal Throughput, 1 = High Throughput.
      Bits   5:  0 = Normal Relibility, 1 = High Relibility.
      Bit  6-7:  Reserved for Future Use.

         0     1     2     3     4     5     6     7
      +-----+-----+-----+-----+-----+-----+-----+-----+
      |                 |     |     |     |     |     |
      |   PRECEDENCE    |  D  |  T  |  R  |  0  |  0  |
      |                 |     |     |     |     |     |
      +-----+-----+-----+-----+-----+-----+-----+-----+

        Precedence

          111 - Network Control
          110 - Internetwork Control
          101 - CRITIC/ECP
          100 - Flash Override
          011 - Flash
          010 - Immediate
          001 - Priority
          000 - Routine
    Bits 0-2:  優先度(Precedence)
    Bit    3:  0 = 通常の遅延              1 = 低遅延
                   (Normal Delay)              (Low Delay)
    Bits   4:  0 = 通常のスループット      1 = 高スループット
                   (Normal Throughput)         (High Throughput)
    Bits   5:  0 = 通常の信頼性            1 = 高信頼性
                   (Normal Reliability)        (High Reliability)
    Bit  6-7:  将来のために予約済み

       0     1     2     3     4     5     6     7
    +-----+-----+-----+-----+-----+-----+-----+-----+
    |                 |     |     |     |     |     |
    |   PRECEDENCE    |  D  |  T  |  R  |  0  |  0  |
    |                 |     |     |     |     |     |
    +-----+-----+-----+-----+-----+-----+-----+-----+

      優先度(Precedence)

          111 - ネットワーク制御(Network Control)
          110 - ネットワーク間制御(Internetwork Control)
          101 - CRITIC/ECP
          100 - 瞬時より優先(Flash Override)
          011 - 瞬時(Flash)
          010 - 即時(Immediate)
          001 - 優先(Priority)
          000 - 通常(Routine)
The use of the Delay, Throughput, and Reliability indications may increase the cost (in some sense) of the service. In many networks better performance for one of these parameters is coupled with worse performance on another. Except for very unusual cases at most two of these three indications should be set. 遅延・スループット・信頼性の指定は、サービスの(何らかの意味の)コストを増加させる可能性がある。多くのネットワークでは、これらのパラメータのどれかひとつのパフォーマンスを上げることは、残り二つのパラメータのパフォーマンスを落とすことに繋がる。きわめて特殊な状況を除き、これら三つのパラメータのうち多くとも二つだけをセットする(1 にする)べきである。
The type of service is used to specify the treatment of the datagram during its transmission through the internet system. Example mappings of the internet type of service to the actual service provided on networks such as AUTODIN II, ARPANET, SATNET, and PRNET is given in "Service Mappings" [8]. Type of Service は、インターネットシステムを通して転送される間のデータグラムの扱いを指定するために使用される。インターネットのサービス種別を AUTODIN II や ARPANET、SATNET、PRNET などのネットワーク上の実際のサービスにマッピングする例は、"Service Mappings" [8] に示されている。
The Network Control precedence designation is intended to be used within a network only. The actual use and control of that designation is up to each network. The Internetwork Control designation is intended for use by gateway control originators only. If the actual use of these precedence designations is of concern to a particular network, it is the responsibility of that network to control the access to, and use of, those precedence designations. ネットワーク制御という優先度の指定は、ネットワーク内でのみ使用されることを意図している。この指定の実際の使用法と制御は、各ネットワークに依存する。ネットワーク間制御の指定は、ゲートウェイ制御の発信者によってのみ使用されることを意図している。これらの優先度の指定が特定のネットワークに対してのみ向けられたものである場合、それらの優先度の指定へのアクセスと使用との制御は、そのネットワークの責任である。
Total Length: 16 bits Total Length(全長): 16 ビット
Total Length is the length of the datagram, measured in octets, including internet header and data. This field allows the length of a datagram to be up to 65,535 octets. Such long datagrams are impractical for most hosts and networks. All hosts must be prepared to accept datagrams of up to 576 octets (whether they arrive whole or in fragments). It is recommended that hosts only send datagrams larger than 576 octets if they have assurance that the destination is prepared to accept the larger datagrams. Total Length はデータグラムの長さであり、インターネットヘッダとデータとを含み、オクテット単位で表される。このフィールドが許可する最大長は 65,535 オクテットである。そのような長いデータグラムは、ほとんどのホストやネットワークにとって非現実的なものである。すべてのホストは、(全体としてでもフラグメントとしてでも) 576 オクテット以下のデータグラムを受け入れる準備が出来ていなければならない。576 オクテットより大きいデータグラムを送信するホストは、送り先がそのような長いデータグラムを受け入れる準備ができていることを確認した場合にのみ、それを送信することが推奨される。
The number 576 is selected to allow a reasonable sized data block to be transmitted in addition to the required header information. For example, this size allows a data block of 512 octets plus 64 header octets to fit in a datagram. The maximal internet header is 60 octets, and a typical internet header is 20 octets, allowing a margin for headers of higher level protocols. この 576 という値は、必須のヘッダ情報に加えて、合理的なサイズのデータブロックの転送を可能にするために選ばれている。例えばこのサイズは、512 オクテットのデータブロックと 64 オクテットのヘッダとをひとつのデータグラムに納めることを可能にする。インターネットヘッダの最大長は 60 オクテット、典型的なインターネットヘッダは 20 オクテットであり、上位レベルプロトコルのヘッダに対する余裕を持たせている。
Identification: 16 bits Identification(識別): 16 ビット
An identifying value assigned by the sender to aid in assembling the fragments of a datagram. データグラムのフラグメントを再構築するのを手助けするために、送信者によって割り当てられる識別値である。
Flags: 3 bits Flags(フラグ): 3 ビット
Various Control Flags. 種々の制御フラグ(Various Control Flags)。
      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 |
        +---+---+---+
  Bit 0: 予約済み。ゼロでなければならない。
  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 |
        +---+---+---+
Fragment Offset: 13 bits Fragment Offset(フラグメントオフセット): 13 ビット
This field indicates where in the datagram this fragment belongs. The fragment offset is measured in units of 8 octets (64 bits). The first fragment has offset zero. このフィールドは、データグラム内でこのフラグメントが占める位置を表す。フラグメントオフセットは 8 オクテット(64 ビット)単位で示される。先頭のフラグメントのオフセットはゼロである。
Time to Live: 8 bits Time to Live(有効期間): 8 ビット
This field indicates the maximum time the datagram is allowed to remain in the internet system. If this field contains the value zero, then the datagram must be destroyed. This field is modified in internet header processing. The time is measured in units of seconds, but since every module that processes a datagram must decrease the TTL by at least one even if it process the datagram in less than a second, the TTL must be thought of only as an upper bound on the time a datagram may exist. The intention is to cause undeliverable datagrams to be discarded, and to bound the maximum datagram lifetime. このフィールドは、このデータグラムがインターネットシステム上にとどまることを許される最大時間を表す。このフィールドの値がゼロの場合、そのデータグラムは破棄されなければならない。このフィールドはインターネットヘッダの処理中に変更される。時間は秒単位で表されるが、TTL はデータグラムの存在可能な上限時間であると考えなければならない。なぜなら、データグラムを処理するすべてのモジュールは、1 秒以内にその処理が終わったとしても、TTL を少なくとも 1 秒は減らさなければならないためである。この目的は、配送不可能なデータグラムの破棄と、データグラムの寿命を制限することである。
Protocol: 8 bits Protocol(プロトコル): 8 ビット
This field indicates the next level protocol used in the data portion of the internet datagram. The values for various protocols are specified in "Assigned Numbers" [9]. このフィールドは、インターネットデータグラムのデータ部に使用されている上位レベルプロトコルを表す。"Assigned Numbers" [9] において、様々なプロトコルのための値が規定されている。
Header Checksum: 16 bits Header Checksum(ヘッダチェックサム): 16 ビット
A checksum on the header only. Since some header fields change (e.g., time to live), this is recomputed and verified at each point that the internet header is processed. ヘッダのみに対するチェックサムである。一部のヘッダフィールド(例えば TTL)は変化するため、インターネットヘッダが処理されるごとに再計算と検証が行われる。
The checksum algorithm is: チェックサムアルゴリズムは以下の通り:
The checksum field is the 16 bit one's complement of the one's complement sum of all 16 bit words in the header. For purposes of computing the checksum, the value of the checksum field is zero. チェックサムフィールドは、ヘッダ内の全ての 16 ビットワードの補数の合計に対する 16 ビットの補数である。チェックサムを計算する際には、チェックサムフィールドの値をゼロとみなす。
This is a simple to compute checksum and experimental evidence indicates it is adequate, but it is provisional and may be replaced by a CRC procedure, depending on further experience. このチェックサムの計算は単純で経験的にも適切なことが示されているが、これは暫定的なものであり、より経験を重ねることで CRC 手続きに置き換えられてもよい。
Source Address: 32 bits Source Address(送信元アドレス): 32 ビット
The source address. See section 3.2. 送信元アドレス。セクション 3.2 を参照してほしい。
Destination Address: 32 bits Destination Address(宛先アドレス): 32 ビット
The destination address. See section 3.2. 宛先アドレス。セクション 3.2 を参照してほしい。
Options: variable Options(オプション): 可変長
The options may appear or not in datagrams. They must be implemented by all IP modules (host and gateways). What is optional is their transmission in any particular datagram, not their implementation. データグラムにおいてオプションは現れても現れなくてもよい。すべての IP モジュール(ホスト・ゲートウェイ)はオプションを実装しなければならない。特定のデータグラムにおけるそれらの転送がオプションなのであって、その実装がオプションなのではない。
In some environments the security option may be required in all datagrams. 環境によっては、すべてのデータグラムにセキュリティオプションが必須かもしれない。
The option field is variable in length. There may be zero or more options. There are two cases for the format of an option: オプションフィールドは可変長である。0 個または複数のオプションが許可される。オプションの書式には 2 つのケースがある:
Case 1: A single octet of option-type. ケース 1: 単一オクテットの option-type。
Case 2: An option-type octet, an option-length octet, and the actual option-data octets. ケース 2: option-type オクテットと option-length オクテットと、実際の option-date オクテット。
The option-length octet counts the option-type octet and the option-length octet as well as the option-data octets. option-length オクテットは、option-date オクテットだけでなく、option-type オクテットと option-length オクテットも含めてカウントする。
The option-type octet is viewed as having 3 fields: option-type オクテットは 3 つのフィールドを持っているとみなされる:
      1 bit   copied flag,
      2 bits  option class,
      5 bits  option number.
      1 ビット  コピーフラグ
      2 ビット  オプションクラス
      5 ビット  オプション番号
The copied flag indicates that this option is copied into all fragments on fragmentation. コピーフラグは、フラグメント化されたすべてのフラグメントにそのオプションがコピーされていることを示す。
      0 = not copied
      1 = copied
      0 = コピーされていない(not copied)
      1 = コピーされている(copied)
The option classes are: オプションクラスは以下の通り:
      0 = control
      1 = reserved for future use
      2 = debugging and measurement
      3 = reserved for future use
      0 = 制御
      1 = 将来のために予約済み
      2 = デバッグと計測
      3 = 将来のために予約済み
The following internet options are defined: 以下のインターネットオプションが定義済みである:
      CLASS NUMBER LENGTH DESCRIPTION
      ----- ------ ------ -----------
        0     0      -    End of Option list.  This option occupies only
                          1 octet; it has no length octet.
        0     1      -    No Operation.  This option occupies only 1
                          octet; it has no length octet.
        0     2     11    Security.  Used to carry Security,
                          Compartmentation, User Group (TCC), and
                          Handling Restriction Codes compatible with DOD
                          requirements.
        0     3     var.  Loose Source Routing.  Used to route the
                          internet datagram based on information
                          supplied by the source.
        0     9     var.  Strict Source Routing.  Used to route the
                          internet datagram based on information
                          supplied by the source.
        0     7     var.  Record Route.  Used to trace the route an
                          internet datagram takes.
        0     8      4    Stream ID.  Used to carry the stream
                          identifier.
        2     4     var.  Internet Timestamp.
  クラス 番号   長さ  説明
  ------ ------ ----- -----------
    0     0      -    オプションリスト終了。このオプションは
                      1 オクテットしか使用せず、長さを持たない。
    0     1      -    ノーオペレーション。このオプションは
                      1 オクテットしか使用せず、長さを持たない。
    0     2     11    セキュリティ。DOD の要求事項と互換性のある
                      セキュリティ、区分、ユーザーグループ(TCC)、
                      取り扱い制限コードを送信するために使用される。
                      (訳注:DOD=米国国防総省)
    0     3     可変  ルーズソースルーティング。送信元の提供する
                      情報に基づいてインターネットデータグラムを
                      ルーティングするために使用される。
    0     9     可変  ストリクトソースルーティング。送信元の提供
                      する情報に基づいてインターネットデータグラ
                      ムをルーティングするために使用される。
    0     7     可変  経路記録。インターネットデータグラムが通っ
                      た経路を追跡するために使用される。
    0     8      4    ストリーム ID。ストリーム識別子を送信するた
                      めに使用される。
    2     4     可変  インターネットタイムスタンプ。

Specific Option Definitions 具体的なオプションの定義

End of Option List オプションリスト終了

        +--------+
        |00000000|
        +--------+
          Type=0
        +--------+
        |00000000|
        +--------+
         タイプ=0

This option indicates the end of the option list. This might not coincide with the end of the internet header according to the internet header length. This is used at the end of all options, not the end of each option, and need only be used if the end of the options would not otherwise coincide with the end of the internet header. このオプションはオプションリストの終了を表す。これはインターネットヘッダ長から知ることのできるインターネットヘッダの終了と一致しない可能性がある。これは各オプションの終わりではなく、すべてのオプションの終端に使用され、オプションの終端がインターネットヘッダの終端と一致しない場合にのみ必要である。

May be copied, introduced, or deleted on fragmentation, or for any other reason. フラグメント化またはその他の理由でコピー・導入・削除されてよい。

No Operation ノーオペレーション

        +--------+
        |00000001|
        +--------+
          Type=1
        +--------+
        |00000001|
        +--------+
         タイプ=1

This option may be used between options, for example, to align the beginning of a subsequent option on a 32 bit boundary. このオプションは、オプションの間に置くことで、例えば後続のオプションの開始位置を 32 ビット境界にそろえるために使用される。

May be copied, introduced, or deleted on fragmentation, or for any other reason. フラグメント化またはその他の理由でコピー・導入・削除されてよい。

Security セキュリティ

This option provides a way for hosts to send security, compartmentation, handling restrictions, and TCC (closed user group) parameters. The format for this option is as follows: このオプションは、セキュリティ・区分・取り扱い制限・TCC(クローズドユーザーグループ)パラメータをホストが送信する方法を提供する。このオプションのフォーマットは以下の通り:

          +--------+--------+---//---+---//---+---//---+---//---+
          |10000010|00001011|SSS  SSS|CCC  CCC|HHH  HHH|  TCC   |
          +--------+--------+---//---+---//---+---//---+---//---+
           Type=130 Length=11
          +--------+--------+---//---+---//---+---//---+---//---+
          |10000010|00001011|SSS  SSS|CCC  CCC|HHH  HHH|  TCC   |
          +--------+--------+---//---+---//---+---//---+---//---+
         タイプ=130 レングス=11
Security (S field): 16 bits セキュリティ(Security) (S フィールド): 16 ビット
Specifies one of 16 levels of security (eight of which are reserved for future use). 16 段階のセキュリティのひとつを指定する(8 個は将来のために予約されている)
            00000000 00000000 - Unclassified
            11110001 00110101 - Confidential
            01111000 10011010 - EFTO
            10111100 01001101 - MMMM
            01011110 00100110 - PROG
            10101111 00010011 - Restricted
            11010111 10001000 - Secret
            01101011 11000101 - Top Secret
            00110101 11100010 - (Reserved for future use)
            10011010 11110001 - (Reserved for future use)
            01001101 01111000 - (Reserved for future use)
            00100100 10111101 - (Reserved for future use)
            00010011 01011110 - (Reserved for future use)
            10001001 10101111 - (Reserved for future use)
            11000100 11010110 - (Reserved for future use)
            11100010 01101011 - (Reserved for future use)
            00000000 00000000 - Unclassified(機密扱いではない)
            11110001 00110101 - Confidential(秘密)
            01111000 10011010 - EFTO
            10111100 01001101 - MMMM
            01011110 00100110 - PROG
            10101111 00010011 - Restricted(部外秘)
            11010111 10001000 - Secret(機密)
            01101011 11000101 - Top Secret(極秘)
            00110101 11100010 - (将来のために予約済み)
            10011010 11110001 - (将来のために予約済み)
            01001101 01111000 - (将来のために予約済み)
            00100100 10111101 - (将来のために予約済み)
            00010011 01011110 - (将来のために予約済み)
            10001001 10101111 - (将来のために予約済み)
            11000100 11010110 - (将来のために予約済み)
            11100010 01101011 - (将来のために予約済み)
Compartments (C field): 16 bits 区分(Compartments) (C フィールド): 16 ビット
An all zero value is used when the information transmitted is not compartmented. Other values for the compartments field may be obtained from the Defense Intelligence Agency. 送信する情報が区分けされたものでなければ、すべてゼロの値を使用する。区分フィールドのそれ以外の値は米国防情報局から取得できる。
Handling Restrictions (H field): 16 bits 取り扱い制限(Handling Restrictions) (H フィールド): 16 ビット
The values for the control and release markings are alphanumeric digraphs and are defined in the Defense Intelligence Agency Manual DIAM 65-19, "Standard Security Markings". 制御と解放とを表す値は英数字の連字であり、米国防情報局の Manual DIAM 65-19 "Standard Security Markings" で定義されている。
Transmission Control Code (TCC field): 24 bits 通信制御コード(Transmission Control Code) (TCC フィールド)
Provides a means to segregate traffic and define controlled communities of interest among subscribers. The TCC values are trigraphs, and are available from HQ DCA Code 530. 加入者間で興味のあるトラフィックを分離し、管理コミュニティを定義するための手段を提供する。TCC の値は、HQ DCA Code 530 より入手可能な三重文字である。
Must be copied on fragmentation. This option appears at most once in a datagram. フラグメント化時にはコピーされなければならない。このオプションはひとつのデータグラムに高々一回だけ現れる。

Loose Source and Record Route ルーズソースルーティングおよび経路記録

        +--------+--------+--------+---------//--------+
        |10000011| length | pointer|     route data    |
        +--------+--------+--------+---------//--------+
         Type=131
        +--------+--------+--------+---------//--------+
        |10000011|レングス|ポインタ|      経路情報     |
        +--------+--------+--------+---------//--------+
        タイプ=131

The loose source and record route (LSRR) option provides a means for the source of an internet datagram to supply routing information to be used by the gateways in forwarding the datagram to the destination, and to record the route information. ルーズソースルーティングおよび経路記録(LSRR)オプションは、インターネットデータグラムの送信元が、宛先へのデータグラム転送時にゲートウェイが使用し経路情報を記録するためルーティング情報を提供する。

The option begins with the option type code. The second octet is the option length which includes the option type code and the length octet, the pointer octet, and length-3 octets of route data. The third octet is the pointer into the route data indicating the octet which begins the next source address to be processed. The pointer is relative to this option, and the smallest legal value for the pointer is 4. このオプションはオプションタイプコードから始まる。第二オクテットはオプションの長さであり、これにはオプションタイプコード、レングス(length)オクテット、ポインタ(pointer)オクテット、(レングス - 3)の経路情報オクテットが含まれる。第三オクテットは、経路情報の中で次に処理されるべき送信元アドレスのオクテット位置を指すポインタである。ポインタはこのオプションからの相対的な値である。したがって正しい値であれば最小でも 4 となる。

A route data is composed of a series of internet addresses. Each internet address is 32 bits or 4 octets. If the pointer is greater than the length, the source route is empty (and the recorded route full) and the routing is to be based on the destination address field. 経路情報は一連のインターネットアドレスから構成される。各インターネットアドレスは 32 ビットまたは 4 オクテットである。ポインタがレングスよりも大きい場合、ソースルートは空(かつ経路記録が満杯)ということであり、ルーティングは宛先アドレスフィールドに基づいて行われる。

If the address in destination address field has been reached and the pointer is not greater than the length, the next address in the source route replaces the address in the destination address field, and the recorded route address replaces the source address just used, and pointer is increased by four. 宛先アドレスフィールドのアドレスに到達し、かつポインタがレングス以下の場合、ソースルート内の次アドレスは宛先アドレスフィールドのアドレスに置き換えられ、経路記録のアドレスは今使用した送信元アドレスに置き換えられ、ポインタは 4 だけ加算される。

The recorded route address is the internet module's own internet address as known in the environment into which this datagram is being forwarded. 経路記録に残されるアドレスは、このデータグラムが転送されてきた環境において知られているインターネットモジュール自身のインターネットアドレスである。

This procedure of replacing the source route with the recorded route (though it is in the reverse of the order it must be in to be used as a source route) means the option (and the IP header as a whole) remains a constant length as the datagram progresses through the internet. ソースルートを経路記録に置き換えるこの手順は(ソースルートとして使用するには順序を逆にしなければならないが)、ネットワーク間を通過してもこのオプション(および IP ヘッダ全体)の長さが変化しないことを意味する。

This option is a loose source route because the gateway or host IP is allowed to use any route of any number of other intermediate gateways to reach the next address in the route. ゲートウェイまたはホストの IP は、経路データ上の次のアドレスに到達するために、任意の数の中間ゲートウェイによる任意の経路を使用することが許される。そのため、このオプションはルーズソースルーティングである。

Must be copied on fragmentation. Appears at most once in a datagram. フラグメント化時にはコピーされなければならない。このオプションはひとつのデータグラムに高々一回だけ現れる。

Strict Source and Record Route ストリクトソースルーティングおよび経路記録

        +--------+--------+--------+---------//--------+
        |10001001| length | pointer|     route data    |
        +--------+--------+--------+---------//--------+
         Type=137
        +--------+--------+--------+---------//--------+
        |10001001|レングス|ポインタ|      経路情報     |
        +--------+--------+--------+---------//--------+
        タイプ=137

The strict source and record route (SSRR) option provides a means for the source of an internet datagram to supply routing information to be used by the gateways in forwarding the datagram to the destination, and to record the route information. ストリクトソースルーティングおよび経路記録(SSRR)は、インターネットデータグラムの送信元が、宛先へのデータグラム転送時にゲートウェイが使用し経路情報を記録するためルーティング情報を提供する。

The option begins with the option type code. The second octet is the option length which includes the option type code and the length octet, the pointer octet, and length-3 octets of route data. The third octet is the pointer into the route data indicating the octet which begins the next source address to be processed. The pointer is relative to this option, and the smallest legal value for the pointer is 4. このオプションはオプションタイプコードで始まる。第二オクテットはオプションの長さであり、これにはオプションタイプコードとレングス(length)オクテット、(レングス - 3)の経路情報オクテットが含まれる。第三オクテットは、経路情報の中で次に処理されるべき送信元アドレスのオクテット位置を指すポインタである。ポインタはこのオプションからの相対的な値である。したがって正しい値であれば最小でも 4 となる。

A route data is composed of a series of internet addresses. Each internet address is 32 bits or 4 octets. If the pointer is greater than the length, the source route is empty (and the recorded route full) and the routing is to be based on the destination address field. 経路情報は一連のインターネットアドレスから構成される。各インターネットアドレスは 32 ビットまたは 4 オクテットである。ポインタがレングスより大きい場合、ソースルートは空(かつ経路記録が満杯)ということであり、ルーティングは宛先アドレスフィールドに基づいて行われる。

If the address in destination address field has been reached and the pointer is not greater than the length, the next address in the source route replaces the address in the destination address field, and the recorded route address replaces the source address just used, and pointer is increased by four. 宛先アドレスフィールドのアドレスに到達し、かつポインタがレングス以下の場合、ソースルート内の次アドレスは宛先アドレスフィールドのアドレスに置き換えられ、経路記録のアドレスは今使用した送信元アドレスに置き換えられ、ポインタは 4 だけ加算される。

The recorded route address is the internet module's own internet address as known in the environment into which this datagram is being forwarded. 経路記録に残されるアドレスは、このデータグラムが転送されてきた環境において知られているインターネットモジュール自身のインターネットアドレスである。

This procedure of replacing the source route with the recorded route (though it is in the reverse of the order it must be in to be used as a source route) means the option (and the IP header as a whole) remains a constant length as the datagram progresses through the internet. ソースルートを経路記録に置き換えるこの手順は(ソースルートとして使用するには順序を逆にしなければならないが)、ネットワーク間を通過してもこのオプション(および IP ヘッダ全体)の長さが変化しないことを意味する。

This option is a strict source route because the gateway or host IP must send the datagram directly to the next address in the source route through only the directly connected network indicated in the next address to reach the next gateway or host specified in the route. ゲートウェイまたはホストの IP は、経路データ上の次のゲートウェイまたはホストに到達するために、次アドレスに示される直結したネットワークだけを通して、ソースルート上の次のアドレスにデータグラムを直接送信しなければならない。そのため、このオプションはストリクトソースルーティングである。

Must be copied on fragmentation. Appears at most once in a datagram. フラグメント化時にはコピーされなければならない。このオプションはひとつのデータグラムに高々一回だけ現れる。

Record Route 経路記録

        +--------+--------+--------+---------//--------+
        |00000111| length | pointer|     route data    |
        +--------+--------+--------+---------//--------+
          Type=7
        +--------+--------+--------+---------//--------+
        |00000111|レングス|ポインタ|      経路情報     |
        +--------+--------+--------+---------//--------+
         タイプ=7

The record route option provides a means to record the route of an internet datagram. 経路記録オプションは、インターネットダイアグラムの経路を記録する手段を提供する。

The option begins with the option type code. The second octet is the option length which includes the option type code and the length octet, the pointer octet, and length-3 octets of route data. The third octet is the pointer into the route data indicating the octet which begins the next area to store a route address. The pointer is relative to this option, and the smallest legal value for the pointer is 4. このオプションはオプションタイプコードで始まる。第二オクテットはオプションの長さであり、これにはオプションタイプコードとレングス(length)オクテット、ポインタオクテット、(レングス - 3)の経路情報オクテットが含まれる。第三オクテットは経路アドレスを保存するための次の領域を指すポインタである。ポインタはオプションに対して相対的な値である。したがって正しい値であれば最小でも 4 となる。

A recorded route is composed of a series of internet addresses. Each internet address is 32 bits or 4 octets. If the pointer is greater than the length, the recorded route data area is full. The originating host must compose this option with a large enough route data area to hold all the address expected. The size of the option does not change due to adding addresses. The intitial contents of the route data area must be zero. 経路記録は一連のインターネットアドレスから構成される。各インターネットアドレスは 32 ビットまたは 4 オクテットである。ポインタがレングスより大きい場合、経路記録が満杯ということである。送信元ホストは、予想されるすべてのアドレスを保持するのに十分な経路情報領域を持たせてこのオプションを作成しなければならない。このオプションのサイズはアドレスの追加では変化しない。経路情報の初期値はゼロでなければならない。

When an internet module routes a datagram it checks to see if the record route option is present. If it is, it inserts its own internet address as known in the environment into which this datagram is being forwarded into the recorded route begining at the octet indicated by the pointer, and increments the pointer by four. データグラムを中継するとき、インターネットモジュールは経路記録オプションが付加されているかどうかを確認する。もし付加されていれば、インターネットモジュールは自身のインターネットアドレスをポインタで指定されたオクテット位置に挿入し、ポインタに 4 を加算する。ここで挿入されるインターネットアドレスは、データグラムが転送されてきた環境において知られているアドレスである。

If the route data area is already full (the pointer exceeds the length) the datagram is forwarded without inserting the address into the recorded route. If there is some room but not enough room for a full address to be inserted, the original datagram is considered to be in error and is discarded. In either case an ICMP parameter problem message may be sent to the source host [3]. 経路情報の領域が満杯の場合(つまりポインタ位置がレングスを超えている場合)、データグラムは転送されるが経路情報は記録されない。空き領域はあるもののアドレス全体を含めるには不足している場合、元のデータグラムはエラーと見なされ、破棄される。どちらの場合も送信元ホストに ICMP パラメータエラーメッセージが送信されてよい[3]。

Not copied on fragmentation, goes in first fragment only. Appears at most once in a datagram. フラグメント化時にコピーされず、先頭フラグメントにのみ現れる。このオプションはひとつのデータグラムに高々一回だけ現れる。

Stream Identifier ストリーム識別子

        +--------+--------+--------+--------+
        |10001000|00000010|    Stream ID    |
        +--------+--------+--------+--------+
         Type=136 Length=4
        +--------+--------+--------+--------+
        |10001000|00000010|  ストリーム ID  |
        +--------+--------+--------+--------+
        タイプ=136 レングス=4

        (訳注:レングスの「00000010」は「00000100」の誤りと思われます。)

This option provides a way for the 16-bit SATNET stream identifier to be carried through networks that do not support the stream concept. このオプションは、ストリームの概念をサポートしないネットワークを通して、16 ビットの SATNET ストリーム識別子を伝達する方法を提供する。

Must be copied on fragmentation. Appears at most once in a datagram. フラグメント化時にコピーされなければならない。このオプションはひとつのデータグラムに高々一回だけ現れる。

Internet Timestamp インターネットタイムスタンプ

        +--------+--------+--------+--------+
        |01000100| length | pointer|oflw|flg|
        +--------+--------+--------+--------+
        |         internet address          |
        +--------+--------+--------+--------+
        |             timestamp             |
        +--------+--------+--------+--------+
        |                 .                 |
                          .
                          .
        Type = 68
        +--------+--------+--------+--------+
        |01000100|レングス|ポインタ|oflw|flg|
        +--------+--------+--------+--------+
        |      インターネットアドレス       |
        +--------+--------+--------+--------+
        |          タイムスタンプ           |
        +--------+--------+--------+--------+
        |                 .                 |
                          .
                          .
        タイプ = 68

The Option Length is the number of octets in the option counting the type, length, pointer, and overflow/flag octets (maximum length 40). このオプションのレングスは、タイプ・レングス・ポインタ・オーバーフロー/フラグ(oflw|flg)のオクテット数である(最大長 40)。

The Pointer is the number of octets from the beginning of this option to the end of timestamps plus one (i.e., it points to the octet beginning the space for next timestamp). The smallest legal value is 5. The timestamp area is full when the pointer is greater than the length. ポインタは、このオプションの先頭からタイムスタンプの終端までのオクテット数に 1 を加えた値である(つまり次のタイムスタンプを置く領域の先頭を指す)。正常な場合の最小値は 5 である。ポインタの値がレングスよりも大きい場合、タイムスタンプの領域が満杯であることを表す。

The Overflow (oflw) [4 bits] is the number of IP modules that cannot register timestamps due to lack of space. オーバーフロー(oflw) [4 ビット]は、領域不足のためにタイムスタンプを登録できなかった IP モジュールの数である。

The Flag (flg) [4 bits] values are フラグ(flg) [4 ビット]の値は以下の通り:

The Timestamp is a right-justified, 32-bit timestamp in milliseconds since midnight UT. If the time is not available in milliseconds or cannot be provided with respect to midnight UT then any time may be inserted as a timestamp provided the high order bit of the timestamp field is set to one to indicate the use of a non-standard value. タイムスタンプは右詰めの 32 ビットタイムスタンプであり、UT の深夜零時からの経過ミリ秒を表す。ミリ秒単位を利用できない場合、または UT の深夜零時からの経過時間を提供できない場合、非標準の値が使用されていることを表すためにタイムスタンプフィールドの上位 1 ビットをセットすることを条件に、任意の時刻をタイムスタンプとして挿入することができる。

The originating host must compose this option with a large enough timestamp data area to hold all the timestamp information expected. The size of the option does not change due to adding timestamps. The intitial contents of the timestamp data area must be zero or internet address/zero pairs. 発信ホストは、予期されるすべてのタイムスタンプ情報を保持するのに十分な領域を持たせてこのオプションを生成しなければならない。このオプションのサイズがタイムスタンプの追加によって変更されることはない。タイムスタンプ情報の初期内容は、ゼロ、またはインターネットアドレス/ゼロの組でなければならない。

If the timestamp data area is already full (the pointer exceeds the length) the datagram is forwarded without inserting the timestamp, but the overflow count is incremented by one. タイムスタンプ用の領域がすでに一杯の場合(ポインタがレングスを超えている場合)、データグラムは転送されるが、タイムスタンプは挿入されず、オーバーフローカウントが 1 加算される。

If there is some room but not enough room for a full timestamp to be inserted, or the overflow count itself overflows, the original datagram is considered to be in error and is discarded. In either case an ICMP parameter problem message may be sent to the source host [3]. 空き領域はあるものの完全なタイムスタンプを挿入するには不足している場合、またはオーバーフローカウント自体がオーバーフローする場合、そのデータグラムはエラーと見なされ、破棄される。いずれの場合も、送信元ホストに ICMP パラメータ障害メッセージが送信されてよい[3]。

The timestamp option is not copied upon fragmentation. It is carried in the first fragment. Appears at most once in a datagram. タイムスタンプオプションはフラグメント化時にコピーされず、先頭のフラグメント内に含まれる。このオプションはひとつのデータグラムに高々一回だけ現れる。

Padding: variable パディング: 可変
The internet header padding is used to ensure that the internet header ends on a 32 bit boundary. The padding is zero. インターネットヘッダのパディングは、ヘッダが 32 ビット境界で終了するのを保証するために使用される。パディングの内容はゼロである。

3.2. Discussion 3.2. 考察

The implementation of a protocol must be robust. Each implementation must expect to interoperate with others created by different individuals. While the goal of this specification is to be explicit about the protocol there is the possibility of differing interpretations. In general, an implementation must be conservative in its sending behavior, and liberal in its receiving behavior. That is, it must be careful to send well-formed datagrams, but must accept any datagram that it can interpret (e.g., not object to technical errors where the meaning is still clear). プロトコル実装は堅牢でなければならない。各実装は、様々な個人が作成した別の実装と相互運用できることを期待されるだろう。本仕様の目的はこのプロトコルを明確化することであるが、異なった解釈をされる可能性もある。一般に実装は、送信時の振る舞いは保守的で、受信時の振る舞いは寛容でなければならない。言い換えると、実装は的確なデータグラムを送信するべきであり、また解釈可能なデータグラムは全て受け入れるべきである(例えば、技術的にはエラーでも意図が明確であればエラーにしないべきである)。

The basic internet service is datagram oriented and provides for the fragmentation of datagrams at gateways, with reassembly taking place at the destination internet protocol module in the destination host. Of course, fragmentation and reassembly of datagrams within a network or by private agreement between the gateways of a network is also allowed since this is transparent to the internet protocols and the higher-level protocols. This transparent type of fragmentation and reassembly is termed "network-dependent" (or intranet) fragmentation and is not discussed further here. 基本的なインターネットサービスはデータグラム指向であり、ゲートウェイでのフラグメンテーションを提供し、宛先ホスト上のインターネットプロトコルモジュールで再構築される。もちろん、インターネットプロトコルおよび上位プロトコルに対して透過的である限り、ネットワーク内またはネットワークのゲートウェイ間のプライベートな合意によるデータグラムのフラグメンテーション・再構築は許される。この透過型のフラグメンテーション・再構築は "ネットワーク依存(network-dependent)" (または イントラネット) のフラグメンテーションと呼ばれるもので、ここではこれ以上議論しない。

Internet addresses distinguish sources and destinations to the host level and provide a protocol field as well. It is assumed that each protocol will provide for whatever multiplexing is necessary within a host. インターネットアドレスは送信元と宛先とをホストレベルで識別し、その上でプロトコルフィールドを提供する。各プロトコルはあるホスト内において必要とされるどのような多重化でも提供すると見なされる。

Addressing アドレッシング
To provide for flexibility in assigning address to networks and allow for the large number of small to intermediate sized networks the interpretation of the address field is coded to specify a small number of networks with a large number of host, a moderate number of networks with a moderate number of hosts, and a large number of networks with a small number of hosts. In addition there is an escape code for extended addressing mode. ネットワークへのアドレス割り当てにおける柔軟性を提供し、かつ小規模から中規模の多数のネットワークを可能にするために、アドレスフィールドの解釈は、ホスト数の多い少数のネットワーク、ホスト数が中程度で中程度の数のネットワーク、ホスト数の少ない多数のネットワークを特定するようにコード化されている。さらに、拡張アドレッシングモードのためのエスケープコードも存在する。
    Address Formats:

      High Order Bits   Format                           Class
      ---------------   -------------------------------  -----
            0            7 bits of net, 24 bits of host    a
            10          14 bits of net, 16 bits of host    b
            110         21 bits of net,  8 bits of host    c
            111         escape to extended addressing mode
    アドレスフォーマット:

      上位ビット  フォーマット                                クラス
      ----------  ------------------------------------------  -----
          0        7 ビットがネットワーク、24 ビットがホスト    a
          10      14 ビットがネットワーク、16 ビットがホスト    b
          110     21 ビットがネットワーク、 8 ビットがホスト    c
          111     拡張アドレッシングモードへのエスケープ
A value of zero in the network field means this network. This is only used in certain ICMP messages. The extended addressing mode is undefined. Both of these features are reserved for future use. ネットワークフィールドの値が 0 の場合、そのネットワークを意味する。これは特定の ICMP メッセージにおいてのみ使用される。拡張アドレッシングモードは未定義である。これらは共に、将来のために予約されている。
The actual values assigned for network addresses is given in "Assigned Numbers" [9]. ネットワークアドレスに割り当てられている実際の値は "Assigned Numbers" [9] に示されている。
The local address, assigned by the local network, must allow for a single physical host to act as several distinct internet hosts. That is, there must be a mapping between internet host addresses and network/host interfaces that allows several internet addresses to correspond to one interface. It must also be allowed for a host to have several physical interfaces and to treat the datagrams from several of them as if they were all addressed to a single host. ローカルネットワークによって割り当てられるローカルアドレスは、単独の物理ホストが複数の異なるインターネットホストとして振る舞うことを許可しなければならない。つまり、インターネットホストアドレスとネットワーク/ホストインターフェイスとの間で、複数のインターネットアドレスをひとつのインターフェイスに対応させられるマッピングが必ず必要ということである。また、ホストが複数の物理インターフェイスを持ち、そのうちの複数からのデータグラムが単一のホストに解決されるかのように扱うことを許可しなければならない。
Address mappings between internet addresses and addresses for ARPANET, SATNET, PRNET, and other networks are described in "Address Mappings" [5]. インターネットアドレスと ARPANET・SATNET・PRNET・その他のネットワークのアドレスとのマッピングは、"Address Mappings" [5] に記述されている。
Fragmentation and Reassembly. フラグメント化と再構築
The internet identification field (ID) is used together with the source and destination address, and the protocol fields, to identify datagram fragments for reassembly. インターネット識別フィールド(ID)は、再構築のためにデータグラムフラグメントを識別するために、送信元/宛先アドレス、プロトコルフィールドと供に使用される。
The More Fragments flag bit (MF) is set if the datagram is not the last fragment. The Fragment Offset field identifies the fragment location, relative to the beginning of the original unfragmented datagram. Fragments are counted in units of 8 octets. The fragmentation strategy is designed so than an unfragmented datagram has all zero fragmentation information (MF = 0, fragment offset = 0). If an internet datagram is fragmented, its data portion must be broken on 8 octet boundaries. モアフラグメントフラグビット(MF)は、データグラムが最終フラグメントではない場合にセットされる。フラグメントオフセットフィールドは、フラグメント化される前のデータグラムの先頭からの相対位置を表す。フラグメントは 8 オクテット単位で計算される。フラグメント化の方針は、フラグメント化されないデータグラムがフラグメント情報にすべてゼロ(MF = 0、フラグメントオフセット = 0)を持つように設計されている。インターネットデータグラムがフラグメント化される場合、そのデータ部分は 8 オクテット境界で分割されなければならない。
This format allows 2**13 = 8192 fragments of 8 octets each for a total of 65,536 octets. Note that this is consistent with the the datagram total length field (of course, the header is counted in the total length and not in the fragments). このフォーマットにより、各 8 オクテットで 2**13 = 8192 個のフラグメント、計 65,536 オクテットが可能である。これはデータグラムの全長フィールドと一致していることに注意してほしい(当然ながらヘッダはフラグメントではカウントされず、全長ではカウントされる)。
When fragmentation occurs, some options are copied, but others remain with the first fragment only. フラグメント化が起こるとき、各フラグメントにコピーされるオプションと、先頭のフラグメントだけに残されるオプションとがある。
Every internet module must be able to forward a datagram of 68 octets without further fragmentation. This is because an internet header may be up to 60 octets, and the minimum fragment is 8 octets. すべてのインターネットモジュールは、68 オクテットのデータグラムをフラグメント化せずに送信できなければならない。これはインターネットヘッダが最長 60 バイトであり、最小のフラグメントが 8 オクテットであるためである。
Every internet destination must be able to receive a datagram of 576 octets either in one piece or in fragments to be reassembled. すべてのインターネット受信者は 576 オクテットのデータグラムをひとかたまりとして、または再構築されるべき複数のフラグメントとして受信できなければならない。
The fields which may be affected by fragmentation include: フラグメント化に影響される可能性のあるフィールド:
If the Don't Fragment flag (DF) bit is set, then internet fragmentation of this datagram is NOT permitted, although it may be discarded. This can be used to prohibit fragmentation in cases where the receiving host does not have sufficient resources to reassemble internet fragments. ドントフラグメント(Don't Fragment)(DF) ビットがセットされている場合、そのデータグラムのフラグメント化は、たとえ破棄される可能性がある場合でも許可されない(NOT)。これは、受信ホストがフラグメントを再構築するのに十分なリソースを持っていない場合に、フラグメント化を禁止する目的で使用することができる。
One example of use of the Don't Fragment feature is to down line load a small host. A small host could have a boot strap program that accepts a datagram stores it in memory and then executes it. ドントフラグメント機能の使用例のひとつは、小規模ホストの回線負荷を下げることである。小規模ホストは、データグラムを受け入れてメモリに保存し、それを実行するブートストラッププログラムを持つ場合がある。
The fragmentation and reassembly procedures are most easily described by examples. The following procedures are example implementations. フラグメント化と再構築との手続きは、例示によってもっとも容易に説明される。以下の手続きは実装例である。
General notation in the following pseudo programs: "=<" means "less than or equal", "#" means "not equal", "=" means "equal", "<-" means "is set to". Also, "x to y" includes x and excludes y; for example, "4 to 7" would include 4, 5, and 6 (but not 7). 以下の擬似プログラム中の一般表記:
"=<" は "以下(less than or equal)" を表す。
"#" は "等しくない(not equal)" を表す。
"=" は "等しい(equal)" を表す。
"<-" は "をセットされる(is set to)" を表す。
また、"x から y まで(x to y)" は x を含むが y を含まない。例えば "4 から 7 まで" には 4、5、6 が含まれる(7 は含まれない)。
(訳注:最後の「x to y」は「x から y(to)まで」と記述しています。)
An Example Fragmentation Procedure フラグメント化手続きの例
The maximum sized datagram that can be transmitted through the next network is called the maximum transmission unit (MTU). 次のネットワーク上を送信可能な最大サイズのデータグラムを、最大転送単位(MTU)と呼ぶ。
If the total length is less than or equal the maximum transmission unit then submit this datagram to the next step in datagram processing; otherwise cut the datagram into two fragments, the first fragment being the maximum size, and the second fragment being the rest of the datagram. The first fragment is submitted to the next step in datagram processing, while the second fragment is submitted to this procedure in case it is still too large. 全長がこの MTU 以下であれば、そのデータグラムはデータグラム処理の次のステップに投入される。そうでなければ、二つのフラグメントに分割され、先頭のフラグメントは最大サイズになり、二番目のフラグメントはデータグラムの残りのサイズとなる。先頭のフラグメントはデータグラム処理の次のステップへと投入される一方で、二番目のフラグメントは、まだ長すぎるのであれば再びこの手続きに投入される。
Notation: 表記:
        FO    -  Fragment Offset
        IHL   -  Internet Header Length
        DF    -  Don't Fragment flag
        MF    -  More Fragments flag
        TL    -  Total Length
        OFO   -  Old Fragment Offset
        OIHL  -  Old Internet Header Length
        OMF   -  Old More Fragments flag
        OTL   -  Old Total Length
        NFB   -  Number of Fragment Blocks
        MTU   -  Maximum Transmission Unit
      
        FO    -  フラグメントオフセット(Fragment Offset)
        IHL   -  インターネットヘッダ長
                 (Internet Header Length)
        DF    -  ドントフラグメントフラグ
                 (Don't Fragment flag)
        MF    -  モアフラグメントフラグ(More Fragments flag)
        TL    -  全長(Total Length)
        OFO   -  元のフラグメントオフセット
                 (Old Fragment Offset)
        OIHL  -  元のインターネットヘッダ長
                 (Old Internet Header Length)
        OMF   -  元のモアフラグメントフラグ
                 (Old More Fragments flag)
        OTL   -  元の全長(Old Total Length)
        NFB   -  フラグメントブロック数
                 (Number of Fragment Blocks)
        MTU   -  最大転送単位(Maximum Transmission Unit)
      
Procedure: 手続き:
        IF TL =< MTU THEN Submit this datagram to the next step
             in datagram processing ELSE IF DF = 1 THEN discard the
        datagram ELSE
        To produce the first fragment:
        (1)  Copy the original internet header;
        (2)  OIHL <- IHL; OTL <- TL; OFO <- FO; OMF <- MF;
        (3)  NFB <- (MTU-IHL*4)/8;
        (4)  Attach the first NFB*8 data octets;
        (5)  Correct the header:
             MF <- 1;  TL <- (IHL*4)+(NFB*8);
             Recompute Checksum;
        (6)  Submit this fragment to the next step in
             datagram processing;
        To produce the second fragment:
        (7)  Selectively copy the internet header (some options
             are not copied, see option definitions);
        (8)  Append the remaining data;
        (9)  Correct the header:
             IHL <- (((OIHL*4)-(length of options not copied))+3)/4;
             TL <- OTL - NFB*8 - (OIHL-IHL)*4);
             FO <- OFO + NFB;  MF <- OMF;  Recompute Checksum;
        (10) Submit this fragment to the fragmentation test; DONE.
      
        IF TL =< MTU THEN このデータグラムをデータグラム
             処理の次のステップに投入する ELSE IF DF = 1 THEN
               そのデータグラムを破棄する ELSE
        最初のフラグメントを生成する:
        (1)  元のインターネットヘッダをコピーする;
        (2)  OIHL <- IHL; OTL <- TL; OFO <- FO; OMF <- MF;
        (3)  NFB <- (MTU-IHL*4)/8;
        (4)  最初の NFB*8 オクテットをはめ込む;
        (5)  ヘッダを訂正する:
             MF <- 1;  TL <- (IHL*4)+(NFB*8);
             チェックサムを再計算する;
        (6)  このフラグメントをデータグラム処理の次の
             ステップに投入する;
        二番目のフラグメントを生成する:
        (7)  インターネットヘッダを選択的にコピーする
             (一部のオプションはコピーされない。
              オプション定義を参照);
        (8)  残りのデータを追加する;
        (9)  ヘッダを訂正する:
             IHL <- (((OIHL*4)-(コピーされないオプション
               の長さ))+3)/4;
             TL <- OTL - NFB*8 - (OIHL-IHL)*4);
             FO <- OFO + NFB;  MF <- OMF; チェックサムを
             再計算する;
        (10) このフラグメントをフラグメントテストに投入する;
             DONE.
      
In the above procedure each fragment (except the last) was made the maximum allowable size. An alternative might produce less than the maximum size datagrams. For example, one could implement a fragmentation procedure that repeatly divided large datagrams in half until the resulting fragments were less than the maximum transmission unit size. 上記の手続きでは、(最終フラグメントを除く)各フラグメントは許される最大サイズを取る。代替の手続きでは最大サイズ未満のデータグラムを生成してもよい。例えば、大きなデータグラムを最大転送ユニットサイズ未満になるまで繰り返し半分に分割していくフラグメント化手続きを実装することもできる。
An Example Reassembly Procedure 再構築手続きの例
For each datagram the buffer identifier is computed as the concatenation of the source, destination, protocol, and identification fields. If this is a whole datagram (that is both the fragment offset and the more fragments fields are zero), then any reassembly resources associated with this buffer identifier are released and the datagram is forwarded to the next step in datagram processing. 各データグラムごとのバッファ識別子は、送信元・宛先・プロトコル・識別フィールドの連結として算出される。これがデータグラム全体(つまりフラグメントオフセットとモアフラグメントフィールドとが共にゼロ)の場合、このバッファ識別子に関連するすべての再構築リソースは開放され、データグラムはデータグラム処理の次のステップに送られる。
If no other fragment with this buffer identifier is on hand then reassembly resources are allocated. The reassembly resources consist of a data buffer, a header buffer, a fragment block bit table, a total data length field, and a timer. The data from the fragment is placed in the data buffer according to its fragment offset and length, and bits are set in the fragment block bit table corresponding to the fragment blocks received. このバッファ識別子を持つ他のフラグメントが手元に無い場合、再構築リソースが割り当てられる。再構築リソースは、データバッファ、ヘッダバッファ、フラグメントブロックビットテーブル、データ全長フィールド、タイマーから構成される。フラグメントからのデータはそのフラグメントのオフセットとレングスとに従ってデータバッファに置かれ、フラグメントブロックビットテーブル内の受信したフラグメントブロックに対応するビットがセットされる。
If this is the first fragment (that is the fragment offset is zero) this header is placed in the header buffer. If this is the last fragment ( that is the more fragments field is zero) the total data length is computed. If this fragment completes the datagram (tested by checking the bits set in the fragment block table), then the datagram is sent to the next step in datagram processing; otherwise the timer is set to the maximum of the current timer value and the value of the time to live field from this fragment; and the reassembly routine gives up control. これが先頭のフラグメント(つまりフラグメントオフセットがゼロ)の場合、そのヘッダはヘッダバッファに置かれる。これが最終フラグメント(つまりモアフラグメントフィールドがゼロ)の場合、データ全長が計算される。このフラグメントがデータグラムを完成させる場合(フラグメントブロックテーブルにセットされたビットを確認することで検証される)、そのデータグラムはデータグラム処理の次のステップに送られる。そうでなければ、タイマーは現在のタイマーとそのフラグメントの有効期間フィールドの値との最大値にセットされ、再構築ルーチンは制御を中断する。
f the timer runs out, the all reassembly resources for this buffer identifier are released. The initial setting of the timer is a lower bound on the reassembly waiting time. This is because the waiting time will be increased if the Time to Live in the arriving fragment is greater than the current timer value but will not be decreased if it is less. The maximum this timer value could reach is the maximum time to live (approximately 4.25 minutes). The current recommendation for the initial timer setting is 15 seconds. This may be changed as experience with this protocol accumulates. Note that the choice of this parameter value is related to the buffer capacity available and the data rate of the transmission medium; that is, data rate times timer value equals buffer size (e.g., 10Kb/s X 15s = 150Kb). タイマーの期限が切れた場合、このバッファ識別子のための再構築リソースはすべて解放される。タイマーの初期値は再構築待機時間の下限値である。これは、到着したフラグメントの TTL が現在のタイマー値より大きい場合には待機時間が増やされるが、小さい場合には減らされるためである。このタイマーの到達できる最大値は最大の TTL である(およそ 4.25 分)。現在のタイマーの初期値の推奨は 15 秒である。この値はこのプロトコルの経験が積まれることで変更されてもよい。このパラメータ値の選択は、バッファの許容量と通信媒体のデータ転送速度とに関係する(つまり、データ転送速度 × タイマー値 = バッファサイズ(10k/s X 15s = 150kb))。
Notation: 表記法:
        FO    -  Fragment Offset
        IHL   -  Internet Header Length
        MF    -  More Fragments flag
        TTL   -  Time To Live
        NFB   -  Number of Fragment Blocks
        TL    -  Total Length
        TDL   -  Total Data Length
        BUFID -  Buffer Identifier
        RCVBT -  Fragment Received Bit Table
        TLB   -  Timer Lower Bound
      
        FO    -  フラグメントオフセット(Fragment Offset)
        IHL   -  インターネットヘッダ長
                 (Internet Header Length)
        MF    -  モアフラグメントフラグ(More Fragments flag)
        TTL   -  有効期間(Time To Live)
        NFB   -  フラグメントブロック数
                 (Number of Fragment Blocks)
        TL    -  全長(Total Length)
        TDL   -  データ全長(Total Data Length)
        BUFID -  バッファ識別子(Buffer Identifier)
        RCVBT -  フラグメント受信ビットテーブル
                 (Fragment Received Bit Table)
        TLB   -  タイマー下限値(Timer Lower Bound)
      
Procedure: 手続き:
        (1)  BUFID <- 
                  source|destination|protocol|identification;
        (2)  IF FO = 0 AND MF = 0
        (3)     THEN IF buffer with BUFID is allocated
        (4)             THEN flush all reassembly for this BUFID;
        (5)          Submit datagram to next step; DONE.
        (6)     ELSE IF no buffer with BUFID is allocated
        (7)             THEN allocate reassembly resources
                             with BUFID;
                             TIMER <- TLB; TDL <- 0;
        (8)          put data from fragment into data buffer with
                     BUFID from octet FO*8 to
                                         octet (TL-(IHL*4))+FO*8;
        (9)          set RCVBT bits from FO
                                        to FO+((TL-(IHL*4)+7)/8);
        (10)         IF MF = 0 THEN TDL <- TL-(IHL*4)+(FO*8)
        (11)         IF FO = 0 THEN put header in header buffer
        (12)         IF TDL # 0
        (13)          AND all RCVBT bits from 0
                                             to (TDL+7)/8 are set
        (14)            THEN TL <- TDL+(IHL*4)
        (15)                 Submit datagram to next step;
        (16)                 free all reassembly resources
                             for this BUFID; DONE.
        (17)         TIMER <- MAX(TIMER,TTL);
        (18)         give up until next fragment or timer expires;
        (19) timer expires: flush all reassembly with this BUFID; DONE.
      
        (1)  BUFID <- source|destination|protocol|identification;
        (2)  IF FO = 0 AND MF = 0
        (3)     THEN IF BUFID のバッファが割り当て済み
        (4)             THEN この BUFID のためのすべての
                             再構築を消去する;
        (5)          データグラムを次のステップに投入する;
                     DONE.
        (6)     ELSE IF BUFID のバッファが割り当てられていない
        (7)             THEN BUFID の再構築リソースを割り当てる;
                             TIMER <- TLB; TDL <- 0;
        (8)          フラグメントのデータを、BUFID の
                     データバッファのオクテット FO*8 から
                     オクテット (TL-(IHL*4))+FO*8 まで(to)置く;
        (9)          RCVBT ビットを FO から FO+((TL-(IHL*4)+7)/8
                     まで(to)セットする;
        (10)         IF MF = 0 THEN TDL <- TL-(IHL*4)+(FO*8)
        (11)         IF FO = 0 THEN ヘッダをヘッダバッファに置く
        (12)         IF TDL # 0
        (13)          AND 0 から (TDL+7)/8 まで(to)の全 RCVBT 
                          ビットがセットされている
        (14)            THEN TL <- TDL+(IHL*4)
        (15)                 データグラムを次のステップに
                             投入する;
        (16)                 この BUFID のための再構築リソースを
                             全て開放する; DONE.
        (17)         TIMER <- MAX(TIMER,TTL);
        (18)         次のフラグメントまたはタイマーの期限切れ
                     まで中断する;
        (19) タイマーの期限切れ:この BUFID のすべての
             再構築を消去する; DONE.
      
In the case that two or more fragments contain the same data either identically or through a partial overlap, this procedure will use the more recently arrived copy in the data buffer and datagram delivered. 二つ以上のフラグメントが全体または一部重複した同じデータを含む場合、この手続きはデータバッファと配送されたデータグラムとのうち、より最近到着したコピーを使用する。
Identification 識別
The choice of the Identifier for a datagram is based on the need to provide a way to uniquely identify the fragments of a particular datagram. The protocol module assembling fragments judges fragments to belong to the same datagram if they have the same source, destination, protocol, and Identifier. Thus, the sender must choose the Identifier to be unique for this source, destination pair and protocol for the time the datagram (or any fragment of it) could be alive in the internet. データグラムのための識別子の選択は、特定のデータグラムのフラグメントを一意に識別する方法を提供する必要性に基づいている。複数のフラグメントが同じ送信元・宛先・プロトコル・識別子を持つ場合、プロトコルモジュールはそれらのフラグメントが同じデータグラムに属すると判断する。したがって送信者は、あるデータグラム(またはそのフラグメント)がインターネット上で有効な間に、その送信元・宛先の組とプロトコルとに対して一意な識別子を選択しなければならない。
It seems then that a sending protocol module needs to keep a table of Identifiers, one entry for each destination it has communicated with in the last maximum packet lifetime for the internet. 送信側プロトコルモジュールは、識別子のテーブル(インターネットのためのそのパケットの最大ライフタイム内で、それが通信する各宛先ごとにひとつのエントリ)を保持する必要があるだろう。
However, since the Identifier field allows 65,536 different values, some host may be able to simply use unique identifiers independent of destination. しかしながら識別子フィールドは 65,536 の異なる値を取れるため、ホストによっては宛先に依存しない一意の識別子を単純に利用することができるだろう。
It is appropriate for some higher level protocols to choose the identifier. For example, TCP protocol modules may retransmit an identical TCP segment, and the probability for correct reception would be enhanced if the retransmission carried the same identifier as the original transmission since fragments of either datagram could be used to construct a correct TCP segment. 何らかの上位レベルプロトコルが識別子を選択するのが適切である。例えば TCP モジュールは同じ TCP セグメントを再送信してもよく、もし再送信で元の送信と同じ識別子が運ばれれば、どちらのデータグラムのフラグメントも正しい TCP セグメントを構築するために使用できるので、訂正を受け取る可能性が高められる。
Type of Service サービス種別
The type of service (TOS) is for internet service quality selection. The type of service is specified along the abstract parameters precedence, delay, throughput, and reliability. These abstract parameters are to be mapped into the actual service parameters of the particular networks the datagram traverses. サービス種別(TOS)はインターネットサービス品質の選択のためのものである。サービス種別は、抽象パラメータの優先順位(precedence)・遅延(delay)・スループット(throughput)・信頼性(reliability)にしたがって指定される。これらの抽象パラメータは、データグラムが通過する特定のネットワークの実際のサービスパラメータにマップされる。
Precedence. An independent measure of the importance of this datagram. 優先順位(Precedence)。このデータグラムの重要度の独立した基準。
Delay. Prompt delivery is important for datagrams with this indication. 遅延(Delay)。この指定を持つデータグラムには迅速な配送が重要である。
Throughput. High data rate is important for datagrams with this indication. スループット(Throughput)。この指定を持つデータグラムには高速のデータ転送速度が重要である。
Reliability. A higher level of effort to ensure delivery is important for datagrams with this indication. 信頼性(Reliability)。この指定を持つデータグラムには高水準の配送保証が重要である。
For example, the ARPANET has a priority bit, and a choice between "standard" messages (type 0) and "uncontrolled" messages (type 3), (the choice between single packet and multipacket messages can also be considered a service parameter). The uncontrolled messages tend to be less reliably delivered and suffer less delay. Suppose an internet datagram is to be sent through the ARPANET. Let the internet type of service be given as: 例えば ARPANET は優先順位ビットと、"standard" メッセージ(タイプ 0)および "uncontrolled" メッセージ(タイプ 3)の間の選択権とを持つ(シングルパケットメッセージとマルチパケットメッセージとの間の選択もサービスパラメータと考えることができる)。uncontrolled メッセージは、信頼性がより低く、遅延がより大きくなる傾向がある。インターネットデータグラムが ARPANET を通して送信されると仮定する。そのインターネットサービス種別を次のように与える:
      Precedence:    5
      Delay:         0
      Throughput:    1
      Reliability:   1
  
      優先順位(Precedence):      5
      遅延(Delay):               0
      スループット(Throughput):  1
      信頼性(Reliability):       1
  
In this example, the mapping of these parameters to those available for the ARPANET would be to set the ARPANET priority bit on since the Internet precedence is in the upper half of its range, to select standard messages since the throughput and reliability requirements are indicated and delay is not. More details are given on service mappings in "Service Mappings" [8]. この例おいてこれらのパラメータから APRANET で有効なパラメータへのマッピングは、インターネット優先順位がその範囲の上半分であるため ARPANET 優先順位ビットをオンにセットすることになり、スループットおよび信頼性の要求が指定され遅延が指定されていないため標準メッセージを選択することになるだろう。詳細は "Service Mappings" [8] におけるサービスマッピングに示されている。
Time to Live 有効期間(Time to Live)
The time to live is set by the sender to the maximum time the datagram is allowed to be in the internet system. If the datagram is in the internet system longer than the time to live, then the datagram must be destroyed. 有効期間は送信者によって、そのデータグラムがインターネットシステム内に存在することを許される最大時間にセットされる。データグラムがこの有効期間を超えてインターネットシステムに存在した場合、そのデータグラムは破棄されなければならない。
This field must be decreased at each point that the internet header is processed to reflect the time spent processing the datagram. Even if no local information is available on the time actually spent, the field must be decremented by 1. The time is measured in units of seconds (i.e. the value 1 means one second). Thus, the maximum time to live is 255 seconds or 4.25 minutes. Since every module that processes a datagram must decrease the TTL by at least one even if it process the datagram in less than a second, the TTL must be thought of only as an upper bound on the time a datagram may exist. The intention is to cause undeliverable datagrams to be discarded, and to bound the maximum datagram lifetime. データグラムの処理に費やされた時間を反映するために、このフィールドはインターネットヘッダが処理される場所ごとに減らされる。実際に費やされた時間に付いてのローカル情報が利用できない場合、このフィールドは 1 だけ減らされなければならない。この時間は秒単位で計測される(例えば値 1 は 1 秒を意味する)。したがって最大の有効期間は 255 秒、つまり 4.25 分となる。たとえデータグラムの処理を 1 秒未満で終えたとしても、データグラムを処理するすべてのモジュールは TTL を少なくとも 1 減らさなければならないため、TTL はデータグラムが存在する可能性のある時間の上限にすぎないと考えなければならない。この目的は、配送不能なデータグラムを破棄させ、データグラムの寿命を制限することである。
Some higher level reliable connection protocols are based on assumptions that old duplicate datagrams will not arrive after a certain time elapses. The TTL is a way for such protocols to have an assurance that their assumption is met. 一部の上位レベルの信頼できる接続プロトコルは、古い重複したデータグラムが一定時間経過するまで到着しないという仮定に基づいている。TTL はそのようなプロトコルにその仮定が成立することを保障するための手段である。
Options オプション(Options)
The options are optional in each datagram, but required in implementations. That is, the presence or absence of an option is the choice of the sender, but each internet module must be able to parse every option. There can be several options present in the option field. オプションは各データグラムにおいて任意であるが、実装は必須である。つまりオプションの有無は送信者の選択であるが、各インターネットモジュールは全てのオプションを解析できなければならないということである。オプションフィールドには複数のオプションが現れてよい。
The options might not end on a 32-bit boundary. The internet header must be filled out with octets of zeros. The first of these would be interpreted as the end-of-options option, and the remainder as internet header padding. オプションは 32 ビット境界で終了しない可能性がある。インターネットヘッダの空き部分はオクテット 0 で埋められなければならない。それらの先頭は end-of-options オプションとして解釈され、その残りはインターネットヘッダのパディングとして解釈される。
Every internet module must be able to act on every option. The Security Option is required if classified, restricted, or compartmented traffic is to be passed. すべてのインターネットモジュールは、すべてのオプションに基づいて動作可能でなければならない。機密扱いまたは制限された、または区画されたトラフィックを通過させる場合、Security Option が必要である。
Checksum チェックサム(Checksum)
The internet header checksum is recomputed if the internet header is changed. For example, a reduction of the time to live, additions or changes to internet options, or due to fragmentation. This checksum at the internet level is intended to protect the internet header fields from transmission errors. インターネットヘッダが変更されると、インターネットヘッダチェックサムは再計算される。変更は例えば TTL の減少や、インターネットオプションの追加や変更、フラグメント化により行われる。このインターネットレベルのチェックサムは、インターネットヘッダフィールドの転送エラーを防ぐことを目的としている。
There are some applications where a few data bit errors are acceptable while retransmission delays are not. If the internet protocol enforced data correctness such applications could not be supported. アプリケーションによっては、多少のビットエラーは受け入れられるが、再送遅延は受け入れられない場合がある。インターネットプロトコルに正確性が強制された場合、このようなアプリケーションはサポートされないだろう。
Errors エラー(Errors)
Internet protocol errors may be reported via the ICMP messages [3]. インターネットプロトコルのエラーは ICMP メッセージ [3] によって報告されてよい。

3.3. Interfaces 3.3. インターフェイス

The functional description of user interfaces to the IP is, at best, fictional, since every operating system will have different facilities. Consequently, we must warn readers that different IP implementations may have different user interfaces. However, all IPs must provide a certain minimum set of services to guarantee that all IP implementations can support the same protocol hierarchy. This section specifies the functional interfaces required of all IP implementations. あらゆるオペレーティングシステムがさまざまな機能を持つため、IP に対するユーザーインターフェイスの機能的な説明は、よく言って作り話である。そのため私たちは読者に、異なる IP 実装は異なるユーザーインターフェイスを持つ可能性があることを警告しなければならない。しかしながら、すべての IP 実装が同じプロトコル階層をサポートできることを保証するために、すべての IP は最低限のサービス一式を提供しなければならない。このセクションは、すべての IP 実装に必須の機能インターフェイスを規定する。

Internet protocol interfaces on one side to the local network and on the other side to either a higher level protocol or an application program. In the following, the higher level protocol or application program (or even a gateway program) will be called the "user" since it is using the internet module. Since internet protocol is a datagram protocol, there is minimal memory or state maintained between datagram transmissions, and each call on the internet protocol module by the user supplies all information necessary for the IP to perform the service requested. インターネットプロトコルは、ローカルネットワーク側の一方と、上位レベルのプロトコルまたはアプリケーションプログラム側のもう一方とを接続する。上位レベルのプログラムまたはアプリケーションプログラム(またはたとえゲートウェイプログラムでも)はインターネットモジュールを使用(use)するため、以降それらを "ユーザー(user)" と呼ぶ。インターネットプロトコルはデータグラムプロトコルであり、データグラム転送の間に保持されるメモリと状態とは最小限であるため、ユーザーによるインターネットプロトコルモジュールの各呼び出しは、要求されたサービスを実行するのに IP が必要とするすべての情報を提供する。

An Example Upper Level Interface 上位レベルインターフェイスの例

The following two example calls satisfy the requirements for the user to internet protocol module communication ("=>" means returns): 以下の二つの呼び出しの例は、インターネットプロトコルモジュールの通信に対するユーザー要件を満たしている("=>" は戻りを意味する):

  SEND (src, dst, prot, TOS, TTL, BufPTR, len, Id, DF, opt => result)

where: ここで:

      src = source address
      dst = destination address
      prot = protocol
      TOS = type of service
      TTL = time to live
      BufPTR = buffer pointer
      len = length of buffer
      Id  = Identifier
      DF = Don't Fragment
      opt = option data
      result = response
        OK = datagram sent ok
        Error = error in arguments or local network error
      src = 送信元アドレス
      dst = 宛先アドレス
      prot = プロトコル
      TOS = サービス種別
      TTL = 有効期間
      BufPTR = バッファポインタ
      len = バッファ長
      Id  = 識別子
      DF = ドントフラグメント
      opt = オプション情報
      result = 応答
        OK = データグラム送信完了
        Error = 引数エラー、またはローカルネットワークエラー

Note that the precedence is included in the TOS and the security/compartment is passed as an option. 優先順位は TOS の中に含まれ、セキュリティ/区分はオプションとして渡されることに注意してほしい。

  RECV (BufPTR, prot, => result, src, dst, TOS, len, opt)

where: ここで:

      BufPTR = buffer pointer
      prot = protocol
      result = response
        OK = datagram received ok
        Error = error in arguments
      len = length of buffer
      src = source address
      dst = destination address
      TOS = type of service
      opt = option data
      BufPTR = バッファポインタ
      prot = プロトコル
      result = 応答
        OK = データグラム受信完了
        Error = 引数エラー
      len = バッファ長
      src = 送信元アドレス
      dst = 宛先アドレス
      TOS = サービス種別
      opt = オプション情報

When the user sends a datagram, it executes the SEND call supplying all the arguments. The internet protocol module, on receiving this call, checks the arguments and prepares and sends the message. If the arguments are good and the datagram is accepted by the local network, the call returns successfully. If either the arguments are bad, or the datagram is not accepted by the local network, the call returns unsuccessfully. On unsuccessful returns, a reasonable report must be made as to the cause of the problem, but the details of such reports are up to individual implementations. ユーザーがデータグラムを送信するとき、すべての引数を提供する SEND 呼び出しを実行する。その呼び出しを受けてインターネットプロトコルモジュールは引数を確認し、メッセージを準備し、送信する。引数が正しく、かつデータグラムがローカルネットワークに受け入れられた場合、その呼び出しは成功を返す。引数が不正、またはデータグラムがローカルネットワークに受け入れられなかった場合、その呼び出しはし失敗を返す。失敗が返される場合、問題の原因についての適切な報告が行われなければならないが、その報告の詳細は個々の実装次第である。

When a datagram arrives at the internet protocol module from the local network, either there is a pending RECV call from the user addressed or there is not. In the first case, the pending call is satisfied by passing the information from the datagram to the user. In the second case, the user addressed is notified of a pending datagram. If the user addressed does not exist, an ICMP error message is returned to the sender, and the data is discarded. ローカルネットワークからインターネットプロトコルモジュールにデータグラムが到着したとき、送信先のユーザーからの未解決の RECV 呼び出しが存在するか存在しないか、どちらかとなる。前者の場合、その未解決の呼び出しはその情報がデータグラムからユーザーに渡されることで解決される。後者の場合、送信先のユーザーは未解決のデータグラムを通知される。送信先のユーザーが存在しない場合、送信元に ICMP エラーメッセージが返され、データは破棄される。

The notification of a user may be via a pseudo interrupt or similar mechanism, as appropriate in the particular operating system environment of the implementation. ユーザーへの通知は、その実装の個々のオペレーティングシステム環境に応じて、擬似割り込みまたはそれに似たメカニズムであってもよい。

A user's RECV call may then either be immediately satisfied by a pending datagram, or the call may be pending until a datagram arrives. その後ユーザーの RECV 呼び出しは、未解決のデータグラムによって即座に解決されるか、データグラムの到着まで保留されてよい。

The source address is included in the send call in case the sending host has several addresses (multiple physical connections or logical addresses). The internet module must check to see that the source address is one of the legal address for this host. 送信側ホストが複数のアドレスを持つ(複数の物理接続または論理接続を持つ)場合、送信呼び出しに送信元アドレスが含まれる。インターネットモジュールは、その送信元アドレスがそのホストの有効なアドレスのひとつであることを確認しなければならない。

An implementation may also allow or require a call to the internet module to indicate interest in or reserve exclusive use of a class of datagrams (e.g., all those with a certain value in the protocol field). また実装は、あるクラスのデータグラム(例えばプロトコルフィールド内にある特定の値を持つすべてのデータグラム)の排他的使用に興味があること、またはそれを予約することを示すために、インターネットモジュールの呼び出しを許可、または必要としてよい。

This section functionally characterizes a USER/IP interface. The notation used is similar to most procedure of function calls in high level languages, but this usage is not meant to rule out trap type service calls (e.g., SVCs, UUOs, EMTs), or any other form of interprocess communication. このセクションは USER/IP インターフェイスの機能的特性を明らかにする。使用される表記法は高水準言語における関数呼び出しの手順に似ているが、この使用法はトラップ型のサービスコール(例えば SVC・UUO・EMT)、または他の形式のプロセス間通信を除外することを意図したものではない。

APPENDIX A: Examples & Scenarios 付録 A:例とシナリオ

Example 1: 例 1:

This is an example of the minimal data carrying internet datagram: これはインターネットデータグラムを運ぶ最小限のデータの例である。

    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 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Ver= 4 |IHL= 5 |Type of Service|        Total Length = 21      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      Identification = 111     |Flg=0|   Fragment Offset = 0   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Time = 123  |  Protocol = 1 |        header checksum        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         source address                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      destination address                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     data      |                                                
   +-+-+-+-+-+-+-+-+                                                

                       Example Internet Datagram

                               Figure 5.
    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 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Ver= 4 |IHL= 5 | サービス種別  |            全長 = 21          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          識別子 = 111         |Flg=0|フラグメントオフセット=0 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   時間 = 123  |プロトコル = 1 |      ヘッダチェックサム       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         送信元アドレス                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          宛先アドレス                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    データ     |                                                
   +-+-+-+-+-+-+-+-+                                                

                     インターネットデータグラムの例

                                 図 5.

Note that each tick mark represents one bit position. 各目盛りが 1 ビットを表していることに注意してほしい。

his is a internet datagram in version 4 of internet protocol; the internet header consists of five 32 bit words, and the total length of the datagram is 21 octets. This datagram is a complete datagram (not a fragment). これは IPv4 のインターネットデータグラムであり、インターネットヘッダは 32 ビットワードの 5 ワードから成り、データグラムの全長は 21 オクテットである。このデータグラムは完結したデータグラムである(つまりフラグメントではない)。

Example 2: 例 2:

In this example, we show first a moderate size internet datagram (452 data octets), then two internet fragments that might result from the fragmentation of this datagram if the maximum sized transmission allowed were 280 octets. この例において私たちは、最初に中程度のサイズのインターネットデータグラム(452 データオクテット)を示す。次に、許可される最大転送サイズが 280 オクテットの場合に、そのデータオクテットのフラグメント化から生じるであろう二つのインターネットフラグメントを示す。

    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 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Ver= 4 |IHL= 5 |Type of Service|       Total Length = 472      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Identification = 111      |Flg=0|     Fragment Offset = 0 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Time = 123  | Protocol = 6  |        header checksum        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         source address                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      destination address                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             data                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             data                              |
   \                                                               \
   \                                                               \
   |                             data                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             data              |                                
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                                

                       Example Internet Datagram

                               Figure 6.
    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 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Ver= 4 |IHL= 5 | サービス種別  |            全長 = 472         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         識別子 = 111          |Flg=0|フラグメントオフセット=0 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   時間 = 123  |プロトコル = 6 |      ヘッダチェックサム       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         送信元アドレス                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          宛先アドレス                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            データ                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            データ                             |
   /                                                               /
   /                                                               /
   |                            データ                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            データ             |                                
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                                

                     インターネットデータグラムの例

                                 図 6.

Now the first fragment that results from splitting the datagram after 256 data octets. 次にこのデータグラムを 256 データオクテットで分割して生じるひとつ目のフラグメントを示す。

    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 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Ver= 4 |IHL= 5 |Type of Service|       Total Length = 276      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Identification = 111      |Flg=1|     Fragment Offset = 0 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Time = 119  | Protocol = 6  |        Header Checksum        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         source address                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      destination address                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             data                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             data                              |
   \                                                               \
   \                                                               \
   |                             data                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             data                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Example Internet Fragment

                               Figure 7.
    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 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Ver= 4 |IHL= 5 | サービス種別  |            全長 = 276         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          識別子 = 111         |Flg=1|フラグメントオフセット=0 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   時間 = 119  |プロトコル = 6 |      ヘッダチェックサム       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         送信元アドレス                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          宛先アドレス                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            データ                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            データ                             |
   /                                                               /
   /                                                               /
   |                            データ                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            データ                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     インターネットフラグメントの例

                                 図 7.

And the second fragment. 次に二番目のフラグメントを示す。

    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 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Ver= 4 |IHL= 5 |Type of Service|       Total Length = 216      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Identification = 111      |Flg=0|  Fragment Offset  =  32 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Time = 119  | Protocol = 6  |        Header Checksum        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         source address                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      destination address                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             data                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             data                              |
   \                                                               \
   \                                                               \
   |                             data                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |            data               |                                
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                                

                       Example Internet Fragment

                               Figure 8.
    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 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Ver= 4 |IHL= 5 | サービス種別  |            全長 = 216         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          識別子 = 111         |Flg=0|フラグメントオフセット=32|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   時間 = 119  |プロトコル = 6 |      ヘッダチェックサム       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         送信元アドレス                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          宛先アドレス                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            データ                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            データ                             |
   /                                                               /
   /                                                               /
   |                            データ                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           データ              |                                
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                                

                     インターネットフラグメントの例

                                 図 8.

Example 3: 例 3:

Here, we show an example of a datagram containing options: オプションを含むデータグラムの例を示す:

    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 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Ver= 4 |IHL= 8 |Type of Service|       Total Length = 576      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       Identification = 111    |Flg=0|     Fragment Offset = 0 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Time = 123  |  Protocol = 6 |       Header Checksum         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        source address                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      destination address                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Opt. Code = x | Opt.  Len.= 3 | option value  | Opt. Code = x |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Opt. Len. = 4 |           option value        | Opt. Code = 1 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Opt. Code = y | Opt. Len. = 3 |  option value | Opt. Code = 0 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             data                              |
   \                                                               \
   \                                                               \
   |                             data                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             data                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Example Internet Datagram

                               Figure 9.
    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 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Ver= 4 |IHL= 8 | サービス種別  |            全長 = 576         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          識別子 = 111         |Flg=0|フラグメントオフセット=0 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   時間 = 123  |プロトコル = 6 |      ヘッダチェックサム       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        送信元アドレス                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         宛先アドレス                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Opt. Code = x | Opt.  Len.= 3 | オプション値  | Opt. Code = x |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Opt. Len. = 4 |           オプション値        | Opt. Code = 1 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | Opt. Code = y | Opt. Len. = 3 |  オプション値 | Opt. Code = 0 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            データ                             |
   /                                                               /
   /                                                               /
   |                            データ                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            データ                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     インターネットデータグラムの例

                                 図 9.

APPENDIX B: Data Transmission Order 付録 B: データ転送順序

The order of transmission of the header and data described in this document is resolved to the octet level. Whenever a diagram shows a group of octets, the order of transmission of those octets is the normal order in which they are read in English. For example, in the following diagram the octets are transmitted in the order they are numbered. この文書で説明されているヘッダとデータとの転送順序は、オクテットレベルまで決定される。データグラムがオクテットの組を表すとき、それらのオクテットの転送順序は常に通常英語で読まれる場合の順序となる。例えば以下のデータグラムにおいて、各オクテットは番号付けされた順序で転送される。

    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 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       1       |       2       |       3       |       4       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       5       |       6       |       7       |       8       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       9       |      10       |      11       |      12       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Transmission Order of Bytes

                               Figure 10.
    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 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       1       |       2       |       3       |       4       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       5       |       6       |       7       |       8       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       9       |      10       |      11       |      12       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                            バイトの転送順序

                                 図 10.

Whenever an octet represents a numeric quantity the left most bit in the diagram is the high order or most significant bit. That is, the bit labeled 0 is the most significant bit. For example, the following diagram represents the value 170 (decimal). オクテットが数量を表す場合、常に図の最左ビットが高位または最上位ビットである。つまり、ラベル 0 のビットが最上位ビットである。例えば以下の図は値 170(10 進数) を表す。

                            0 1 2 3 4 5 6 7 
                           +-+-+-+-+-+-+-+-+
                           |1 0 1 0 1 0 1 0|
                           +-+-+-+-+-+-+-+-+

                          Significance of Bits

                               Figure 11.
                            0 1 2 3 4 5 6 7 
                           +-+-+-+-+-+-+-+-+
                           |1 0 1 0 1 0 1 0|
                           +-+-+-+-+-+-+-+-+

                              ビットの重み

                                 図 11.

Similarly, whenever a multi-octet field represents a numeric quantity the left most bit of the whole field is the most significant bit. When a multi-octet quantity is transmitted the most significant octet is transmitted first. 同じように複数オクテットのフィールドが数量を表す場合、常にそのフィールド全体の最左ビットが最上位ビットとなる。複数オクテットの数値が転送されるとき、最上位ビットから先に転送される。

GLOSSARY 用語集

1822
BBN Report 1822, "The Specification of the Interconnection of a Host and an IMP". The specification of interface between a host and the ARPANET. BBN Report 1822, "The Specification of the Interconnection of a Host and an IMP"。ホストと ARPANET との間のインターフェイス仕様。
ARPANET leader ARPANET リーダー (ARPANET leader)
The control information on an ARPANET message at the host-IMP interface. ホスト-IMP 間のンターフェイスにおける ARPANET 上の制御情報。
ARPANET message ARPANET メッセージ (ARPANET message)
The unit of transmission between a host and an IMP in the ARPANET. The maximum size is about 1012 octets (8096 bits). ARPANET におけるホストと IMP との間の通信単位。最大サイズはおよそ 1012 オクテット(8096 ビット)である。
ARPANET packet ARPANET パケット (ARPANET packet)
A unit of transmission used internally in the ARPANET between IMPs. The maximum size is about 126 octets (1008 bits). IMP 間において ARPANET 内で内部的に使用される通信単位。最大サイズはおよそ 126 オクテット(1008 ビット)である。
Destination 宛先(Destination)
The destination address, an internet header field. インターネットヘッダフィールドの宛先アドレス
DF
The Don't Fragment bit carried in the flags field. フラグフィールド内で運ばれるドントフラグメントビット。
Flags フラグ(Flags)
An internet header field carrying various control flags. さまざまな制御フラグを運ぶインターネットヘッダフィールド。
Fragment Offset フラグメントオフセット(Fragment Offset)
This internet header field indicates where in the internet datagram a fragment belongs. このインターネットヘッダフィールドは、インターネットデータグラムの中でフラグメントの占める位置を表す。
GGP
Gateway to Gateway Protocol, the protocol used primarily between gateways to control routing and other gateway functions. Gateway to Gateway Protocol。このプロトコルは、ルーティングと他のゲートウェイ機能とを制御するために、主にゲートウェイ間で使用される。
header ヘッダ(header)
Control information at the beginning of a message, segment, datagram, packet or block of data. メッセージやセグメント、データグラム、パケット、データブロックなどの先頭に置かれる制御情報。
ICMP
Internet Control Message Protocol, implemented in the internet module, the ICMP is used from gateways to hosts and between hosts to report errors and make routing suggestions. Internet Control Message Protocol。インターネットモジュール内に実装される。ICMP はエラーの報告とルーティングの指示とを行うために、ゲートウェイからホストへ、またはホスト間で使用される。
Identification 識別子(Identification)
An internet header field carrying the identifying value assigned by the sender to aid in assembling the fragments of a datagram. データグラムのフラグメントを組み立てる手助けとなるように送信者によって割り当てられる識別子を運ぶインターネットヘッダフィールド。
IHL
The internet header field Internet Header Length is the length of the internet header measured in 32 bit words. インターネットヘッダフィールド Internet Header Length は、インターネットヘッダの 32 ビットワード単位の長さである。
IMP
The Interface Message Processor, the packet switch of the ARPANET. Interface Message Processor。ARPANET のパケットスイッチ。
Internet Address インターネットアドレス(Internet Address)
A four octet (32 bit) source or destination address consisting of a Network field and a Local Address field. Network フィールドと Local Address フィールドとを構成する 4 オクテット(32 ビット)の送信元または宛先アドレス。
internet datagram インターネットデータグラム(internet datagram)
The unit of data exchanged between a pair of internet modules (includes the internet header). インターネットモジュールの組の間で交換されるデータの構成単位(インターネットヘッダを含む)。
internet fragment インターネットフラグメント(internet fragment)
A portion of the data of an internet datagram with an internet header. インターネットヘッダを持つインターネットデータグラムのデータの一部分。
Local Address ローカルアドレス(Local Address)
The address of a host within a network. The actual mapping of an internet local address on to the host addresses in a network is quite general, allowing for many to one mappings. ネットワークの内側のホストのアドレス。インターネットローカルアドレスからネットワーク内のホストアドレスへの実際のマッピングは極めて一般的であり、多対一のマッピングも許される。
MF
The More-Fragments Flag carried in the internet header flags field. インターネットヘッダのフラグフィールド内で運ばれるモアフラグメントフラグ(More-Fragments Flag)。
module モジュール(module)
An implementation, usually in software, of a protocol or other procedure. プロトコルまたは他の手続きの(通常はソフトウェアによる)実装。
more-fragments flag モアフラグメントフラグ(more-fragments flag)
A flag indicating whether or not this internet datagram contains the end of an internet datagram, carried in the internet header Flags field. このインターネットデータグラムがインターネットデータグラムの終端を含むかどうかを表すフラグ。インターネットヘッダのフラグフィールド内で運ばれる。
NFB
The Number of Fragment Blocks in a the data portion of an internet fragment. That is, the length of a portion of data measured in 8 octet units. インターネットフラグメントのデータ部におけるフラグメントブロック数。つまり、データ部の長さの 8 オクテット単位の長さ。
octet オクテット(octet)
An eight bit byte. 8 ビットバイト。
Options オプション(Options)
The internet header Options field may contain several options, and each option may be several octets in length. インターネットヘッダのオプションフィールドは複数のオプションを含むことが許され、各オプションは複数オクテット長でもよい。
Padding パディング(Padding)
The internet header Padding field is used to ensure that the data begins on 32 bit word boundary. The padding is zero. インターネットヘッダのパディングフィールドは、データが 32 ビットワード境界から始まることを保証するために使用される。パディングはゼロである。
Protocol プロトコル(Protocol)
In this document, the next higher level protocol identifier, an internet header field. この文書においては、次の上位レベルプロトコル識別子。インターネットヘッダフィールド。
Rest
The local address portion of an Internet Address. インターネットアドレスのローカルアドレス部。
Source 送信元(Source)
The source address, an internet header field. 送信元アドレス。インターネットヘッダフィールド。
TCP
Transmission Control Protocol: A host-to-host protocol for reliable communication in internet environments. Transmission Control Protocol:インターネット環境における信頼できる通信のためのホスト間プロトコル。
TCP Segment TCP セグメント (TCP Segment)
The unit of data exchanged between TCP modules (including the TCP header). TCP モジュール間で交換されるデータの構成単位(TCP ヘッダを含む)。
TFTP
Trivial File Transfer Protocol: A simple file transfer protocol built on UDP. Trivial File Transfer Protocol:UDP 上に構築される単純なファイル転送プロトコル。
Time to Live 有効期間(Time to Live)
An internet header field which indicates the upper bound on how long this internet datagram may exist. このインターネットデータグラムが存在してよい時間の上限を表すインターネットヘッダフィールド。
TOS
Type of Service サービス種別(Type of Service)。
Total Length 全長(Total Length)
The internet header field Total Length is the length of the datagram in octets including internet header and data. インターネットヘッダフィールドである全長(Total Length)は、インターネットヘッダとデータとを含むデータグラムのオクテット単位の長さである。
TTL
Time to Live 有効期間(Time to Live)
Type of Service サービス種別(Type of Service)
An internet header field which indicates the type (or quality) of service for this internet datagram. このインターネットデータグラムのためのサービスの種別(または品質)を表すインターネットヘッダフィールド。
UDP
User Datagram Protocol: A user level protocol for transaction oriented applications. User Datagram Protocol:トランザクション指向アプリケーションのためのユーザーレベルプロトコル。
User ユーザー(User)
The user of the internet protocol. This may be a higher level protocol module, an application program, or a gateway program. インターネットプロトコルのユーザー。これは上位レベルのプロトコルモジュール、またはアプリケーションプログラム、ゲートウェイプログラムの可能性がある。
Version バージョン(Version)
The Version field indicates the format of the internet header. バージョンフィールドはインターネットヘッダのフォーマットを表す。

REFERENCES 参考資料

[1] Cerf, V., "The Catenet Model for Internetworking," Information Processing Techniques Office, Defense Advanced Research Projects Agency, IEN 48, July 1978.

[2] Bolt Beranek and Newman, "Specification for the Interconnection of a Host and an IMP," BBN Technical Report 1822, Revised May 1978.

[3] Postel, J., "Internet Control Message Protocol - DARPA Internet Program Protocol Specification," RFC 792, USC/Information Sciences Institute, September 1981.

[4] Shoch, J., "Inter-Network Naming, Addressing, and Routing," COMPCON, IEEE Computer Society, Fall 1978.

[5] Postel, J., "Address Mappings," RFC 796, USC/Information Sciences Institute, September 1981.

[6] Shoch, J., "Packet Fragmentation in Inter-Network Protocols," Computer Networks, v. 3, n. 1, February 1979.

[7] Strazisar, V., "How to Build a Gateway", IEN 109, Bolt Beranek and Newman, August 1979.

[8] Postel, J., "Service Mappings," RFC 795, USC/Information Sciences Institute, September 1981.

[9] Postel, J., "Assigned Numbers," RFC 790, USC/Information Sciences Institute, September 1981.