-
Notifications
You must be signed in to change notification settings - Fork 4
/
740.txt
91 lines (68 loc) · 5.15 KB
/
740.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
[7] [DFN[[[ACE]] [RUBYB[接頭辞][prefix]]]]は、[[国際化ラベル]]を [[ASCIIラベル]]として表現する際に使う[[接頭辞]]です。
[6] [[Punycode]] の[[ACE接頭辞]]は、 [CODE[[[xn--]]]] です [SRC[>>4, >>13]]。
[9] [[ACE接頭辞]]は、[[大文字・小文字不区別]]です [SRC[>>4]]。
* 仕様書
- [3] [[IDNA2003]] [CITE@en[RFC 3490 - Internationalizing Domain Names in Applications (IDNA)]]
-- [5] <http://tools.ietf.org/html/rfc3490#section-2>
-- [4] '''<http://tools.ietf.org/html/rfc3490#section-5>'''
- [12] [[IDNA2008]]
-- [16] [CITE@en[RFC 5890 - Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework]]
--- [13] '''<http://tools.ietf.org/html/rfc5890#section-2.3.2.5>'''
-- [15] [CITE@en[RFC 5894 - Internationalized Domain Names for Applications (IDNA): Background, Explanation, and Rationale]]
--- [17] <http://tools.ietf.org/html/rfc5894#section-7.4>
* 定義
[1]
> この[[文書]]では、[DFN[ACE [RUBY[接頭辞][settouji]@en[prefix]]]]は、
すべての [[ACEラベル]] / [[Aラベル]]のはじめに現れる [[ASCII]]
[[文字列]]として定義されます。
[SRC[[[IDNA2003]] >>5, [[IDNA2008]] >>13]]
* ACE 接頭辞の一覧
[2]
,[[ACE接頭辞]],意味
,[CODE[[[bl--]]]]
,[CODE[[[bq--]]]],[[RACE]]
,[CODE[[[dq--]]]]
,[CODE[[[lq--]]]]
,[CODE[[[mq--]]]]
,[CODE[[[ra--]]]]
,[CODE[[[wq--]]]]
,[CODE[[[xn--]]]],[[Punycode]]
,[CODE[[[zq--]]]]
[8] 現在有効な [[ACE接頭辞]]は [[Punycode]] を表す [CODE@en[[[xn--]]]] のみです。
それ以外は歴史的なものであり、既に使われていません。
* 用法
[10] [[ACE接頭辞]]である [CODE@en[[[xn--]]]] の後に
[[Punycode]] [[符号化]]した文字列を続けると、[[ACEラベル]] / [[Aラベル]]となります。
[11] [[ACE接頭辞]]からはじまる[[ラベル]]のすべてが[[ACEラベル]]ではありません。
しかし、混乱を招くため、 [[DNS]] [[ゾーン]]では [[ACE接頭辞]]を [[ACEラベル]]以外に使う[['''べきではありません''']]。
[SRC[>>4]]
* 接頭辞の変更
** 接頭辞の変更条件
[18] [[IDNA2008]] での改訂に当たって[[ACE接頭辞]]を変更するべきかどうか、変更するべき条件は何かが検討され、
[[RFC 5894]] にまとめられています。
[19] [[ACE接頭辞]]は、与えられた[[文字]]を [[lookup]] したり、その他解釈したりの結果が[[プロトコル]]や表の版によって変わってしまうとき、必要となります。
具体的には、次の4条件のいずれかが成立するとき、その時に限って、[[ACE接頭辞]]を変更する必要が生じます。
[SRC[>>17]]
- [20] [[Aラベル]]を[[Uラベル]]に変換する時、[[IDNA2003]] と [[IDNA2008]] で違う結果になる [SRC[>>17]]
- [21] [[IDNA2003]] と [[IDNA2008]] でそれぞれ[[妥当]]な[[文字列]]が別々の[[Aラベル]]に変換されることが著しく多い[SRC[>>17]]
-- [22] この条件は一部例外を除き、 >>20 と本質的に同じとみられている [SRC[>>17]]
-- [23] 一方で[[妥当]]で他方で[[妥当]]でない場合はこの条件には含まない [SRC[>>17]]
- [24] [[DNS]] に挿入される[[文字列]]の[[意味]]に根本的な変更が生じる [SRC[>>17]]
-- [25] 文字列だけでなく[[言語]]や[[用字系]]の情報も詰め込むなど [SRC[>>17]]
- [26] 極めて大量の[[文字]]が [[Unicode]] に追加され、 [[Punycode]] の block offset の仕組みが上の方の[[面]]で機能しなくなる [SRC[>>17]]
-- [27] これは長期的に見てもありそうにはないけれど [SRC[>>17]]
-- [28] [[Punycode]] の[[算法]]が[[桁溢れ]]するくらい大きな[[符号位置]]に[[文字]]が割り当てられるということ?
[29] 逆に、次のような状況では新しい[[ACE接頭辞]]が割り当てられることにはなりません。 [SRC[>>17]]
- [30] それまで認められていた[[文字]]の使用が禁止される [SRC[>>17]]
-- [31] 以前[[登録]]された名前にアクセスできなくなったとしても [SRC[>>17]]
- [32] [[IDNA2003]] において[[非妥当]]な[[文字]]に対する[[表]]などの変更 ([[正規化]]の変更を含む) [SRC[>>17]]
- [33] [[IDNA]] の動作に影響しない、定義の方法の変更 [SRC[>>17]]
** 接頭辞の変更コスト
[34] もし[[接頭辞]]を変更するとなると、既存の[[登録]]を必要なら変換する必要がありますし、
[[lookup]] は新旧両方に対応した上で片方で [[lookup]] して駄目なら他方で [[lookup]]
しなおすような手間が必要になります。1つの[[ドメイン名]]に含まれる[[ラベル]]に新旧混在する場合も考えると[[名前解決]]に非常に時間がかかるようになり、
[[DNS]] [[キャッシュ]]も困難になってしまいます。また、同じ入力が2種類の[[Aラベル]]になり得るとしたら混乱や攻撃に使われかねません。
[SRC[>>17]]
* 関連
[14] [[Punycode]] の [[ACE接頭辞]] [CODE[[[xn--]]]] から始まる [[LDHラベル]]
を [[XNラベル]]といいます。