RFC 2958 INFORMATIONAL MIME · DIRECTORY · WHOIS++

whoispp-response type: The application/whoispp-response Content-type

Registers a MIME type that carries Whois++ server answers, the other half of a Whois++ transaction in mail.

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

RFC text

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


             The application/whoispp-response 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 (RFC1835)
   responses within MIME (Multipurpose Internet Mail Extensions)
   (RFC2046) media types.  The intention of this document, in
   conjunction with RFC 2957 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-response

   MIME Type name:         Application

   MIME subtype name:      whoispp-response

   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-response Syntax

   The following grammar, which uses ABNF-like notation as defined in
   [RFC2234], defines a subset of responses expected from a Whois++
   server upon receipt of a valid Whois++ query.  As such, it describes
   the expected structure of a whoispp-response 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.

      server          =   goodmessage mnl output mnl endmessage nl
                          / badmessage nl endmessage nl

      output          =   full / abridged / summary / handle

      full            =   0*(full-record / server-to-ask)

      abridged        =   0*(abridged-record / server-to-ask)

      summary         =   summary-record

      handle          =   0*(handle-record / server-to-ask)

      full-record     =   "# FULL " template serverhandle localhandle
                                 system-nl
                          1*(fulldata system-nl)
                          "# END" system-nl

      abridged-record =   "# ABRIDGED " template serverhandle localhandle
                             system-nl
                          abridgeddata
                          "# END" system-nl

      summary-record  =  "# SUMMARY " serverhandle system-nl
                          summarydata
                          "# END" system-nl

      handle-record   =  "# HANDLE " template serverhandle localhandle
                                  system-nl

      server-to-ask   =   "# SERVER-TO-ASK " serverhandle system-nl
                          server-to-askdata
                          "# END" system-nl

      fulldata        =   " " attributename ": " attributevalue

      abridgeddata    =   " " 0*( attributevalue / tab )

      summarydata     =   " Matches: " number system-nl
                          [" Referrals: " number system-nl]
                          " Templates: " template 0*( system-nl "-"
                                                      template)

      server-to-ask-data = " Server-Handle:" serverhandle system-nl
                          " Host-Name: " hostname system-nl
                          " Host-Port: " number system-nl
                          [" Protocol: " prot system-nl]
                          0*(" " labelstring ": " labelstring system-nl)

      attributename   =   1*attrbyte

      attrbyte        =   <%d33-127 except specialbyte>

      attributevalue  =   longstring

      template        =   labelstring

      serverhandle    =   labelstring

      localhandle     =   labelstring

      hostname        =   labelstring

      prot            =   labelstring

      longstring      =   bytestring 0*( nl ( "+" / "-" ) bytestring )

      bytestring      =   0*charbyte

      labelstring     =   0*restrictedbyte
      restrictedbyte  =   <%d32-%d255 except specialbyte>

      charbyte        =   <%d32-%d255 except nl>

      specialbyte     =   ":" / " " / tab / nl

      tab             =   %d09

      mnl             =   1*system-nl

      system-nl       =   nl [ 1*(message nl) ]

      nl              =   %d13 %d10

      message         =   [1*( messagestart "-" bytestring nl)]
                          messagestart " " bytestring nl

      messagestart    =   "% " digit digit digit

      goodmessage     =   [1*( goodmessagestart "-" bytestring nl)]
                          goodmessagestart " " bytestring nl

      goodmessagestart=   "% 200"

      messagestart    =   "% " digit digit digit

      badmessage      =   [1*( badmessagestart "-" bytestring nl)]
                          badmessagestart " " bytestring nl

      badmessagestart =   "% 5" digit digit

      endmessage      =   endmessageclose

      endmessageclose =   [endmessagestart " " bytestring nl]
                          byemessage

      endmessagestart =   "% 226"

      byemessage      =   byemessagestart " " bytestring nl

      endmessagestart =   "% 203"

      number          =   1*( digit )

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

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.

   [RFC2957] Daigle, L. and P. Faltstrom, "The application/whoispp-query
             Content-Type", RFC 2957, October 2000.

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

   [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.

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++ answers 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-response and gives an ABNF grammar for a subset of the responses a Whois++ server sends back to a valid query.
WHY IT MATTERSTogether with RFC 2957, which covers the queries, MIME software can carry complete Whois++ transactions. The type has no native authentication.

§1What the Type Is For

RFC 2958 defines how responses of the Whois++ protocol (RFC 1835) are expressed as a MIME media type (RFC 2046). Together with RFC 2957, which defines the query type, it is meant to let MIME-enabled mail software and other systems that use Internet media types carry out Whois++ transactions.

The questions have their own label in the sister memo. This memo labels the answers that come back.

§2The MIME Registration

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

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

§3Response Structure

The grammar uses the ABNF-like notation of RFC 2234 and defines a subset of the responses expected from a Whois++ server after a valid query. A server response is either a good message, then the output, then an end message, or a bad message followed by an end message. Lines end with CR LF.

The output is one of four forms, matching the query's format constraint: full, abridged, summary or handle. Full, abridged and handle output can also include server-to-ask records that refer the client to another server.

Each record is a block that starts with a marker line and ends with an END line. The markers are the words FULL, ABRIDGED, SUMMARY, HANDLE and SERVER-TO-ASK, each written after a hash sign. Full records hold attribute name and value lines; a summary record reports Matches, an optional Referrals count and the templates; a server-to-ask record gives the server handle, host name, host port and optionally a protocol.

An answer is a stack of cards. Each card starts with a title line, lists its facts, and ends with a line saying END.

RECORD AND SERVER RULES (RFC 2958 SECTION 2)
Response grammar (excerpt)
server          =   goodmessage mnl output mnl endmessage nl
                    / badmessage nl endmessage nl

output          =   full / abridged / summary / handle

full-record     =   "# FULL " template serverhandle localhandle
                           system-nl
                    1*(fulldata system-nl)
                    "# END" system-nl

summary-record  =  "# SUMMARY " serverhandle system-nl
                    summarydata
                    "# END" system-nl

§4Status Messages

Response lines that start with % and a three-digit number carry status messages, which may be several lines long. A good response begins with a % 200 message, while a bad response begins with a message starting % 5 followed by two digits. The grammar also lists % 226 and % 203 as start markers for the closing messages.

The syntax allows such messages to appear between records, so a client can separate data lines from status lines by the leading %.

Lines beginning with a percent sign are notes from the server, like "all good" at the start or a goodbye at the end.

§5Security Considerations

The type carries purely descriptive information with no directives. The RFC notes concerns about the appropriateness (privacy) of the information provided and about its authenticity, and says the content type provides no native mechanisms for authentication.

The label does not prove an answer is true or that it is safe to share, so those checks have to happen elsewhere.

§6References