-
Notifications
You must be signed in to change notification settings - Fork 0
/
RFC1034_part2.txt
817 lines (673 loc) · 46.9 KB
/
RFC1034_part2.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
3. DOMAIN NAME SPACE and RESOURCE RECORDS
3.1. Name space specifications(仕様) and terminology(用語)
The domain name space is a tree structure. Each node and leaf on the
tree corresponds to a resource set (which may be empty). The domain
system makes no distinctions between the uses of the interior(内部の) nodes and
leaves, and this memo uses the term "node" to refer to both.
ドメイン名前空間は木構造
node/leafはリソースセットに対応している(emptyかもしれない)
DNSは内部のnode/leafの使用を区別しない
>どちらもnodeと呼びましょう。今後leafはでてこない
> .(ドット) -> node
Each node has a label, which is zero to 63 octets in length. Brother
nodes may not have the same label, although the same label can be used
for nodes which are not brothers. One label is reserved, and that is
the null (i.e., zero length) label used for the root.
ノードはラベルをもち、それは0-63オクテットの長さ
兄弟のでは同じラベルを持てないが兄弟nodeでなければ同じラベルを持てる
nullのラベルはroot用のみ使われる
> example.jpとexample.co.jpのように兄弟でなければ良い
> 長さがnullであって、ラベルの長さが0であるだけ。 0 = null length
cf. https://www.nic.ad.jp/ja/dom/system.html
"."に区切られたのがラベル
The domain name of a node is the list of the labels on the path from the
node to the root of the tree. By convention(習慣的に), the labels that compose a
domain name are printed or read left to right, from the most specific
(lowest, farthest from the root) to the least specific (highest, closest
to the root).
ノードのドメイン名は、nodeから木のrootへの経路におけるラベルのリストである
ドメイン名を構成するラベルは左から右へ読み書きされ、
つまりrootから遠い(低い)からrootに近い(高い)へ
> cf. http://www.e-ontap.com/dns/whatdnsisnot.html
> 鈴木先生:「仮定の話として、DNSの設計について一つ言えるのは、上位から下位に向かって、左から右に書かれていたら良かったな、と」
Internally(内部的に), programs [that manipulate(操作する) domain names] should represent them
as sequences of labels, where each label is a length octet followed by
an octet string. Because all domain names end at the root, which has a
null string for a label, these internal representations can use a length
byte of zero to terminate a domain name.
内部的に、ドメイン名を操作するプログラムはドメイン名をラベルの連続性したものとして表すべき
各ラベルは長さを示すオクテットとそれに続くオクテット列とする
ドメイン名はすべて、null文字列を持つrootで終わるので、内部的な表現は0バイトの長さをドメイン名の終端として扱える
By convention(習慣的に), domain names can be stored with arbitrary(任意の) case, but
domain name comparisons for all present domain functions are done in a
case-insensitive(大文字・小文字を区別しない) manner, assuming an ASCII character set, and a high
order zero bit. This means that you are free to create a node with
label "A" or a node with label "a", but not both as brothers; you could
refer to either using "a" or "A". When you receive a domain name or
label, you should preserve(保護する) its case. The rationale(理論的根拠) for this choice is
that we may someday need to add full binary domain names for new
services; existing services would not be changed.
慣習的にドメイン名は大文字/小文字もOKだが、
現在のドメイン機能では、アスキー文字かつ0bitより大きいことを想定しているので、大文字・小文字を区別しない
Aだろうがaだろうがnodeのラベルを作れるけど、兄弟nodeにしてはならない
(兄弟nodeは同じラベルを持てない)
ドメイン名やラベルを受け取ったときは、そのままの文字にしておくべき
理由は新サービスのために任意の文字が使えるドメイン名を加えることになるかもしれず、
それでも既存のサービスを変えずに済ませるためである。
> you should preserve its case -> 毒入れの0x20の根拠?
When a user needs to type a domain name, the length of each label is
omitted and the labels are separated by dots ("."). Since a complete
domain name ends with the root label, this leads to a printed form which
ends in a dot. We use this property(特性) to distinguish between:
ユーザーがドメイン名を表現するとき、各ラベルの長さは省略され、ラベルはドットで分けられる
完全なドメイン名なrootラベルで終わるので、最後はドットで終わる
この特徴を使って以下のように区別される
- a character string which represents a complete domain name
(often called "absolute"). For example, "poneria.ISI.EDU."
完全なドメイン名を表現する文字列 絶対名"absolute"
(FQDNかな?)
> complete domain nameがFQDNかどうかは議論の的
> FQDNは限定的な使用。FQDNはホスト名に限定。
> complete domain nameはホスト名とは限らない(ただrootまで書いてあるもの)
- a character string that represents the starting labels of a
domain name which is incomplete, and should be completed by
local software using knowledge of the local domain (often
called "relative"). For example, "poneria" used in the
ISI.EDU domain.
不完全なドメイン名のラベルから始まるラベルを表す文字列は
ローカルのソフトウェアによって補完されるべき 相対名"relative"
>何処かで途中までわかっているもの
Relative names are either(どちらか) taken relative to a well known origin, or to a
list of domains used as a search list. Relative names appear mostly at
the user interface, where their interpretation(解釈) varies(違い) from
implementation(実行) to implementation, and in master files, where they are
relative to a single origin domain name. The most common interpretation
uses the root "." as either the single origin or as one of the members
of the search list, so a multi-label relative name is often one where
the trailing(後端の) dot has been omitted to save typing.
相対名は、よく知られたオリジンかサーチリストとして使われるドメインリストに関連付される
相対名は、実行環境の解釈が違うユーザーインターフェースでよくつかわれる
マスターファイルでは相対名は一つのドメイン名に関連付けされる
もっとも一般的な解釈は、ルート"."を単一のオリジンとしてか、もしくはサーチリストのメンバーにふくめて使う
マルチラベルの相対名はドットを省略したものとしてよく使用される
> relativeはオリジンまでわかっていることを前提。省略されているものがなにかわかっている。
> resolv.confのsearch exampel.com
To simplify implementations, the total number of octets [that represent a
domain name (i.e., the sum of all label octets and label lengths)] is
limited to 255.
オクテットのトータルの数(オクテットラベルとラベル長合わせて)は255に制限
> 255に制限は、「To simplify implementations」の為
cf. https://www.nic.ad.jp/ja/dom/system.html
"DNSメッセージ中のドメイン名を表すパラメータの長さは255オクテット以下とされています。
この中には、ラベルの長さを表す数字と実際のラベル文字列のセットが繰り返し含まれ、最後は0で終わることになっています。
ドメイン名の表記と比較すると、ラベルの数よりピリオドの数が必ず一つ少なくなること、
またパラメータの最後が0で終わることから、ユーザーがドメイン名として使える最大長は253文字となります。"
"253文字になる理由ですが、具体的に上記「www.example.co.jp」を例に挙げると、 DNSメッセージ中の表現は、
"3" +「www」+ "7" +「example」+ "2" +「co」+ "2 " +「jp」+ "0"
となり19オクテットですが、 ドメイン名の表記としては17文字(ピリオドを含む)となり、2オクテット分少なくなります。"
cf. DNSパケットフォーマットと、DNSパケットの作り方 http://www.atmarkit.co.jp/ait/articles/1601/29/news014.html
A domain is identified by a domain name, and consists of that part of
the domain name space [that is at or below the domain name [which
specifies the domain]]. A domain is a subdomain of another domain if it
is contained within that domain. This relationship can be tested by
seeing if the subdomain's name ends with the containing domain's name.
For example, A.B.C.D is a subdomain of B.C.D, C.D, D, and " ".
ドメインはドメイン名により識別され、ドメインはドメインを特定するドメイン名の上/下であるドメイン名前空間の一部からなりたっている
ドメインは、他のドメイン内に含まれるなら、他のドメインのサブドメインといえる
この関係性はサブドメイン名がドメイン名を含むことで終わるのかで、試される
3.2. Administrative guidelines on use
管理者用利用ガイドライン
As a matter of policy, the DNS technical specifications do not mandate(命令する、強制する)
a particular tree structure or rules for selecting labels; its goal is to
be as general as possible, so that it can be used to build arbitrary(任意の)
applications. In particular, the system was designed so that the name
space did not have to be organized along the lines of network
boundaries, name servers, etc. The rationale(理論的根拠) for this is not that the
name space should have no implied(暗黙の) semantics(意味), but rather that the choice
of implied semantics should be left open(開けっぱなし) to be used for the problem at
hand, and that different parts of the tree can have different implied
semantics. For example, the IN-ADDR.ARPA domain is organized and
distributed by network and host address because its role is to translate
from network or host numbers to names; NetBIOS domains [RFC-1001, RFC-
1002] are flat because that is appropriate for that application.
いろんなアプリで使えるよう、技術仕様では木構造やラベル選択を強制しない
名前空間は、ネットワーク境界やネームサーバー等の区分に沿ってまとめる必要が無いように設計された
名前空間は暗黙の意味をもつべきでないとと言いたいわけではなく、むしろ意味の選択は手元の問題に使うためにオープンにしておくべき
ツリーの異なる部分では異なる暗黙の意味を持つことが可能ということである
(手元の問題?)
> 名前付けのルールは色々議論あるけど、DNSでは強制はしない
> 意味とかは、プロトコルに持ち込むな。各々勝手にしろ
> nameing compention
> ただIN-ADDR.ARPAは逆引きに使われているよ(移行の為に使われていたから)
However, there are some guidelines that apply to the "normal" parts of
the name space used for hosts, mailboxes, etc., that will make the name
space more uniform, provide for growth, and minimize problems as
software is converted from the older host table. The political
decisions about the top levels of the tree originated in RFC-920.
Current policy for the top levels is discussed in [RFC-1032]. MILNET
conversion issues are covered in [RFC-1031].
いくつかのガイドラインはホストやメールボックスなどのために名前空間の普通の部分を使われるようしている
それは、名前空間を均一にし、成長を促し、古いホストテーブルの変換問題を最小にする
(古いホストテーブル?)
TLD?の政治的決定はRFC-920が最初、RFC-1032で議論される MILNET変換問題はRFC-1031
Lower domains(下位ドメイン) [which will eventually(最終的には) be broken into(分割) multiple zones] should
provide branching at the top of the domain so that the eventual
decomposition(分解) can be done without renaming(リネーム). Node labels [which use
special characters, leading digits, etc.,] are likely to break older
software which depends on more restrictive choices.
分割する下位ドメインはリネームなしにトップのドメインで分けておくべきである
特殊文字を使っていたり、数字で始まっていたりするnodeラベルは古い/制限のあるソフトウェアでは壊れるかも
3.3. Technical guidelines on use
Before the DNS can be used to hold naming information for some kind of
object, two needs must be met:
オブジェクトの名前情報を保持できるようになるまえに、2つの必要事項がある
- A convention for mapping between object names and domain
names. This describes how information about an object is
accessed.
オブジェクト名とドメイン名の間のしきたりがあり、オブジェクト情報へのアクセス方法が記されている
- RR types and data formats for describing the object.
RRタイプとオブジェクトを記すデータ形式
> 属性 プロパティのこと
These rules can be quite simple or fairly complex. Very often, the
designer must take into account(考慮する) existing formats and plan for upward(上向きの)
compatibility(適合性) for existing usage. Multiple mappings or levels of
mapping may be required.
この2つはシンプルか複雑かどちらか
設計者は既存の形式も考慮に入れて、 既存の使い方の上位互換性を計画しなきゃならない
多数のマッピングや多段のマッピングが必要かも
>シンプルにも複雑にもなりえる
For hosts, the mapping depends on the existing syntax for host names
[which is a subset of the usual text representation(表現) for domain names,
together with RR formats for describing host addresses, etc.] Because we
need a reliable(信頼できる) inverse(逆の) mapping from address to host name, a special
mapping for addresses into the IN-ADDR.ARPA domain is also defined.
ホストでは、マッピングは既存のホスト名の記法に依存する、逆引きが必要なのでin-addr.arpaも規定
既存のホスト名形式:ドメイン名のテキスト表記、ホストアドレスを記すRR形式
For mailboxes, the mapping is slightly more complex. The usual mail
address <local-part>@<mail-domain> is mapped into a domain name by
converting <local-part> into a single label (regardles of(にもかかわらず) dots it
contains), converting <mail-domain> into a domain name using the usual
text format for domain names (dots denote(示す) label breaks(区切り), and
concatenating(鎖状につなぐ) the two to form a single domain name. Thus the mailbox
HOSTMASTER@SRI-NIC.ARPA is represented as a domain name by
HOSTMASTER.SRI-NIC.ARPA. An appreciation for the reasons behind this
design also must take into account the scheme for mail exchanges [RFC-
974].
メールのマッピングは複雑、ローカルパートを一つのラベル、メールドメインはいつものラベルで、その2つをつなげる
ex. HOSTMASTER@SRI-NIC.ARPA. -> HOSTMASTER.SRI-NIC.ARPA.
(SOAのメールアドレスとか?)
cf http://www.atmarkit.co.jp/fnetwork/dnstips/014.html
"名前:RNAME(postmaster.example.jp.)
・このドメインの管理者のメールアドレス
・ DNS のサーバがこのアドレスを使うことはないが、人がゾーンの管理者と連絡を取りたい際に使う
・メールアドレスをそのまま書くのではなく、「@」記号を「.」に置き換えて記載
・例えば、「postmaster@example.jp」が管理者のメールアドレスであれば、「postmaster.example.jp」と記載する"
The typical user is not concerned with(興味がない) defining these rules, but should
understand [that they usually are the result of numerous(多数の) compromises(妥協)
between desires(欲求) for upward compatibility(上位互換) with old usage, interactions(相互作用)
between different object definitions, and the inevitable(必然的な) urge(駆り立てる) to add new
features when defining the rules. The way the DNS is used to support
some object is often more crucial than the restrictions inherent(固有の、本来の) in the
DNS.
大半のユーザはルールの定義には興味が無いかもだけど、このルールは多数の妥協のけっかなのだと理解すべき
3.4. Example name space
名前空間の例
The following figure(図) shows a part of the current domain name space, and
is used in many examples in this RFC. Note that the tree is a very
small subset of the actual name space.
次の図は現愛のドメイン名空間の一部を表しており、このRFCにてよく用いられる例である
この木構造は実際の名前空間の縮小版だと心得ておくように
|
|
+---------------------+------------------+
| | |
MIL EDU ARPA
| | |
| | |
+-----+-----+ | +------+-----+-----+
| | | | | | |
BRL NOSC DARPA | IN-ADDR SRI-NIC ACC
|
+--------+------------------+---------------+--------+
| | | | |
UCI MIT | UDEL YALE
| ISI
| |
+---+---+ |
| | |
LCS ACHILLES +--+-----+-----+--------+
| | | | | |
XX A C VAXA VENERA Mockapetris
In this example, the root domain has three immediate subdomains: MIL,
EDU, and ARPA. The LCS.MIT.EDU domain has one immediate subdomain named
XX.LCS.MIT.EDU. All of the leaves are also domains.
> immediate subdomain root直下のドメイン名
3.5. Preferred name syntax
好まれる名前の文法
The DNS specifications attempt to be as general as possible in the rules
for constructing domain names. The idea is that the name of any
existing object can be expressed as a domain name with minimal changes.
However, when assigning a domain name for an object, the prudent(慎重な) user
will select a name [which satisfies both the rules of the domain system
and any existing rules for the object, whether(であろうと) these rules are published
or implied(暗に含まれた) by existing programs.
DNSの仕様は、ドメイン名を構築するルールの中で、できるだけ一般的であろうとしている
このアイディアは、どんな存在するオブジェクトの名前が最小限の変更でドメイン名を表現できるようにするものである
しかし、オブジェクトに対しドメイン名をアサインする際には、
慎重なユーザはDNSのルールと既存のオブジェクト名のルール両方を満たす名前を選ぶ
そのルールが公開されているか既存のプログラムに暗に含まれていようが関係なく
> minimal changes 当時の名前から変換するのに最小限の変更で
> 当時は7bit以上は通さないとかあった、ASCIIは7bit
For example, when naming a mail domain, the user should satisfy both the
rules of this memo and those in RFC-822. When creating a new host name,
the old rules for HOSTS.TXT should be followed. This avoids problems
when old software is converted to use domain names.
上記の例として、メール用ドメイン名をきめる際にユーザはRFC1034とRFC822を両方満たさなきゃならない
新しいホスト名を作成する際、HOSTS.TXTの古いルールは守られるべき
ことことは、古いソフトウェアがDNSを使うようになったら時に、問題が避けれる
> RFC822当時のメールの形式 今だったらRFC5322か
> 形式の強制はしない、あくまで提案的な
The following syntax will result in fewer problems with many
applications that use domain names (e.g., mail, TELNET).
下記の文法だと、DNSを使う多くのアプリケーションで問題が起きにくい
<domain> ::= <subdomain> | " "
> " " はnull
<subdomain> ::= <label> | <subdomain> "." <label>
<label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
<ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
<let-dig-hyp> ::= <let-dig> | "-"
<let-dig> ::= <letter> | <digit>
<letter> ::= any one of the 52 alphabetic characters A through Z in
upper case and a through z in lower case
<digit> ::= any one of the ten digits 0 through 9
バッカスナウア記法(BNF)
怖くないバッカスナウア記法(BNF)入門 http://qiita.com/h_sakurai/items/3cc328a6db8941ac6336
BNF記法入門(1) http://www.atmarkit.co.jp/fxml/ddd/ddd004/ddd004-bnf.html
> BNF、下から読むとわかりやすい
Note that while upper and lower case letters are allowed in domain
names, no significance(意味、意義) is attached to the case. That is, two names with
the same spelling but different case are to be treated as if identical.
ドメイン名には大/小文字どちらも使えるが、大/小文字に意義はない
同じスペルで大/小文字だけ違うのは、別のもととして扱われない
The labels must follow the rules for ARPANET host names. They must
start with a letter, end with a letter or digit(アラビア数字), and have as interior(内側の)
characters only letters, digits, and hyphen(ハイフン). There are also some
restrictions on the length. Labels must be 63 characters or less.
ラベルは、ARPANETのホスト名のルールに従い
文字で始まり、文字化か数字で終わるようにしなければならない、
また、始まりと終わり以外は、文字、数字、ハイフン
文字の長さにも制限があり、63文字以下にしてければならない
For example, the following strings identify hosts in the Internet:
たとえば、以下の文字列がインターネットではホストとして扱われる
A.ISI.EDU XX.LCS.MIT.EDU SRI-NIC.ARPA
3.6. Resource Records
リソースレコード(RR)
A domain name identifies a node. Each node has a set of resource
information, which may be empty. The set of resource information
associated with a particular name is composed of separate resource
records (RRs). The order of RRs in a set is not significant, and need
not be preserved by name servers, resolvers, or other parts of the DNS.
ドメイン名はノードを識別する
各ノードは資源情報をもっていて、それは空でもよい
特定の名前に紐付いている資源情報は別々の資源レコード(RR)から構成される
RRの並び順には意味がなく、ネームサーバー、リゾルバー、DNSの他の部分で保持される必要はない
>The set of resource AがあったりNS,MXがあったりとsetになっている
> 一番上に書いてあるものが、(優先して)使われるわけではない
When we talk about a specific RR, we assume it has the following:
特定のRRについて議論する際、下記事項を想定する
owner which is the domain name where the RR is found.
RRがあるドメイン名 ラベルのこと?
type which is an encoded 16 bit value that specifies the type
of the resource in this resource record. Types refer to
abstract resources.
RRの中で資源のtypeを指定する16bit値でエンコードされている
This memo uses the following types:
このメモでは次のタイプを使用する
A a host address
ホストアドレス
CNAME identifies the canonical name of an alias
エイリアスの正式名を表す
HINFO identifies the CPU and OS used by a host
ホストのCPUやOSを表す
MX identifies a mail exchange for the
domain. See [RFC-974 for details.
ドメインに対してのメールを表す。詳細はRFC974を
NS
the authoritative name server for the domain
ドメインに対しての権威あるネームサーバー
PTR
a pointer to another part of the domain name space
ドメイン名前空間の別部分へのポインタ
SOA
identifies the start of a zone of authority]
権威のゾーンの始まりを表す
class which is an encoded 16 bit value which identifies a
protocol family or instance of a protocol.
プロトコルファミリーまたはプロトコルのインスタンスを表す16bitでエンコードされた値
> ここに16bitも!?
> 当時はいろんなネットワークでDNSを使ってほしかった背景がある
This memo uses the following classes:
このメモでは下記クラスを扱う
IN the Internet system
インターネットシステム
CH the Chaos system
カオスシステム
TTL which is the time to live of the RR. This field is a 32
bit integer in units of seconds, an is primarily used by
resolvers when they cache RRs. The TTL describes how
long a RR can be cached before it should be discarded.
RRの生存期間。このフィールどは秒単位の32bit整数で、主にリゾルバーがRRをキャッシュした際に用いられる
TTLはRRが破棄されるまでどの長さキャッシュしてよいか示している
> キャッシュは保持していい時間
> 32bit RFC2181の10で詳しく記載
> "TTL value is an unsigned number, with a
> minimum value of 0, and a maximum value of 2147483647. That is, a
> maximum of 2^31 - 1. When transmitted, this value shall be encoded
> in the less significant 31 bits of the 32 bit TTL field, with the
> most significant, or sign, bit set to zero."
RDATA which is the type and sometimes class dependent data
which describes the resource:
RDATAとは、タイプやクラスが依存している資源を表すデータ
A For the IN class, a 32 bit IP address
INクラスで32bitのIPアドレスを表す
For the CH class, a domain name followed
by a 16 bit octal Chaos address.
CHクラスではドメイン名と16bitオクテットのカオスアドレス
CNAME a domain name.
MX a 16 bit preference value (lower is
better) followed by a host name willing
to act as a mail exchange for the owner
domain.
16bitの優先値(低いほど優先)とそれに続く、メール交換をするホスト名
NS a host name.
ホスト名
> IPアドレスでよかったのでは。下記間違った例だけど
> $ dig @ns.hyundai-motor.com. hyundai-motor.com ns +noall +ans
> hyundai-motor.com. 600 IN NS 10.10.111.1.
> hyundai-motor.com. 600 IN NS ns.hyundai-motor.com.
> hyundai-motor.com. 600 IN NS ns1.hyundai-motor.com.
> hyundai-motor.com. 600 IN NS 10.10.111.50.
PTR a domain name.
ドメイン名
> 「逆引き」と言っていますが、「PTR の正引き」なんです
> invers queryは省略。使われていないくて今更だから。
SOA several fields.
いくつかのフィールド
The owner name is often implicit(暗黙的), rather than forming an integral(完全な) part
of the RR. For example, many name servers internally form tree or hash
structures for the name space, and chain RRs off nodes. The remaining
RR parts are the fixed header (type, class, TTL) which is consistent for
all RRs, and a variable part (RDATA) that fits the needs of the resource
being described.
オーナー名(ラベル)はRRの完全一部を形ドルというより暗黙的である
例えば、ネームサーバーは内部的に名前空間に木/ハッシュ構造を成しており ネームサーバーはRRをノードから繋ぎ止めない
残りのRRはすべてのRRに含まれる固定ヘッダ(type class TTL)とか表現するリソースの必要にあった変部分(RDATA)
The meaning of the TTL field is a time limit on how long an RR can be
kept in a cache. This limit does not apply to authoritative data in
zones; it is also timed out, but by the refreshing policies for the
zone. The TTL is assigned by the administrator for the zone where the
data originates. While short TTLs can be used to minimize caching, and
a zero TTL prohibits caching, the realities of Internet performance
suggest [that these times should be on the order of days for the typical
host.] If a change can be anticipated(予想する), the TTL can be reduced prior to(より前)
the change to minimize inconsistency(矛盾) during the change, and then
increased back to its former value following the change.
TTLフィールドはどのくらいの長さRRがキャッシュでも持しても良いかを示す
この制限はゾーンの権威あるデータに適用しない。タイムアウトもあるがゾーンの更新プリシーによる
TTLは管理者によって元のゾーンに指定される。
短いTTLはキャッシュを短くするよう使われ、TTL 0でキャッシュ保持を禁止したりする一方
インターネットパフォーマンスを現実的に考えると、これらの時間(TTL)は普通のホストでは日単位にすべき
もし変更が生じることが予想されるときは、変更中の矛盾を最小化するためにTTLは変更前に減らしておき
変更状況にかんがみて、以前のTTL値に戻しておく
> zoneで決められたTTLもある -> $TTLってやつ
> 変更前後のTTLの調整->浸透もすくなくできる
The data in the RDATA section of RRs is carried as a combination of
binary strings and domain names. The domain names are frequently used
as "pointers" to other data in the DNS.
RR内のRDATAのデータはバイナリ文字やドメイン名の組み合わせとして運ばれる
ドメイン名は頻繁にDNS内では他のデータへのポインタとして使われる
3.6.1. Textual expression of RRs
RRのテキスト表現
RRs are represented in binary form in the packets of the DNS protocol,
and are usually represented in highly encoded form when stored in a name
server or resolver. In this memo, we adopt(採用する) a style similar to(に似た) that used
in master files in order to show the contents of RRs. In this format,
most RRs are shown on a single line, although continuation(連続した) lines are
possible using parentheses(丸括弧).
RRはDNSプロトコル内でバイナリ形式で表現され、
また一般的にネームサーバーやリゾルバーで保持される際には高度にエンコードされ表現される
ここでは、RR の内容を表すために、マスターファイルで使われる形式に似たスタイルを採用する
この形式では多くのRRは一行で表されるが、複数行の(RR)は丸括弧を使うことによって可能
> この際、RRの外部表現と内部表現がでてくる
> ここでは外部表現
The start of the line gives the owner of the RR. If a line begins with
a blank, then the owner is assumed to be the same as that of the
previous RR. Blank lines are often included for readability(読みやすさ).
行の始めはRRの所有者(ラベル)
ラベルが空白の場合は、ラベルが前の(上の)ものと同じと解釈される
空行は読みやすさの為によく使われる
> readabilityはhuman的なreadability 機械的でないのでパースしづらい
Following the owner, we list the TTL, type, and class of the RR. Class
and type use the mnemonics(記憶を助ける工夫) defined above, and TTL is an integer before
the type field. In order to avoid ambiguity(両義性) in parsing, type and class
mnemonics are disjoint(解体する), TTLs are integers, and the type mnemonic is
always last. The IN class and TTL values are often omitted from examples
in the interests of clarity.
ラベルの次は、RRのTTL, type, classを記述する
classとtypeは上で定義されたニーモニックを使用し、TTLはtypeフィールドの前で整数で記す
パースする際の曖昧さを避けるためにtypeとclassのニーモニックは分離される
TTLは整数で、タイプのニーモニックは常に最後にくる
IN classとTTL値はよく明快さのために省略している
> レコード毎にTTL値はかけるよ!知らない人は$TTLを短くしてしまうことも
> INも省略できる
The resource data or RDATA section of the RR are given using knowledge
of the typical representation for the data.
RRでの資源データやRDATAの部分はデータのよくある表現の知識を使う
For example, we might show the RRs carried in a message as:
例えば、下記RR
ISI.EDU. MX 10 VENERA.ISI.EDU.
MX 10 VAXA.ISI.EDU.
VENERA.ISI.EDU. A 128.9.0.32
A 10.1.0.52
VAXA.ISI.EDU. A 10.2.0.27
A 128.9.0.33
The MX RRs have an RDATA section which consists of a 16 bit number
followed by a domain name. The address RRs use a standard IP address
format to contain a 32 bit internet address.
MX RRには16bitの数字とその後にドメイン名がある
アドレスRRは32bitのインターネットアドレスを含む標準的なIPアドレスの形式を使用
This example shows six RRs, with two RRs at each of three domain names.
この例は6つのRRを記し、各3つのドメインに2つのRR
Similarly we might see:
似た感じで見ると
XX.LCS.MIT.EDU. IN A 10.0.0.44
CH A MIT.EDU. 2420
This example shows two addresses for XX.LCS.MIT.EDU, each of a different
class.
この例だと、2つのアドレスが記されているが、おのおのは異なるclass
3.6.2. Aliases and canonical names
エイリアスと正式名
In existing systems, hosts and other resources often have several names
that identify the same resource. For example, the names C.ISI.EDU and
USC-ISIC.ARPA both identify the same host. Similarly, in the case of
mailboxes, many organizations provide many names that actually go to the
same mailbox; for example Mockapetris@C.ISI.EDU, Mockapetris@B.ISI.EDU,
and PVM@ISI.EDU all go to the same mailbox (although the mechanism
behind this is somewhat(幾分) complicated).
既存のシステムでは、ホストと他の資源は同じ資源を示すいくつかの名前を持つ
例えば、C.ISI.EDUとUSC-ISIC.ARPAは同じホストを示す
同様に、メールボックスの場合では、多くの組織で実際には同じmailboxに着弾する多くの名前を提供する
例えば、Mockapetris@C.ISI.EDU, Mockapetris@B.ISI.EDU,PVM@ISI.EDUは同じmailboxに着弾する
この裏側のメカニズムは幾分複雑だが
Most of these systems have a notion that one of the equivalent(同等で) set of
names is the canonical or primary name and all others are aliases.
これらのシステムの多くが、その同等な名前のなかのひとつが正式名または主要な名前であり、他の名前はすべて別名であるという概念を持つ
cf「CNAMEの間違った使い方」 http://blog.livedoor.jp/techblog/archives/65340720.html
The domain system provides such a feature using the canonical name
(CNAME) RR. A CNAME RR identifies its owner name as an alias, and
specifies the corresponding canonical name in the RDATA section of the
RR. If a CNAME RR is present at a node, no other data should be
present; this ensures that the data for a canonical name and its aliases
cannot be different. This rule also insures that a cached CNAME can be
used without checking with an authoritative server for other RR types.
ドメインシステムはこのような正式名(CNAME)のRRを使う機能を提供している
CNAME RRはラベルを別名として識別して、RRのRDATA部内で対応する正式名を指定する
CNAME RRがノードで記されてあると、他のデータは記されるべきでない
このことは正式名のデータと別名に違いがないことを保証している
またこの規則はキャッシュされたCNAMEが他のRR typeを権威サーバーへ問い合わせることなく使えることを保証する
> "他のデータは記されるべきでない"ここ大事
CNAME RRs cause special action in DNS software. When a name server
fails to find a desired RR in the resource set associated with the
domain name, it checks to see if the resource set consists of a CNAME
record with a matching class. If so, the name server includes the CNAME
record in the response and restarts the query at the domain name
specified in the data field of the CNAME record. The one exception to
this rule is that queries which match the CNAME type are not restarted.
CNAME RRはDNSソフトウェアにて特殊な挙動を起こす
ネームサーバーがドメイン名に関連づいた資源セット内に望んだRRが見つけれなかったら
資源セットに同じclassでのCNAMEレコードがないかチェックする
もしそうだったら、ネームサーバは返答にCNAMEレコードを含め、
CNAMEレコードのデータフィールドに記されたドメイン名を再度問い合わせをする
このルールには一つ例外があって、問い合わせのtypeがCNAMEだったら、再度問い合わせしない
For example, suppose a name server was processing a query with for USC-
ISIC.ARPA, asking for type A information, and had the following resource
records:
USC-ISIC.ARPAのtype Aが問い合わされたら下記出力
USC-ISIC.ARPA IN CNAME C.ISI.EDU
C.ISI.EDU IN A 10.0.0.52
Both of these RRs would be returned in the response to the type A query,
while a type CNAME or * query should return just the CNAME.
type Aの問い合わせには両方(CNAME,A)がレスポンスで返る
一方、CNAME typeや*(any)問い合わせはCNAMEのみの応答を返す
Domain names in RRs which point at another name should always point at
the primary name and not the alias. This avoids extra indirections in
accessing information. For example, the address to name RR for the
above host should be:
RR内の他の名前への示すドメイン名はかならず別名でなく正式名であるべき
これにより情報アクセスする際に余分の間接参照を避けれる
例えば、上記例のホストのアドレスを名前に変換するRRは下記のようにするべき
> "RR内の他の名前への示すドメイン名はかならず別名でなく正式名であるべき"ここ大事
> CNAME が CNAMEを示すのもどうか。。
rather than pointing at USC-ISIC.ARPA. Of course, by the robustness
principle, domain software should not fail when presented with CNAME
chains or loops; CNAME chains should be followed and CNAME loops
signalled as an error.
USC-ISIC.ARPA(別名)を示すべきでない
もちろん堅牢性の原理では、ドメインソフトウェアはCNAME連鎖やループが示されていても失敗するべきでない
CNAME連鎖はサポートされ、CNAMEループはエラーとして出力されるべき
> obustness principle ポステルの原理 送るときは厳密に、受け取るときは寛容に
3.7. Queries
問い合わせ
Queries are messages which may be sent to a name server to provoke(引き起こす) a
response. In the Internet, queries are carried in UDP datagrams or over
TCP connections. The response by the name server either answers the
question posed in the query, refers the requester to another set of name
servers, or signals some error condition.
問い合わせは、応答を引き出す為にネームサーバーに送られるメッセージ
インターネットにて、問い合わせはUDPデータグラムかTCPコネクション上でやりとりされる
ネームサーバーからのレスポンスは、クエリの中で呈された問い合わせに答えるか
リクエストを送った人に他のネームサーバーを参照させるか
エラーを返すかである
In general, the user does not generate queries directly, but instead
makes a request to a resolver which in turn sends one or more queries to
name servers and deals with the error conditions and referrals that may
result. Of course, the possible questions which can be asked in a query
does shape the kind of service a resolver can provide.
一般的に、ユーザーは直接クエリを生成しない代わりに、
ネームサーバーにクエリを送ったりエラーを処理したり他の参照したりするリゾルバにリクエストする
もちろん、クエリのなかで問い合わせることができる問い合わせが、リゾルバが提供できる種類を決定する
DNS queries and responses are carried in a standard message format. The
message format has a header containing a number of(幾つかの) fixed fields which
are always present, and four sections which carry query parameters and
RRs.
DNS問い合わせと応答は、標準的なメッセージ形式の中でやり取りされる
メッセージ形式は、必ず付く幾つか固定フィールドを含むヘッダと4つのクエリパラメータとRRを示すセクションがある
The most important field in the header is a four bit field called an
opcode which separates different queries. Of the possible 16 values,
one (standard query) is part of the official protocol, two (inverse
query and status query) are options, one (completion) is obsolete, and
the rest are unassigned.
ヘッダの中で最も重要なフィールドはopcodeと呼ばれる4bitのフィールドで、クエリの種類を区別するもの
とり得る16の値のうち、一つ目(標準クエリ)は公式なプロトコルの一部で、二つ目(逆問合せと状態問合せ)は任意で
また、別のひとつ(補完は廃止されており、残りは割り当てられていない
> standardしか使わない。。。16bitがもったいない。
The four sections are:
Question Carries the query name and other query parameters.
Answer Carries RRs which directly answer the query.
Authority Carries RRs which describe other authoritative servers.
May optionally carry the SOA RR for the authoritative
data in the answer section.
Additional Carries RRs which may be helpful in using the RRs in the
other sections.
Note that the content, but not the format, of these sections varies with
header opcode.
3.7.1. Standard queries
> 今日これしかない
A standard query specifies a target domain name (QNAME), query type
(QTYPE), and query class (QCLASS) and asks for RRs which match. This
type of query makes up such a vast majority of DNS queries that we use
the term "query" to mean standard query unless otherwise specified. The
QTYPE and QCLASS fields are each 16 bits long, and are a superset of
defined types and classes.
The QTYPE field may contain:
<any type> matches just that type. (e.g., A, PTR).
AXFR special zone transfer QTYPE.
MAILB matches all mail box related RRs (e.g. MB and MG).
* matches all RR types.
> アスタリスクについては後で詳しく書いてある
The QCLASS field may contain:
<any class> matches just that class (e.g., IN, CH).
* matches aLL RR classes.
Using the query domain name, QTYPE, and QCLASS, the name server looks
for matching RRs. In addition to relevant records, the name server may
return RRs that point toward a name server that has the desired
information or RRs that are expected to be useful in interpreting the
relevant RRs. For example, a name server that doesn't have the
requested information may know a name server that does; a name server
that returns a domain name in a relevant RR may also return the RR that
binds that domain name to an address.
For example, a mailer tying to send mail to Mockapetris@ISI.EDU might
ask the resolver for mail information about ISI.EDU, resulting in a
query for QNAME=ISI.EDU, QTYPE=MX, QCLASS=IN. The response's answer
section would be:
ISI.EDU. MX 10 VENERA.ISI.EDU.
MX 10 VAXA.ISI.EDU.
while the additional section might be:
VAXA.ISI.EDU. A 10.2.0.27
A 128.9.0.33
VENERA.ISI.EDU. A 10.1.0.52
A 128.9.0.32
Because the server assumes that if the requester wants mail exchange
information, it will probably want the addresses of the mail exchanges
soon afterward.
Note that the QCLASS=* construct requires special interpretation
regarding authority. Since a particular name server may not know all of
the classes available in the domain system, it can never know if it is
authoritative for all classes. Hence responses to QCLASS=* queries can
never be authoritative.
3.7.2. Inverse queries (Optional)
Name servers may also support inverse queries that map a particular
resource to a domain name or domain names that have that resource. For
example, while a standard query might map a domain name to a SOA RR, the
corresponding inverse query might map the SOA RR back to the domain
name.
Implementation of this service is optional in a name server, but all
name servers must at least be able to understand an inverse query
message and return a not-implemented error response.
The domain system cannot guarantee the completeness or uniqueness of
inverse queries because the domain system is organized by domain name
rather than by host address or any other resource type. Inverse queries
are primarily useful for debugging and database maintenance activities.
Inverse queries may not return the proper TTL, and do not indicate cases
where the identified RR is one of a set (for example, one address for a
host having multiple addresses). Therefore, the RRs returned in inverse
queries should never be cached.
Inverse queries are NOT an acceptable method for mapping host addresses
to host names; use the IN-ADDR.ARPA domain instead.
A detailed discussion of inverse queries is contained in [RFC-1035].
3.8. Status queries (Experimental)
To be defined.
3.9. Completion queries (Obsolete)
The optional completion services described in RFCs 882 and 883 have been
deleted. Redesigned services may become available in the future, or the
opcodes may be reclaimed for other use.