RFC 2958

The application/whoispp-response Content-type

πŸ“… published October 2000, from ietf

RFC 2958: The application/whoispp-response Content-type πŸŽ€

okay bestie, this one is a whole vibe πŸ’– it's an Informational doc (so it's not a standard, just info) written by Leslie L. Daigle (Thinking Cat Enterprises) and Patrik Faltstrom (Cisco Systems Inc.), dated October 2000. It doesn't obsolete or update anything, since there's no Obsoletes or Updates line in the title block. It's about how Whois++ responses get wrapped up as a MIME type so mail software can carry them around πŸ“¬

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 (C) The Internet Society (2000). All Rights Reserved.

Abstract πŸ¦‹

ok so this doc defines how Whois++ protocol responses (RFC1835) get expressed inside MIME media types (RFC2046). the goal, together with RFC 2957, is to let MIME-enabled mail software, and other systems using Internet media types, actually do Whois++ transactions. main character energy for mail clients πŸ’…

1. MIME Registration Information πŸ“

this is the registration form, sent to IANA, for the new media type. here's how it looks:

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

so the vibe check: it has no required or optional parameters, any valid MIME encoding is fine 🫢 and the content is purely descriptive, no directives. but 😭 privacy and authenticity are real concerns, and there's zero built-in authentication. just saying.

2. whoispp-response Syntax 🧚

this grammar uses ABNF-like notation from [RFC2234] and describes a subset of the responses a Whois++ server is expected to send back after getting a valid Whois++ query. so it's basically the expected shape 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. don't forget this one, it matters ✨

here's the whole grammar, exactly as it is:

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. go read that section again, it's the important bit πŸ‘‘

4. References πŸ“š

these are all the sources the doc cites, every one of them:

[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 πŸ’Œ

the two authors and how to reach them:

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

the legal bits, kept complete. the gist: you can copy and share this document, and make derivative works that comment on or explain it or help implement it, as long as the copyright notice and this paragraph stay on every copy 🌈

the doc itself can't be modified in any way, such as removing the copyright notice or references to the Internet Society or other Internet organizations. the exceptions are developing Internet standards (in which case the Internet Standards process copyright procedures must be followed) or translating it into languages other than English.

the permissions are perpetual and won't be revoked by the Internet Society or its successors or assigns.

the document and the information in it are 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. thank you, legends πŸ“

πŸ“¦ where this page comes from