📄 draft-ietf-idn-idne-02.txt
字号:
Internet Draft Marc Blanchetdraft-ietf-idn-idne-02.txt ViagenieMarch 19, 2001 Paul HoffmanExpires in six months IMC & VPNC Internationalized domain names using EDNS (IDNE)Status of this MemoThis document is an Internet-Draft and is in full conformance with allprovisions of Section 10 of RFC2026.Internet-Drafts are working documents of the Internet Engineering TaskForce (IETF), its areas, and its working groups. Note that other groupsmay also distribute working documents as Internet-Drafts.Internet-Drafts are draft documents valid for a maximum of six monthsand may be updated, replaced, or obsoleted by other documents at anytime. It is inappropriate to use Internet-Drafts as reference materialor to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html.AbstractThe current DNS infrastructure does not provide a way to useinternationalized domain names (IDN). This document describes anextension mechanism based on EDNS which enables the use of IDN withoutcausing harm to the current DNS. IDNE enables IDN host names with a asmany characters as current ASCII-only host names. It fully supportsUTF-8 and conforms to the IDN requirements.1. IntroductionVarious proposals for IDN have tried to integrate IDN into the currentlimited ASCII DNS. However, the compatibility issues make too manyconstraints on the architecture. Many of these proposals requiremodifications to the applications or to the DNS protocol or to theservers. This proposal take a different approach: it uses thestandardized extension mechanism for DNS (EDNS) and uses UTF-8 as themandatory charset. It causes no harm to the current DNS because it usesthe EDNS extension mechanism. The major drawback of this proposal isthat all protocols, applications and DNS servers will have to beupgraded to support this proposal.1.1 TerminologyThe key words "MUST", "SHALL", "REQUIRED", "SHOULD", "RECOMMENDED", and"MAY" in this document are to be interpreted as described in RFC 2119[RFC2119].Hexadecimal values are shown preceded with an "0x". For example,"0xa1b5" indicates two octets, 0xa1 followed by 0xb5. Binary values areshown preceded with an "0b". For example, a nine-bit value might beshown as "0b101101111".Examples in this document use the notation from the Unicode Standard[UNICODE3] as well as the ISO 10646 [ISO10646] names. For example, theletter "a" may be represented as either "U+0061" or "LATIN SMALL LETTERA". In the lists of prohibited characters, the "U+" is left off to makethe lists easier to read.1.2 IDN summaryUsing the terminology in [IDNCOMP], this protocol specifies an IDNarchitecture of arch-2 (send binary or ACE). The binary format isbin-1.1 (UTF-8), and the method for distinguishing binary from currentnames is bin-2.4 (mark binary with EDNS0). The transition period is notspecified.2. Functional DescriptionDNS query and responses containing IDNE labels have the followingproperties:- The string in the label MUST be pre-processed as described in[NAMEPREP] before the query or response is prepared.- The characters in the label MUST be encoded using UTF-8 [RFC2279].- The entire label MUST be encoded EDNS [RFC2671].- The version of the IDN protocol MUST be identified.3. EncodingAn IDNE label uses the EDNS extended label type prefix (0b01), asdescribed in [RFC2671]. (A normal label type always begin with 0b00). Anew extended label type for IDNE is used to identify an IDNE label. Thisdocument uses 0b000010 as the extended label type; however, the labeltype will be assigned by IANA and it may not be 0b000010. 0 1 2bits 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-//+-+-+-+-+-+-+ |0 1| ELT | Size | IDN label ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+//-+-+-+-+-+-+-+ELT: The six-bit extended label type to be assigned by the IANA for anIDN label. In this document, the value 0b000010 is used, although thatmight be changed by IANA.Size: Size (in octets) of the IDN label following. This MUST NOTbe zero.IDN label: Label, encoded in UTF-8 [RFC2279]. Note that this label mightcontain all ASCII characters, and thus can be used for host name labelsthat are legal in [STD13].IDNE labels can be mixed with STD13 labels in a domain name.The compression scheme in section 4.1.4 of [STD13] is supported as is.Pointers can refer to either IDN labels or non-IDN labels.3.1 Examples3.1.1 Basic exampleThe following example shows the label me.com where the "e" in "me" isreplaced by a <LATIN CAPITAL LETTER E WITH ACUTE>, which is U+00C9. Thedecomposition and downcasing specified in [NAMEPREP] changes the secondcharacter to <LATIN SMALL LETTER E WITH ACUTE>, U+00E9. This string isthen transformed using UTF-8 [RFC2279] to 0x6DC3A9.Ignoring the other fields of the message, the domain name portion of thedatagram could look like: +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 20 | 0 1 0 0 0 0 1 0| 0 0 0 0 0 0 1 1| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 22 | 0x6D (m) | 0xC3 (e'(1)) | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 24 | 0xA9 (e'(2)) | 3 | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 26 | 0x63 (c) | 0x6F (o) | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 28 | 0x6D (m) | 0x00 | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+Octet 20 means EDNS extended label type (0b01) using the IDN label type (0b000010)Octet 21 means size of label is 3 octets followingOctet 22-24 are the "m*" label encoded in UTF-8Octet 25-28 are "com" encoded as a STD13 labelOctet 29 is the root domain3.1.2 Example with compressionUsing the previous labels, one datagram might contain "www.m*.com" and"m*.com" (where the "*" is <LATIN CAPITAL LETTER E WITH ACUTE>).Ignoring the other fields of the message, the domain name portions ofthe datagram could look like: +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 20 | 0 1 0 0 0 0 1 0| 0 0 0 0 0 0 1 1| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 22 | 0x6D (m) | 0xC3 (e'(1)) | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 24 | 0xA9 (e'(2)) | 3 | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 26 | 0x63 (c) | 0x6F (o) | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 28 | 0x6D (m) | 0x00 | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ . . . +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 40 | 3 | 0x77 (w) | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 42 | 0x77 (w) | 0x77 (w) | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 44 | 1 1| 20 | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+The domain name "m*.com" is shown at offset 20. The domain name"www.m*.com" is shown at offset 40; this definition uses a pointer toconcatenate a label for www to the previously defined "m*.com".4. Label SizeIn IDNE, the maximum length of a label is 255 octets, and the maximumsize for a domain name is 1023 octets. The reason for using these valuesis so that IDNE labels can have the same number of characters as theASCII-based labels in [STD13]. Because character encoding in UTF-8 isvariable length, the maximum octet length for characters expected in theforeseeable future (that is, 4 octets for a single character) was used.Note that this extension allows some IDNE labels to be longer than 63characters and some IDNE names to be longer than 255 octets.Software creating DNS queries or responses using IDNE MUST verify that,after IDN preparation and transformation to UTF8, that no labels arelonger than 255 octets and that no names are longer than 1023 octets. Ifthere is a user interface associated with the process creating the queryor response, that interface SHOULD give the user an error message.Software MUST NOT transmit DNS queries or responses which contain labelsthat are longer than 255 octets or names that are longer than 1023octets. Servers MUST NOT accept DNS queries or responses which containlabels that are longer than 255 octets or names that are longer than1023 octets, and MUST send the NOTIMPL RCODE error message if suchqueries or responses are received.5. UDP Packet Size
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -