RFC 2957 INFORMATIONAL MIME · DIRECTORY · WHOIS++

whoispp-query type: The application/whoispp-query Content-Type

Registers a MIME type that carries Whois++ queries, so email and other MIME systems can ask Whois++ questions.

On rfc-editor.org ↗
PUBLISHED
October 2000
AUTHORS
L. Daigle, P. Faltstrom
STREAM
Legacy
MEDIA TYPE
application/whoispp-query
REQUIRED PARAMETERS
none
OPTIONAL PARAMETERS
none
INTENDED USAGE
common
DOI
10.17487/RFC2957

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                           L. Daigle
Request for Comments: 2957                       Thinking Cat Enterprises
Category: Informational                                      P. Faltstrom
                                                       Cisco Systems Inc.
                                                             October 2000


               The application/whoispp-query Content-Type

Status of this Memo

   This memo provides information for the Internet community.  It does
   not specify an Internet standard of any kind.  Distribution of this
   memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (2000).  All Rights Reserved.

Abstract

   This document defines the expression of Whois++ protocol (RFC 1835)
   queries within MIME (Multipurpose Internet Mail Extensions) (RFC
   2046) media types.  The intention of this document, in conjunction
   with RFC 2958 is to enable MIME-enabled mail software, and other
   systems using Internet media types, to carry out Whois++
   transactions.

1.  MIME Registration Information

   To: iana@isi.edu
   Subject:  Registration of MIME media type application/whoispp-query

   MIME Type name:         Application

   MIME subtype name:      whoispp-query

   Required parameters:    none

   Optional parameters:    none

   Encoding considerations: Any valid MIME encodings may be used

   Security considerations: This content-type contains purely
   descriptive information (i.e., no directives).  There are security
   considerations with regards to the appropriateness (privacy) of
   information provided through the use of this content-type, and the
   authenticity of the information so-provided.  This content-type
   provides no native mechanisms for authentication.

   Published specification:  this document

   Person & email address to contact for further information:

                           Leslie L. Daigle
                           leslie@thinkingcat.com

   Intended usage:         common

2.  whoispp-query Syntax

   The following grammar, which uses BNF-like notation as defined in
   [RFC2234] defines the set of acceptable input to a Whois++ server.
   As such, it describes the expected structure of a whoispp-query media
   type object.

   N.B.:  As outlined in the ABNF definition, rule names and string
   literals are in the US-ASCII character set, and are case-insensitive.

   whois-command   =   ( system-command / terms [":" globalcnstrnts] )
                       nl

   system-command  =   "constraints" / "describe" / "commands" /
                       "polled-by" / "polled-for" / "version" / "list" /
                       "show" [1*sp bytestring] / "help" [1*sp
                       bytestring] / "?" [bytestring]

   terms           =   and-expr *("or" and-expr)

   and-expr        =   not-expr *("and" not-expr)

   not-expr        =   ["not"] (term / ( "(" terms ")" ))

   term            =   ( generalterm / specificterm / combinedterm )
                       localcnstrnts

   generalterm     =   bytestring

   specificterm    =   specificname "=" bytestring

   specificname    =   "handle" / "value" / "template"

   combinedterm    =   attributename "=" bytestring

   globalcnstrnts  =   globalcnstrnt *(";" globalcnstrnt)
   globalcnstrnt   =   "format" "=" format / "maxfull" "=" 1*digit /
                       "maxhits" "=" 1*digit / "case" "=" casevalue /
                       "search" "=" searchvalue / opt-globalcnst

   opt-globalcnst  =   "authenticate" "=" auth-method / "language" "="
                       language / "incharset" "=" characterset /
                       "outcharset" "=" characterset / "ignore" "="
                       attriblist / "include" "=" attriblist

   localcnstrnts   =   0*(";" localcnstrnt)

   localcnstrnt    =   "case" "=" casevalue / "search" "=" searchvalue

   format          =   "full" / "abridged" / "handle" / "summary" /
                       "server-to-ask"

   auth-method     =  bytestring

   language        = <The language code defined in RFC1766 [ALVE95]>

   characterset    =   "us-ascii" / "iso-8859-1" / "iso-8859-2" / "iso-
                       8859-3" / "iso-8859-4" / "iso-8859-5" / "iso-
                       8859-6" / "iso-8859-7" / "iso-8859-8" / "iso-
                       8859-9" / "iso-8859-10" / "UNICODE-1-1-UTF-8" /
                       "UNICODE-2-0-UTF-8" "UTF-8"

                         ;"UTF-8" is as defined in [RFC2279].  This is
                         ;the character set label that should be used
                         ;for UTF encoded information; the labels
                         ;"UNICODE-2-0-UTF-8" and "UNICODE-1-1-UTF-8"
                         ;are retained primarily for compatibility with
                         ;older Whois++ servers (and as outlined in
                         ;[RFC2279]).

   searchvalue     =   "exact" / "substring" / "regex" / "fuzzy" /
                       "lstring"

   casevalue       =   "ignore" / "consider"

   bytestring      =   0*charbyte

   attributename   =   1*attrbyte

   attriblist      =   attributename 0*("," attributename)

   charbyte        =   "\" specialbyte / normalbyte

   normalbyte      =   <%d33-255, except specialbyte>
   attrbyte        =   <%d33-127 except specialbyte> /
                                              "\" <specialbyte except
                       ":" " " tab nl>

   specialbyte     =   " " / tab / "=" / "," / ":" / ";" / "\" /
                                              "*" / "." / "(" / ")" /
                       "[" / "]" / "^" /
                                              "$" / "!" / "?"

   tab             =  %d09
   sp              =  %d32        ; space

   digit           =   "0" / "1" / "2" / "3" / "4" /
                                              "5" / "6" / "7" / "8" /
                       "9"

   nl              =   %d13 %d10   ; CR LF

   NOTE: Blanks that are significant to a query must be escaped.  The
   following characters, when significant to the query, may be preceded
   and/or followed by a single blank:

     : ; , ( ) = !

3.  Security Considerations

   Security issues are discussed in section 1.

4.  References

   [ALVE95]  Alvestrand H., "Tags for the Identification of Languages",
             RFC 1766, March 1995.

   [RFC2234] Crocker, D. and P. Overell,  "Augmented BNF for Syntax
             Specifications: ABNF", RFC 2234, November 1997.

   [RFC2958] Daigle, L. and P. Faltstrom, "The application/whoispp-
             response Content-type", RFC 2958, October 2000.

   [RFC1835] Deutsch, P., Schoultz, R., Faltstrom, P. and C.  Weider,
             "Architecture of the WHOIS++ service", RFC 1835, August
             1995.

   [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
             Extensions (MIME) Part Two: Media Types", RFC 2046,
             November 1996.

   [HARR85]  Harrenstein K., Stahl M. and E. Feinler, "NICNAME/WHOIS",
             RFC 954, October 1985.

   [POST82]  Postel J., "Simple Mail Transfer Protocol", STD 10, RFC
             821, August 1982.

   [IIIR]    Weider C. and P. Deutsch, "A Vision of an Integrated
             Internet Information Service", RFC 1727, December 1994.

   [WINDX]   Weider, C., Fullton, J. and S. Spero, "Architecture of the
             Whois++ Index Service", RFC 1913, February 1996.

   [RFC2279] Yergeau F., " UTF-8, a transformation format of ISO 10646",
             RFC 2279, January 1998.

5.  Authors' Addresses

   Leslie L. Daigle
   Thinking Cat Enterprises

   Email:  leslie@thinkingcat.com


   Patrik Faltstrom
   Cisco Systems Inc
   170 W Tasman Drive SJ-13/2
   San Jose CA 95134
   USA

   EMail: paf@cisco.com
   URL:   http://www.cisco.com

6.  Full Copyright Statement

   Copyright (C) The Internet Society (2000).  All Rights Reserved.

   This document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain it
   or assist in its implementation may be prepared, copied, published
   and distributed, in whole or in part, without restriction of any
   kind, provided that the above copyright notice and this paragraph are
   included on all such copies and derivative works.  However, this
   document itself may not be modified in any way, such as by removing
   the copyright notice or references to the Internet Society or other
   Internet organizations, except as needed for the purpose of
   developing Internet standards in which case the procedures for
   copyrights defined in the Internet Standards process must be
   followed, or as required to translate it into languages other than
   English.

   The limited permissions granted above are perpetual and will not be
   revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Acknowledgement

   Funding for the RFC Editor function is currently provided by the
   Internet Society.

AI ELI5

On this page
PROBLEMWhois++ queries had no standard way to travel inside MIME-aware mail software and other systems that use Internet media types.
MECHANISMThe memo registers the media type application/whoispp-query and gives an ABNF grammar for the set of acceptable Whois++ server input, which is what a query object contains.
WHY IT MATTERSTogether with RFC 2958, which covers the answers, MIME software can carry complete Whois++ transactions. The type has no native authentication.

§1What the Type Is For

RFC 2957 defines how queries of the Whois++ protocol (RFC 1835) are expressed as a MIME media type (RFC 2046). Its stated aim, together with RFC 2958, is to let MIME-enabled mail software, and other systems that use Internet media types, carry out Whois++ transactions.

This memo covers the question half of the exchange. The answers are covered by the companion type, application/whoispp-response.

One memo labels the questions and its sister memo labels the answers, so mail programs can carry both.

§2The MIME Registration

Section 1 of the RFC is a registration template addressed to IANA. The type name is application and the subtype is whoispp-query. There are no required parameters and no optional parameters, and any valid MIME encodings may be used. The published specification is the RFC itself, the contact is the first author, and the intended usage is common.

This is the form that gets the new label added to the official list of labels.

§3Query Syntax

The grammar, written in the ABNF of RFC 2234, defines the acceptable input to a Whois++ server, and so the structure of a whoispp-query object. Rule names and string literals are US-ASCII and case-insensitive.

A command is either a system-command (such as constraints, describe, commands, version, list, show, help or ?) or search terms optionally followed by a colon and global constraints, ending in a CR LF. Terms combine with or, and and not, and parentheses can group them. A term can be a general string, or a specific one such as handle=, value= or template=, or an attribute name with a value.

Blanks that matter to a query must be escaped. A few characters, namely : ; , ( ) = !, may be preceded or followed by a single blank when significant.

The grammar is the rulebook for how to word a question so the server understands it, such as "find this AND that".

TOP-LEVEL QUERY RULES (RFC 2957 SECTION 2)
Query grammar (excerpt)
whois-command   =   ( system-command / terms [":" globalcnstrnts] )
                    nl

terms           =   and-expr *("or" and-expr)

and-expr        =   not-expr *("and" not-expr)

not-expr        =   ["not"] (term / ( "(" terms ")" ))

specificname    =   "handle" / "value" / "template"

§4Constraints on a Search

Constraints shape how a search runs. Global constraints, after the colon and separated by semicolons, include format (full, abridged, handle, summary or server-to-ask), maxfull, maxhits, case and search. Optional global constraints add authenticate, language, incharset, outcharset, ignore and include.

Local constraints attach to a single term and are limited to case (ignore or consider) and search (exact, substring, regex, fuzzy or lstring). Character sets include us-ascii, the iso-8859 family and UTF-8; the older UTF-8 labels are kept for compatibility with older Whois++ servers.

Constraints are extra instructions on the question, like "only give me five answers" or "match the spelling exactly".

§5Security Considerations

The type carries purely descriptive information with no directives. The RFC notes security concerns about the appropriateness (privacy) of the information provided and about the authenticity of that information. The content type provides no native mechanisms for authentication, although the grammar has an optional authenticate constraint that names a method.

The label does not prove who sent a question, so anyone handling private information has to be careful.

§6References