この文書はRFC1982の日本語訳です。 この文書の翻訳内容の正確さは保障できないため、 正確な知識を求める方は原文を参照してください。 翻訳者はこの文書によって読者が被り得る如何なる損害の責任をも負いません。 この翻訳内容に誤りがある場合、訂正版の公開や、 誤りの指摘は適切です。 この文書の配布は元のRFC同様に無制限です。


Network Working Group                                             R. Elz
Request for Comments: 1982                       University of Melbourne
Updates: 1034, 1035                                              R. Bush
Category: Standards Track                                    RGnet, Inc.
                                                             August 1996


                        Serial Number Arithmetic
                           シリアル番号演算


Status of this Memo
この文書の状態


   This document specifies an Internet standards track protocol for the
   Internet community, and requests discussion and suggestions for
   improvements.  Please refer to the current edition of the "Internet
   Official Protocol Standards" (STD 1) for the standardization state
   and status of this protocol.  Distribution of this memo is unlimited.
   この文書はインターネット共同体のためのインターネット標準化作業中のプ
   ロトコルを指定して、そして改良のために議論と提案を求めます。標準化状
   態とこのプロトコル状態は「インターネット公式プロトコル標準」(STD
   1)の現在の版を参照してください。このメモの配布は無制限です。

Abstract
概要


   This memo defines serial number arithmetic, as used in the Domain
   Name System.  The DNS has long relied upon serial number arithmetic,
   a concept which has never really been defined, certainly not in an
   IETF document, though which has been widely understood.  This memo
   supplies the missing definition.  It is intended to update RFC1034
   and RFC1035.
   この文書は、ドメインネームシステムで使われるシリアル番号演算を定義し
   ます。DNSは長い間、考え方は広く理解されていたが少なくともIETF
   文書で定義されていなかったシリアル番号演算に依存しています。この文書
   は欠けている定義を供給します。これはRFC1034とRFC1035を更新することを
   意図します。

1. Introduction
1. はじめに

   The serial number field of the SOA resource record is defined in
   RFC1035 as
   SOA資源レコードのシリアル番号フィールドはRFC1035で次のように定義され
   ます、

   SERIAL   The unsigned 32 bit version number of the original copy of
            the zone.  Zone transfers preserve this value.  This value
            wraps and should be compared using sequence space
            arithmetic.
   シリアル番号  符号なし32ビットのゾーンの原本のバージョン番号。ゾー
            ン転送がこの値を維持します。この値は巡回していて、連続空間
            演算を使って比較されるべきです。

   RFC1034 uses the same terminology when defining secondary server zone
   consistency procedures.
   RFC1034がセカンダリサーバーのゾーン整合手順を定義する時に同じ用語を使
   います。


   Unfortunately the term "sequence space arithmetic" is not defined in
   either RFC1034 or RFC1035, nor do any of their references provide
   further information.
   不幸にも「連続空間演算」という用語はRFC1034やRFC1035で定義されず、そ
   れらの参照する文献にも情報がありません


   This phrase seems to have been intending to specify arithmetic as
   used in TCP sequence numbers [RFC793], and defined in [IEN-74].
   この表現はTCPシリアル番号[RFC793]で使われ[IEN-74]で定義された演算を指
   定するつもりであったように思われます。

   Unfortunately, the arithmetic defined in [IEN-74] is not adequate for
   the purposes of the DNS, as no general comparison operator is
   defined.
   不幸にも[IEN-74]で定義された演算は一般的な比較演算が定義されないので
   DNSの目的に対して十分ではありません。

   To avoid further problems with this simple field, this document
   defines the field and the operations available upon it.  This
   definition is intended merely to clarify the intent of RFC1034 and
   RFC1035, and is believed to generally agree with current
   implementations.  However, older, superseded, implementations are
   known to have treated the serial number as a simple unsigned integer,
   with no attempt to implement any kind of "sequence space arithmetic",
   however that may have been interpreted, and further, ignoring the
   requirement that the value wraps.  Nothing can be done with these
   implementations, beyond extermination.
   この単純フィールドでこれ以上の問題を避けるために、この文書はフィール
   ドとフィールドで利用可能な演算を定義します。この定義はただRFC1034と
   RFC1035の意志を明確にするように意図され、現在の実行と合致すると信じら
   れます。しかし、古いすでにない実装がシリアル番号を単純な符号なし整数
   と扱い、どう読替えても「連続空間演算」を実装もしてなかったことが知ら
   れています。絶滅を待つ以外、これらの実装に関してなにもできません。

2. Serial Number Arithmetic
2. シリアル番号演算

   Serial numbers are formed from non-negative integers from a finite
   subset of the range of all integer values.  The lowest integer in
   every subset used for this purpose is zero, the maximum is always one
   less than a power of two.
   シリアル番号は非負整数で、有限限界を持ちます。この目的で使われる数値
   は最小値が0で最大値が2のべき乗より1小さい数です。

   When considered as serial numbers however no value has any particular
   significance, there is no minimum or maximum serial number, every
   value has a successor and predecessor.
   全てのシリアル番号の値に特定の意味がないとすると、最小や最大のシリア
   ル番号値はなく、全ての値に大小関係があります。


   To define a serial number to be used in this way, the size of the
   serial number space must be given.  This value, called "SERIAL_BITS",
   gives the power of two which results in one larger than the largest
   integer corresponding to a serial number value.  This also specifies
   the number of bits required to hold every possible value of a serial
   number of the defined type.  The operations permitted upon serial
   numbers are defined in the following section.
   このように使うシリアル番号を定義する際は、シリアル番号空間の大きさを
   与えなくてはなりません。この値は「シリアルビット」と呼ばれ、2のシリ
   アルビット乗の値より1小さい数ががシリアル番号に対応する整数の最もの
   大きなものになります。これはまたどのようなシリアル番号値でも記憶でき
   るビットの数を指定します。上記シリアル番号に使える演算は次章で定義し
   ます。

3. Operations upon the serial number
3. シリアル番号の演算

   Only two operations are defined upon serial numbers, addition of a
   positive integer of limited range, and comparison with another serial
   number.
   シリアル番号には2つの演算だけが定義されます、限界付きの正の整数の加
   算演算と、異なる2つのシリアル番号の比較です。

3.1. Addition
3.1. 加算

   Serial numbers may be incremented by the addition of a positive
   integer n, where n is taken from the range of integers
   [0 .. (2^(SERIAL_BITS - 1) - 1)].  For a sequence number s, the
   result of such an addition, s', is defined as
   シリアル番号は正の整数nの加算で増加するかもしれません、nは0以上
   (2^(SERIAL_BITS - 1) - 1)以下です。シリアル番号sに対して加算結果
   s'は次のように定義されます。

                   s' = (s + n) modulo (2 ^ SERIAL_BITS)

   where the addition and modulus operations here act upon values that
   are non-negative values of unbounded size in the usual ways of
   integer arithmetic.
   ここで加算と割り算の余りは、無限まで可能な通常の非負整数の演算です。

   Addition of a value outside the range
   [0 .. (2^(SERIAL_BITS - 1) - 1)] is undefined.
   0以上(2^(SERIAL_BITS - 1) - 1)以下以外の加算値は定義されません

3.2. Comparison
3.2. 比較

   Any two serial numbers, s1 and s2, may be compared.  The definition
   of the result of this comparison is as follows.
   任意の2つシリアル番号s1とs2は比較できます。この比較の結果の定義は次
   の通りです。

   For the purposes of this definition, consider two integers, i1 and
   i2, from the unbounded set of non-negative integers, such that i1 and
   s1 have the same numeric value, as do i2 and s2.  Arithmetic and
   comparisons applied to i1 and i2 use ordinary unbounded integer
   arithmetic.
   この定義の目的のため、2つの限界なしの非負整数i1とi2を考え、i1と
   s1が同じ値、i2とs2が同じ値とします。i1とi2に適用する演算と
   比較は普通の無制限の整数算数を使います。

   Then, s1 is said to be equal to s2 if and only if i1 is equal to i2,
   in all other cases, s1 is not equal to s2.
   そして、i1がi2と等しい場合に限り、s1とs2は等しいと言い、そうで
   なければs1とs2は等しくないといいます。

   s1 is said to be less than s2 if, and only if, s1 is not equal to s2,
   and

   s1がs2より小さいとは、s1とs2が異なりかつ以下が満たされる場合と
   します。

        (i1 < i2 and i2 - i1 < 2^(SERIAL_BITS - 1)) or
        (i1 > i2 and i1 - i2 > 2^(SERIAL_BITS - 1))

   s1 is said to be greater than s2 if, and only if, s1 is not equal to
   s2, and
   s1がs2より大きいとは、s1とs2が異なりかつ以下が満たされる場合と
   します。

        (i1 < i2 and i2 - i1 > 2^(SERIAL_BITS - 1)) or

        (i1 > i2 and i1 - i2 < 2^(SERIAL_BITS - 1))

   Note that there are some pairs of values s1 and s2 for which s1 is
   not equal to s2, but for which s1 is neither greater than, nor less
   than, s2.  An attempt to use these ordering operators on such pairs
   of values produces an undefined result.
   ペア(s1、s2)に対してs1がs2と等しくも大きくも小さくもないこ
   とがあります。このような(s1、s2)に対して比較演算を行うと不確定
   な結果がおきます。

   The reason for this is that those pairs of values are such that any
   simple definition that were to define s1 to be less than s2 where
   (s1, s2) is such a pair, would also usually cause s2 to be less than
   s1, when the pair is (s2, s1).  This would mean that the particular
   order selected for a test could cause the result to differ, leading
   to unpredictable implementations.
   この理由は、このような(s1、s2)に対して単純な定義でs1がs2よ
   り小さいとすると(s2,s1)に対してs2がs1より小さくなるからで
   す。これは試験の際に用いた順序次第で異なる結果になる、予想できない実
   装になる事を意味します。

   While it would be possible to define the test in such a way that the
   inequality would not have this surprising property, while being
   defined for all pairs of values, such a definition would be
   unnecessarily burdensome to implement, and difficult to understand,
   and would still allow cases where
   全ての値の組合せに対して比較の結果がはっきりするように比較方法を定義
   することは可能でしょうが、このような定義は利用するのが不必要に厄介で、
   理解が難しく、以下のような場合がありえます。

        s1 < s2 and (s1 + 1) > (s2 + 1)

   which is just as non-intuitive.
   これは直観的でありません。

   Thus the problem case is left undefined, implementations are free to
   return either result, or to flag an error, and users must take care
   not to depend on any particular outcome.  Usually this will mean
   avoiding allowing those particular pairs of numbers to co-exist.
   そのため上記の問題は不確定なままにしてます、実装によっていずれかの結
   果を返すかエラーフラグを付けるかは自由で、ユーザーは特殊な結果に依存
   しないように気を付けなければなりません。通常これはそれらの特定対の番
   号の利用を避けることを意味するでしょう。

   The relationships greater than or equal to, and less than or equal
   to, follow in the natural way from the above definitions.
   以上と以下の関係は上の定義よりより自然な方法に従います。

4. Corollaries
4. 結果

   These definitions give rise to some results of note.
   これらの定義はノートのいくつかの結果を向上します。

4.1. Corollary 1
4.1. 結果1

   For any sequence number s and any integer n such that addition of n
   to s is well defined, (s + n) >= s.  Further (s + n) == s only when
   n == 0, in all other defined cases, (s + n) > s.
   任意のシーケンス番号sと任意の整数nに対して、nとsの加算は明確に定
   義され(s + n) >= sです。n == 0の場合だけ(s + n) == sで、そのほかの場合は
   (s + n) > sです。

4.2. Corollary 2
4.2. 結果2

   If s' is the result of adding the non-zero integer n to the sequence
   number s, and m is another integer from the range defined as able to
   be added to a sequence number, and s" is the result of adding m to
   s', then it is undefined whether s" is greater than, or less than s,
   though it is known that s" is not equal to s.
   もしs'がシーケンス番号sにゼロでない整数nを足した結果で、mが他の整数
   で範囲が上記のシーケンス番号の加算のとおりで、s''がs'にmを足した結果
   なら、s''がsより大きいか小さいかわかりませんがs''とs'は異なります。

4.3. Corollary 3
4.3. 結果3

   If s" from the previous corollary is further incremented, then there
   is no longer any known relationship between the result and s.
   前の結果のs''の値をさらに増加した場合、その結果とsの関係はわからない。

4.4. Corollary 4
4.4. 結果4

   If in corollary 2 the value (n + m) is such that addition of the sum
   to sequence number s would produce a defined result, then corollary 1
   applies, and s" is known to be greater than s.
   もし結果2で値(n + m)の合計をシーケンス番号sに足したら、結果1が適用さ
   れるので、s''はsより大きくなります。

5. Examples
5. 例

5.1. A trivial example
5.1. 些細な例

   The simplest meaningful serial number space has SERIAL_BITS == 2.  In
   this space, the integers that make up the serial number space are 0,
   1, 2, and 3.  That is, 3 == 2^SERIAL_BITS - 1.
   最も単純な有意シリアル番号空間はシリアルビット==2です。この空間でシ
   リアル番号を構成する整数は0と1と2と3です。つまり3==2^シリアル
   ビット−1です。

   In this space, the largest integer that it is meaningful to add to a
   sequence number is 2^(SERIAL_BITS - 1) - 1, or 1.
   この空間でシーケンス番号に加算できる最も大きな整数は
   2^(シリアルビット−1)−1つまり1です。

   Then, as defined 0+1 == 1, 1+1 == 2, 2+1 == 3, and 3+1 == 0.
   Further, 1 > 0, 2 > 1, 3 > 2, and 0 > 3.  It is undefined whether
   2 > 0 or 0 > 2, and whether 1 > 3 or 3 > 1.
   それで定義したように0+1==1、1+1== 2、2+1== 3、3+1== 0
   です。さらに1>0、2>1、3>2、と0>3です。2>0と0>2は不
   確定で1>3と3>1も不確定です。

5.2. A slightly larger example
5.2. すこし大きな例

   Consider the case where SERIAL_BITS == 8.  In this space the integers
   that make up the serial number space are 0, 1, 2, ... 254, 255.
   255 == 2^SERIAL_BITS - 1.
   シリアルビットが8の場合を考えます。この空間でシリアル番号を構成する
   整数は0、1、2...254、255です。255==2^シリアルビット−1。

   In this space, the largest integer that it is meaningful to add to a
   sequence number is 2^(SERIAL_BITS - 1) - 1, or 127.
   この空間でシーケンス番号に加えられる最も大きな整数は
   2^(シリアルビット−1)−1つまり127です。

   Addition is as expected in this space, for example: 255+1 == 0,
   100+100 == 200, and 200+100 == 44.
   この空間で期待される加算は、例えば:255+1==0、
   100+100== 200、200+100== 44。

   Comparison is more interesting, 1 > 0, 44 > 0, 100 > 0, 100 > 44,
   200 > 100, 255 > 200, 0 > 255, 100 > 255, 0 > 200, and 44 > 200.
   比較はより面白く、1>0、44>0、100>0、100>44、
   200>100、255>200、0>255、100>255、
   0>200、44>200です。

   Note that 100+100 > 100, but that (100+100)+100 < 100.  Incrementing
   a serial number can cause it to become "smaller".  Of course,
   incrementing by a smaller number will allow many more increments to
   be made before this occurs.  However this is always something to be
   aware of, it can cause surprising errors, or be useful as it is the
   only defined way to actually cause a serial number to decrease.
   100+100>100ですが(100+100)+100<100に気付
   いてください。シリアル番号を増やすと値が「小さく」なることがあります。
   もちろん、小さな数を加算する場合、このような現象が生じるまで何度も加
   算ができます。これがびっくりするようなエラーを起こすかもしれませんが、
   シリアル番号を減少させる唯一の定義された方法なので、有用です。

   The pairs of values 0 and 128, 1 and 129, 2 and 130, etc, to 127 and
   255 are not equal, but in each pair, neither number is defined as
   being greater than, or less than, the other.
   0と128、1と129、2と130、・・・、127と255は定義によ
   り等しくもどちらかが大きくもないです。

   It could be defined (arbitrarily) that 128 > 0, 129 > 1,
   130 > 2, ..., 255 > 127, by changing the comparison operator
   definitions, as mentioned above.  However note that that would cause
   255 > 127, while (255 + 1) < (127 + 1), as 0 < 128.  Such a
   definition, apart from being arbitrary, would also be more costly to
   implement.
   上記のとおり、比較演算の定義を変えて(独断的に)128>0、129>1、
   130>2、・・・、255>127と定義する事はできます。しかし、
   255>127だが、0<128なので(255+1)<(127+1)とな
   る事に注意してください。このような定義は、独断的なのは別としても、実装
   するのにコストがかかるでしょう。

6. Citation
6. 引用

   As this defined arithmetic may be useful for purposes other than for
   the DNS serial number, it may be referenced as Serial Number
   Arithmetic from RFC1982.  Any such reference shall be taken as
   implying that the rules of sections 2 to 5 of this document apply to
   the stated values.
   この定義された演算がDNS以外の目的で役立つかもしれず、これはRFC1982シ
   リアル番号演算と参照されるかもしれません。このような参照がこの文書の
   2章から5章の規則が当てはまる事を意味すると捉えるべきです。

7. The DNS SOA serial number
7. DNS SOAシリアル番号

   The serial number in the DNS SOA Resource Record is a Serial Number
   as defined above, with SERIAL_BITS being 32.  That is, the serial
   number is a non negative integer with values taken from the range
   [0 .. 4294967295].  That is, a 32 bit unsigned integer.
   DNS SOA資源レコードのシリアル番号は、シリアルビットが32の上に
   定義されるシリアル番号です。つまりシリアル番号は0以上4294967295以下
   の範囲の値の非負整数です。すなわち、32ビット符号なしの整数です。

   The maximum defined increment is 2147483647 (2^31 - 1).
   定義された最大加算数は2147483647(2^31−1)です。

   Care should be taken that the serial number not be incremented, in
   one or more steps, by more than this maximum within the period given
   by the value of SOA.expire.  Doing so may leave some secondary
   servers with out of date copies of the zone, but with a serial number
   "greater" than that of the primary server.  Of course, special
   circumstances may require this rule be set aside, for example, when
   the serial number needs to be set lower for some reason.  If this
   must be done, then take special care to verify that ALL servers have
   correctly succeeded in following the primary server's serial number
   changes, at each step.
   SOA.expireの値で与えられた期間のシリアル番号が上記値以上増加しないよ
   うに注意すべきです。そうなるとセカンダリサーバーは古いゾーンのコピー
   を持っていて、そのシリアル番号がプライマリサーバーのシリアル番号より
   大きくなりえます。もちろん、特別な状況ではこれに近い値を設定知りよう
   に要求されるでしょう、例えば何らかの理由でシリアル番号に小さな値を設
   定しなければならない時です。もしこうしなければならないなら、すべての
   サーバーが各ステップで正確にプライマリサーバのシリアル番号に変わって
   いるか特別な面倒を見てください。

   Note that each, and every, increment to the serial number must be
   treated as the start of a new sequence of increments for this
   purpose, as well as being the continuation of all previous sequences
   started within the period specified by SOA.expire.
   シリアル番号の各加算は、前の加算がSOA.expire期間内が続きながら、新し
   い加算のSOA.expire期間内の始めと扱わなければなりません。

   Caution should also be exercised before causing the serial number to
   be set to the value zero.  While this value is not in any way special
   in serial number arithmetic, or to the DNS SOA serial number, many
   DNS implementations have incorrectly treated zero as a special case,
   with special properties, and unusual behaviour may be expected if
   zero is used as a DNS SOA serial number.
   同じくシリアル番号に0を設定する前に注意すべきです。ゼロはシリアル番
   号演算やDNSのSOAシリアル番号の特別な数字ではないのですが、多く
   のDNS実装が間違ってゼロを特別な数字と扱いましす、そしてDNSのS
   OAシリアル番号にゼロを設定すると異常な行動がおきるかもしれません。

8. Document Updates
8. 文書更新

   RFC1034 and RFC1035 are to be treated as if the references to
   "sequence space arithmetic" therein are replaced by references to
   serial number arithmetic, as defined in this document.
   RFC1034とRFC1035で「連続空間演算」を参照する部分は、この文書で定義さ
   れるシリアル番号演算への参照に置き換えられると扱うはずです。

9. Security Considerations
9. セキュリティの考慮

   This document does not consider security.
   この文書はセキュリティを考慮しません。

   It is not believed that anything in this document adds to any
   security issues that may exist with the DNS, nor does it do anything
   to lessen them.
   この文書がDNSにセキュリティ問題を増やしたり解決したりすると信はじ
   られません。

References
参考文献

   [RFC1034]   Domain Names - Concepts and Facilities,
               P. Mockapetris, STD 13, ISI, November 1987.

   [RFC1035]   Domain Names - Implementation and Specification
               P. Mockapetris, STD 13, ISI, November 1987

   [RFC793]    Transmission Control protocol
               Information Sciences Institute, STD 7, USC, September 1981

   [IEN-74]    Sequence Number Arithmetic
               William W. Plummer, BB&N Inc, September 1978

Acknowledgements
謝辞

   Thanks to Rob Austein for suggesting clarification of the undefined
   comparison operators, and to Michael Patton for attempting to locate
   another reference for this procedure.  Thanks also to members of the
   IETF DNSIND working group of 1995-6, in particular, Paul Mockapetris.
   不確定な比較演算の解釈の提案に対してRob Austeinに、この手順のもう1つ
   の参考文献の場所を突き止める試みに対してMichael Pattonに感謝します。
   1995年から1996年のIETFのDNSINDワークグループ、特に
   Paul Mockapetrisに感謝します。

Authors' Addresses
著者のアドレス

   Robert Elz                     Randy Bush
   Computer Science               RGnet, Inc.
   University of Melbourne        10361 NE Sasquatch Lane
   Parkville, Vic,  3052          Bainbridge Island, Washington,  98110
   Australia.                     United States.

   EMail: kre@munnari.OZ.AU       EMail: randy@psg.com

Japanese translation by Ishida So