⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc2168.txt

📁 bind-3.2.
💻 TXT
📖 第 1 页 / 共 4 页
字号:
RFC 2168            Resolution of URIs Using the DNS           June 1997   Order          A 16-bit integer specifying the order in which the NAPTR          records MUST be processed to ensure correct delegation of          portions of the namespace over time. Low numbers are processed          before high numbers, and once a NAPTR is found that "matches"          a URN, the client MUST NOT consider any NAPTRs with a higher          value for order.   Preference          A 16-bit integer which specifies the order in which NAPTR          records with equal "order" values SHOULD be processed, low          numbers being processed before high numbers.  This is similar          to the preference field in an MX record, and is used so domain          administrators can direct clients towards more capable hosts          or lighter weight protocols.   Flags          A String giving flags to control aspects of the rewriting and          interpretation of the fields in the record. Flags are single          characters from the set [A-Z0-9]. The case of the alphabetic          characters is not significant.          At this time only three flags, "S", "A", and "P", are defined.          "S" means that the next lookup should be for SRV records          instead of NAPTR records. "A" means that the next lookup          should be for A records. The "P" flag says that the remainder          of the resolution shall be carried out in a Protocol-specific          fashion, and we should not do any more DNS queries.          The remaining alphabetic flags are reserved. The numeric flags          may be used for local experimentation. The S, A, and P flags          are all mutually exclusive, and resolution libraries MAY          signal an error if more than one is given. (Experimental code          and code for assisting in the creation of NAPTRs would be more          likely to signal such an error than a client such as a          browser). We anticipate that multiple flags will be allowed in          the future, so implementers MUST NOT assume that the flags          field can only contain 0 or 1 characters. Finally, if a client          encounters a record with an unknown flag, it MUST ignore it          and move to the next record. This test takes precedence even          over the "order" field. Since flags can control the          interpretation placed on fields, a novel flag might change the          interpretation of the regexp and/or replacement fields such          that it is impossible to determine if a record matched a URN.Daniel & Mealling             Experimental                     [Page 11]RFC 2168            Resolution of URIs Using the DNS           June 1997   Service          Specifies the resolution service(s) available down this          rewrite path. It may also specify the particular protocol that          is used to talk with a resolver. A protocol MUST be specified          if the flags field states that the NAPTR is terminal. If a          protocol is specified, but the flags field does not state that          the NAPTR is terminal, the next lookup MUST be for a NAPTR.          The client MAY choose not to perform the next lookup if the          protocol is unknown, but that behavior MUST NOT be relied          upon.          The service field may take any of the values below (using the          Augmented BNF of RFC 822[9]):           service_field = [ [protocol] *("+" rs)]           protocol      = ALPHA *31ALPHANUM           rs            = ALPHA *31ALPHANUM        // The protocol and rs fields are limited to 32        // characters and must start with an alphabetic.        // The current set of "known" strings are:        // protocol      = "rcds" / "thttp" / "hdl" / "rwhois" / "z3950"        // rs            = "N2L" / "N2Ls" / "N2R" / "N2Rs" / "N2C"        //               / "N2Ns" / "L2R" / "L2Ns" / "L2Ls" / "L2C"          i.e. an optional protocol specification followed by 0 or more          resolution services. Each resolution service is indicated by          an initial '+' character.          Note that the empty string is also a valid service field. This          will typically be seen at the top levels of a namespace, when          it is impossible to know what services and protocols will be          offered by a particular publisher within that name space.          At this time the known protocols are rcds[7], hdl[10] (binary,          UDP-based protocols),  thttp[5] (a textual, TCP-based          protocol), rwhois[11] (textual, UDP or TCP based), and          Z39.50[12] (binary, TCP-based). More will be allowed later.          The names of the protocols must be formed from the characters          [a-Z0-9]. Case of the characters is not significant.          The service requests currently allowed will be described in          more detail in [6], but in brief they are:                N2L  - Given a URN, return a URL                N2Ls - Given a URN, return a set of URLs                N2R  - Given a URN, return an instance of the resource.                N2Rs - Given a URN, return multiple instances of the                       resource, typically encoded using                       multipart/alternative.Daniel & Mealling             Experimental                     [Page 12]RFC 2168            Resolution of URIs Using the DNS           June 1997                N2C  - Given a URN, return a collection of meta-                       information on the named resource. The format of                       this response is the subject of another document.                N2Ns - Given a URN, return all URNs that are also                       identifers for the resource.                L2R  - Given a URL, return the resource.                L2Ns - Given a URL, return all the URNs that are                       identifiers for the resource.                L2Ls - Given a URL, return all the URLs for instances of                       of the same resource.                L2C  - Given a URL, return a description of the                       resource.          The actual format of the service request and response will be          determined by the resolution protocol, and is the subject for          other documents (e.g. [5]). Protocols need not offer all          services. The labels for service requests shall be formed from          the set of characters [A-Z0-9]. The case of the alphabetic          characters is not significant.   Regexp          A STRING containing a substitution expression that is applied          to the original URI in order to construct the next domain name          to lookup. The grammar of the substitution expression is given          in the next section.   Replacement          The next NAME to query for NAPTR, SRV, or A records depending          on the value of the flags field. As mentioned above, this may          be compressed.Substitution Expression Grammar:================================   The content of the regexp field is a substitution expression. True   sed(1) substitution expressions are not appropriate for use in this   application for a variety of reasons, therefore the contents of the   regexp field MUST follow the grammar below:subst_expr   = delim-char  ere  delim-char  repl  delim-char  *flagsdelim-char   = "/" / "!" / ... (Any non-digit or non-flag character other               than backslash '\'. All occurances of a delim_char in a               subst_expr must be the same character.)ere          = POSIX Extended Regular Expression (see [13], section               2.8.4)repl         = dns_str /  backref / repl dns_str  / repl backrefdns_str      = 1*DNS_CHARbackref      = "\" 1POS_DIGITDaniel & Mealling             Experimental                     [Page 13]RFC 2168            Resolution of URIs Using the DNS           June 1997flags        = "i"DNS_CHAR     = "-" / "0" / ... / "9" / "a" / ... / "z" / "A" / ... / "Z"POS_DIGIT    = "1" / "2" / ... / "9"  ; 0 is not an allowed backrefvalue domain name (see RFC-1123 [14]).   The result of applying the substitution expression to the original   URI MUST result in a string that obeys the syntax for DNS host names   [14]. Since it is possible for the regexp field to be improperly   specified, such that a non-conforming host name can be constructed,   client software SHOULD verify that the result is a legal host name   before making queries on it.   Backref expressions in the repl portion of the substitution   expression are replaced by the (possibly empty) string of characters   enclosed by '(' and ')' in the ERE portion of the substitution   expression. N is a single digit from 1 through 9, inclusive. It   specifies the N'th backref expression, the one that begins with the   N'th '(' and continues to the matching ')'.  For example, the ERE                      (A(B(C)DE)(F)G)   has backref expressions:                      \1  = ABCDEFG                      \2  = BCDE                      \3  = C                      \4  = F                 \5..\9  = error - no matching subexpression   The "i" flag indicates that the ERE matching SHALL be performed in a   case-insensitive fashion. Furthermore, any backref replacements MAY   be normalized to lower case when the "i" flag is given.   The first character in the substitution expression shall be used as   the character that delimits the components of the substitution   expression.  There must be exactly three non-escaped occurrences of   the delimiter character in a substitution expression. Since escaped   occurrences of the delimiter character will be interpreted as   occurrences of that character, digits MUST NOT be used as delimiters.   Backrefs would be confused with literal digits were this allowed.   Similarly, if flags are specified in the substitution expression, the   delimiter character must not also be a flag character.Daniel & Mealling             Experimental                     [Page 14]RFC 2168            Resolution of URIs Using the DNS           June 1997Advice to domain administrators:================================   Beware of regular expressions. Not only are they a pain to get   correct on their own, but there is the previously mentioned   interaction with DNS. Any backslashes in a regexp must be entered   twice in a zone file in order to appear once in a query response.   More seriously, the need for double backslashes has probably not been   tested by all implementors of DNS servers. We anticipate that urn.net   will be the heaviest user of regexps. Only when delegating portions   of namespaces should the typical domain administrator need to use   regexps.   On a related note, beware of interactions with the shell when   manipulating regexps from the command line. Since '\' is a common   escape character in shells, there is a good chance that when you   think you are saying "\\" you are actually saying "\".  Similar   caveats apply to characters such as   The "a" flag allows the next lookup to be for A records rather than   SRV records. Since there is no place for a port specification in the   NAPTR record, when the "A" flag is used the specified protocol must   be running on its default port.   The URN Sytnax draft defines a canonical form for each URN, which   requires %encoding characters outside a limited repertoire. The   regular expressions MUST be written to operate on that canonical   form. Since international character sets will end up with extensive   use of %encoded characters, regular expressions operating on them   will be essentially impossible to read or write by hand.Usage=====   For the edification of implementers, pseudocode for a client routine   using NAPTRs is given below. This code is provided merely as a   convience, it does not have any weight as a standard way to process   NAPTR records. Also, as is the case with pseudocode, it has never   been executed and may contain logical errors. You have been warned.    //    // findResolver(URN)    // Given a URN, find a host that can resolve it.    //    findResolver(string URN) {      // prepend prefix to urn.net      sprintf(key, "%s.urn.net", extractNS(URN));      do {Daniel & Mealling             Experimental                     [Page 15]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -