summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc1835.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc1835.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc1835.txt')
-rw-r--r--doc/rfc/rfc1835.txt2299
1 files changed, 2299 insertions, 0 deletions
diff --git a/doc/rfc/rfc1835.txt b/doc/rfc/rfc1835.txt
new file mode 100644
index 0000000..e7e68b6
--- /dev/null
+++ b/doc/rfc/rfc1835.txt
@@ -0,0 +1,2299 @@
+
+
+
+
+
+
+Network Working Group P. Deutsch
+Request for Comments: 1835 BUNYIP INFORMATION SYSTEMS, Inc.
+Category: Standards Track R. Schoultz
+ KTHNOC
+ P. Faltstrom
+ BUNYIP INFORMATION SYSTEMS, Inc.
+ C. Weider
+ BUNYIP INFORMATION SYSTEMS, Inc.
+ August 1995
+
+
+ Architecture of the WHOIS++ service
+
+Status of this Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Abstract
+
+ This document describes WHOIS++, an extension to the trivial WHOIS
+ service described in RFC 954 to permit WHOIS-like servers to make
+ available more structured information to the Internet. We describe
+ an extension to the simple WHOIS data model and query protocol and a
+ companion extensible, distributed indexing service. A number of
+ options have also been added such as the use of multiple languages
+ and character sets, more advanced search expressions, structured data
+ and a number of other useful features. An optional authentication
+ mechanism for protecting all or part of the associated WHOIS++
+ information database from unauthorized access is also described.
+
+Table of Contents
+
+ Part I - WHOIS++ Overview ................................. 3
+ 1.1. Purpose and Motivation .............................. 3
+ 1.2. Basic Information Model ............................. 4
+ 1.2.1. Changes to the current WHOIS Model ................ 5
+ 1.2.2. Registering WHOIS++ servers ....................... 5
+ 1.2.3. The WHOIS++ Search Selection Mechanism ............ 7
+ 1.2.4. The WHOIS++ Architecture .......................... 7
+ 1.3. Indexing in WHOIS++ ................................. 8
+ 1.4. Getting Help ........................................ 9
+ 1.4.1. Minimum HELP Required ............................. 9
+ 1.5. Options and Constraints ............................. 10
+ 1.6. Formatting Responses ................................ 10
+
+
+
+Deutsch, et al Standards Track [Page 1]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ 1.7. Reporting Warnings and Errors ....................... 11
+ 1.8. Privacy and Security Issues ......................... 11
+ Part II - WHOIS++ Implementation .......................... 12
+ 2.1. The WHOIS++ interaction model ....................... 12
+ 2.2. The WHOIS++ Command set ............................. 12
+ 2.2.1. System Commands ................................... 13
+ 2.2.1.1. The COMMANDS command ............................ 14
+ 2.2.1.2. The CONSTRAINTS command ......................... 15
+ 2.2.1.3. The DESCRIBE command ............................ 15
+ 2.2.1.4. The HELP command ................................ 15
+ 2.2.1.5. The LIST command ................................ 15
+ 2.2.1.6. The POLLED-BY command ........................... 15
+ 2.2.1.7. The POLLED-FOR command .......................... 16
+ 2.2.1.8. The SHOW command ................................ 16
+ 2.2.1.9. The VERSION command ............................. 16
+ 2.2.2. The Search Command ................................ 16
+ 2.2.2.1. Format of a Search Term ......................... 17
+ 2.2.2.2. Format of a Search String ....................... 18
+ 2.3. WHOIS++ Constraints ................................. 19
+ 2.3.1. Required Constraints .............................. 20
+ 2.3.2. Optional CONSTRAINTS .............................. 21
+ 2.3.2.1. The SEARCH Constraint ........................... 22
+ 2.3.2.2. The FORMAT Constraint ........................... 22
+ 2.3.2.3. The MAXFULL Constraint .......................... 22
+ 2.3.2.4. The MAXHITS Constraint .......................... 23
+ 2.3.2.5. The CASE Constraint ............................. 23
+ 2.3.2.6. The AUTHENTICATE Constraint ..................... 23
+ 2.3.2.7. The NAME Constraint ............................. 23
+ 2.3.2.8. The PASSWORD Constraint ......................... 23
+ 2.3.2.9. The LANGUAGE Constraint ......................... 23
+ 2.3.2.10. The INCHARSET Constraint ....................... 24
+ 2.3.2.11. The IGNORE Constraint .......................... 24
+ 2.3.2.12. The INCLUDE Constraint ......................... 24
+ 2.4. Server Response Modes ............................... 24
+ 2.4.1. Default Responses ................................. 25
+ 2.4.2. Format of Responses ............................... 25
+ 2.4.3. Syntax of a Formatted Response .................... 26
+ 2.4.3.1. A FULL format response .......................... 26
+ 2.4.3.2. ABRIDGED Format Response ........................ 27
+ 2.4.3.3. HANDLE Format Response .......................... 27
+ 2.4.3.4. SUMMARY Format Response ......................... 27
+ 2.4.3.5. SERVERS-TO-ASK Response ......................... 28
+ 2.4.4. System Generated Messages ......................... 28
+ 2.5. Compatibility with Older WHOIS Servers .............. 29
+ 3. Miscellaneous ......................................... 29
+ 3.1. Acknowledgements .................................... 29
+ 3.2. References .......................................... 29
+ 3.3. Authors' Addresses .................................. 30
+
+
+
+Deutsch, et al Standards Track [Page 2]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ Appendix A - Some Sample Queries .......................... 31
+ Appendix B - Some sample responses ........................ 31
+ Appendix C - Sample responses to system commands .......... 33
+ Appendix D - Sample whois++ session ....................... 35
+ Appendix E - System messages .............................. 36
+ Appendix F - The WHOIS++ BNF Grammar ...................... 38
+ Appendix G - Description of Regular expressions ........... 40
+
+1. Part I - WHOIS++ Overview
+
+1.1. Purpose and Motivation
+
+ The current NIC WHOIS service [HARR85] is used to provide a very
+ limited directory service, serving information about a small number
+ of Internet users registered with the DDN NIC. Over time the basic
+ service has been expanded to serve additional information and similar
+ services have also been set up on other hosts. Unfortunately, these
+ additions and extensions have been done in an ad hoc and
+ uncoordinated manner.
+
+ The basic WHOIS information model represents each individual record
+ as a Rolodex-like collection of text. Each record has a unique
+ identifier (or handle), but otherwise is assumed to have little
+ structure. The current service allows users to issue searches for
+ individual strings within individual records, as well as searches for
+ individual record handles using a very simple query-response
+ protocol.
+
+ Despite its utility, the current NIC WHOIS service cannot function as
+ a general White Pages service for the entire Internet. Given the
+ inability of a single server to offer guaranteed response or
+ reliability, the huge volume of traffic that a full scale directory
+ service will generate and the potentially huge number of users of
+ such a service, such a trivial architecture is obviously unsuitable
+ for the current Internet's needs for information services.
+
+ This document describes the architecture and protocol for WHOIS++, a
+ simple, distributed and extensible information lookup service based
+ upon a small set of extensions to the original WHOIS information
+ model. These extensions allow the new service to address the
+ community's needs for a simple directory service, yet the extensible
+ architecture is expected to also allow it to find application in a
+ number of other information service areas.
+
+ Added features include an extension to the trivial WHOIS data model
+ and query protocol and a companion extensible, distributed indexing
+ service. A number of other options have also been added, like boolean
+ operators, more powerful search constraints and search methods, and
+
+
+
+Deutsch, et al Standards Track [Page 3]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ most specificly structured the data to make both the client and the
+ server part of the dialogue more stringent and parseable. An optional
+ authentication mechanism for protecting all or parts of the
+ associated WHOIS++ information database from unauthorized access is
+ also briefly described.
+
+ The basic architecture of WHOIS++ allows distributed maintenance of
+ the directory contents and the use of the WHOIS++ indexing service
+ for locating additional WHOIS++ servers. Although a general overview
+ of this service is included for completeness, the indexing extensions
+ are described in a separate paper.
+
+1.2. Basic Information Model
+
+ The WHOIS++ service is centered in a recommendation to structure user
+ information around a series of standardized information templates.
+ Such templates consist of ordered sets of data elements (or
+ attribute-value pairs).
+
+ It is intended that adding such structured templates to a server and
+ subsequently identifying and searching them be simple tasks. The
+ creation and use of customized templates should also be possible with
+ little effort, although their use should be discouraged where
+ appropriate standardized templates exist.
+
+ We also offer methods to allow the user to constrain searches to
+ desired attributes or template types, in addition to the existing
+ commands for specifying handles or simple strings.
+
+ It is expected that the minimalist approach we have taken will find
+ application where the high cost of configuring and operating
+ traditional White Pages services can not currently be justified.
+
+ Also note that the architecture makes no assumptions about the search
+ and retrieval mechanisms used within individual servers. Operators
+ are free to use dedicated database formats, fast indexing software or
+ even provide gateways to other directory services to store and
+ retrieve information, if desired.
+
+ The WHOIS++ server simply functions as a known front end, offering a
+ simple data model and communicating through a well known port and
+ query protocol. The format of both queries and replies has been
+ structured to allow the use of client software for generating
+ searches and displaying the results. At the same time, some effort
+ has been made to keep responses at least to some degree readible by
+ humans, to ensure low entry cost and to ease debugging.
+
+
+
+
+
+Deutsch, et al Standards Track [Page 4]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ The actual implemention details of an individual WHOIS++ search
+ engine are left to the imagination of the implementor and it is hoped
+ that the simple, extensible approach taken will encourage
+ experimentation and the development of improved search engines.
+
+1.2.1. Changes to the current WHOIS Model
+
+ The current WHOIS service is based upon an extremely simple data
+ model. The NIC WHOIS database consists of a series of individual
+ records, each of which is identified by a single unique identifer
+ (the "handle"). Each record contains one or more lines of
+ information. Currently, there is no structure or implicit ordering of
+ this information, although by implication each record is concerned
+ with information about a single user or service.
+
+ We have implemented two basic changes to this model. First, we have
+ structured the information within the database as collections of data
+ elements, or simple attribute/value pairs. Each individual record
+ contains a specified ordered set of these data elements.
+
+ Secondly, we have introduced typing of the database records. In
+ effect, each record is based upon one of a specified set of
+ templates, each containing a finite and specified number of data
+ elements. This allow users to easily limit searches to specific
+ collections of information, such as information about users,
+ services, abstracts of papers, descriptions of software, and so on.
+
+ As a final extension, we require that each individual WHOIS++
+ database on the Internet be assigned a unique handle, analogous to
+ the handle associated with each database record.
+
+ The WHOIS++ database structure is shown in Fig. 1.
+
+1.2.2. Registering WHOIS++ servers
+
+ We propose that individual database handles be registered through the
+ Internet Assigned Numbers Authority (the IANA), ensuring their
+ uniqueness. This will allow us to specify each WHOIS++ entry on the
+ Internet as a unique pair consisting of a server handle and a record
+ handle.
+
+ A unique registered handle is preferable to using the host's IP
+ address, since it is conceivable that the WHOIS++ server for a
+ particular domain may move over time. If we preserve the unique
+ WHOIS++ handle in such cases we have the option of using it for
+ resource discovery and networked information retrieval (see [IIIR]
+ for a discussion of resource and discovery and support issues).
+
+
+
+
+Deutsch, et al Standards Track [Page 5]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ There are many ways of guaranteeing uniqueness of server handles; we
+ will discuss them in a separate paper.
+
+ We believe that organizing information around a series of such
+ templates will make it easier for administrators to gather and
+ maintain this information and thus encourage them to make such
+ information available. At the same time, as users become more
+ familiar with the data elements available within specific templates
+ they will be better able to specify their searches, leading to a more
+ useful service.
+
+ ______________________________________________________________________
+| |
+| + Single unique WHOIS++ database handle |
+| |
+| _______ _______ _______ |
+| handle3 |.. .. | handle6 |.. .. | handle9 |.. .. | |
+| _______ | _______ | _______ | |
+| handle2 |.. .. | handle5 |.. .. | handle8 |.. .. | |
+| _______ | _______ | _______ | |
+| handle1 |.. .. | handle4 |.. .. | handle7 |.. .. | |
+| |.. .. | |.. .. | |.. .. | |
+| ------- ------- ------- |
+| Template Template Template |
+| Type 1 Type 2 Type 3 |
+| |
+| |
+| |
+| |
+| Fig.1 - Structure of a WHOIS++ database. |
+| |
+| Notes: - Entire database is identified by a single unique WHOIS |
+| handle. |
+| - Each record has a single unique handle and a specific set |
+| of attributes, determined by the template type used. |
+| - Each value associated with an attribute can be any ASCII |
+| string up to a specified length. |
+|______________________________________________________________________|
+
+
+
+
+
+
+
+
+
+
+
+
+
+Deutsch, et al Standards Track [Page 6]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+1.2.3. The WHOIS++ Search Selection Mechanism
+
+ The WHOIS++ search mechanism is intended to be extremely simple. A
+ search command consists of one or more search terms, with an optional
+ set of global constraints (specifiers that modify or control a
+ search).
+
+ Search terms allow the user to specify template type, attribute,
+ value or handle that any record returns must satisfy. Each search
+ term can have an optional set of local constraints that apply to only
+ that term.
+
+ A WHOIS++ database may be seen as a single rolodex-like collection of
+ typed records. Each term specifies a further constraint that the
+ selected set of output records must satisfy. Each term may thus be
+ thought of as performing a subtractive selection, in the sense that
+ any record that does not fulfil the term is discarded from the result
+ set. Boolean searches are possible by the use of AND, OR, NOT and
+ parenthesis.
+
+1.2.4. The WHOIS++ Architecture
+
+ The WHOIS++ directory service has an architecture which is separated
+ into two components; the base level server, which is described in
+ this paper, and a indexing server. A single physical server can act
+ as both a base level server and an indexing server.
+
+ A base level server is one which contains only filled templates. An
+ indexing server is one which contains forward knowledge (q.v.) and
+ pointers to other indexing servers or base level servers.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Deutsch, et al Standards Track [Page 7]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+1.3. Indexing in WHOIS++
+
+ Indexing in WHOIS++ is used to tie together many base level servers
+ and index servers into a unified directory service.
+
+ Each base level server and index server which wishes to participate
+ in the unified directory service must generate "forward knowledge"
+ for the entries it contains. One type of forward knowledge is the
+ "centroid".
+
+ An example of a centroid is as follows: if a whois++ server contained
+ exactly three records, as follows:
+
+ Record 1 Record 2
+ Template: Person Template: Person
+ First-Name: John First-Name: Joe
+ Last-Name: Smith Last-Name: Smith
+ Favourite-Drink: Labatt Beer Favourite-Drink: Molson Beer
+
+ Record 3
+ Template: Domain
+ Domain-Name: foo.edu
+ Contact-Name: Mike Foobar
+
+ the centroid for this server would be
+
+ Template: Person
+ First-Name: Joe
+ John
+ Last-Name: Smith
+ Favourite-Drink:Beer
+ Labatt
+ Molson
+
+ Template: Domain
+ Domain-Name: foo.edu
+ Contact-Name: Mike
+ Foobar
+
+ An index server would then collect this centroid for this server as
+ forward knowledge.
+
+ Index servers can collect forward knowledge for any servers it
+ wishes. In effect, all of the servers that the index server knows
+ about can be searched with a single query to the index server; the
+ index server holds the forward knowledge along with pointers to the
+ servers it indexes, and can refer the query to servers which might
+ hold information which satisfies the query.
+
+
+
+Deutsch, et al Standards Track [Page 8]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ Implementors of this protocol are strongly encouraged to incorporate
+ centroid generation abilities into their servers.
+
+-------------------------------------------------------------------
+
+ ____ ____
+top level | | | |
+whois index | | | |
+servers ---- ----
+
+
+ ____ ____
+first level | | | |
+whois index | | | |
+servers ---- ----
+
+
+ ____ ____ ____
+individual | | | | | |
+whois servers | | | | | |
+ ---- ---- ----
+
+
+ Fig. 2 - Indexing system architecture.
+
+-------------------------------------------------------------------
+
+1.4. Getting Help
+
+ Another extension to the basic WHOIS service is the requirement that
+ all servers support at least a minimal set of help commands, allowing
+ users to find out information about both the individual server and
+ the entire WHOIS++ service itself. This is done in the context of the
+ new extended information model by defining two specific template
+ formats and requiring each server to offer at least one example of
+ each record using these formats. The operator of each WHOIS service
+ is therefor expected to have, as a minimum, a single example of
+ SERVICES and HELP records, which can be accessed through appropriate
+ commands.
+
+1.4.1. Minimum HELP Required
+
+ Executing the command:
+
+ DESCRIBE
+
+ gives a brief information about the WHOIS++ server.
+
+
+
+
+Deutsch, et al Standards Track [Page 9]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ Executing the command:
+
+ HELP
+
+ gives a brief description of the WHOIS++ service itself.
+
+ The text of both required helped records should contain pointers to
+ additional help subjects that are available.
+
+
+ Executing the command:
+
+ HELP <searchstring>
+
+ may give information on any topic.
+
+1.5. Options and Constraints
+
+ The WHOIS++ service is based upon a minimal core set of commands and
+ controlling constraints. A small set of additional optional commands
+ and constraints can be supported. These would allow users to perform
+ such tasks as provide security options, modify the information
+ contents of a server or add multilingual support. The required set of
+ WHOIS++ commands are summarized in section 2.2. WHOIS++ constraints
+ are described in section 2.3. Optional constraints are described in
+ section 2.3.2.
+
+1.6. Formatting Responses
+
+ The output returned by a WHOIS++ server is structured to allow
+ machine parsing and automated handling. Of particular interest in the
+ ability to return summary information about a search (without having
+ to return the entire results).
+
+ All output of searches will be returned in one of five output
+ formats, which will be one of FULL, ABRIDGED, HANDLE, SUMMARY or
+ SERVER-TO-ASK. Note that a conforming server is only required to
+ support the first four formats.
+
+ When available, SERVER-TO-ASK format is used to indicate that a
+ search cannot be completed but that one or more alternative WHOIS++
+ servers may be able to perform the search.
+
+ Details of each output format are specified in section 2.4.
+
+
+
+
+
+
+
+Deutsch, et al Standards Track [Page 10]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+1.7. Reporting Warnings and Errors
+
+ The formatted response of WHOIS++ commands allows the encoding of
+ warning or error messages to simplify parsing and machine handling.
+ The syntax of output formats are described in detail in section 2.4,
+ and details of WHOIS++ warnings and error conditions are given in
+ Appendix E.
+
+ All system messages are numerical, but can be tagged with text. It is
+ the clients decision if the text is presented to the user.
+
+1.8. Privacy and Security Issues
+
+ The basic WHOIS++ service was conceived as a simple, unauthenticated
+ information lookup service, but there are occasions when
+ authentication mechanisms are required. To handle such cases, an
+ optional mechanism is provided for authenticating each WHOIS++
+ transaction.
+
+ The current identified authentication mechanism is PASSWORD, which
+ uses simple password authentication. Any other scheme name used must
+ begin with the characters "X-" and should thus be regarded as
+ experimental and non-standard.
+
+ Note that the WHOIS++ authentication mechanism does not dictate the
+ actual authentication scheme used, it merely provides a framework for
+ indicating that a particular transaction is to be authenticated, and
+ the appropriate mechanisms to use. This mechanism is extensible and
+ individual implementors are free to add additional mechanisms.
+
+ This document includes a very simple authentication scheme where a
+ combination of username and password is sent together with the search
+ string so the server can verify that the user have access to the
+ information. Note that this is NOT by any means a method recommended
+ to secure the data itself because both password and information are
+ tranferred unencrypted over the network.
+
+ Given the unauthenticated nature that default services like white
+ pages services are, it is easy to either forget the implications of
+ this and just show all data to the public Internet, or think that
+ Internet is so dangerous that information is hidden from the Internet
+ so the whole idea of a global white pages service is lost. Therefore
+ the type of authentication scheme selected and the public nature of
+ the Internet environment must still be taken into consideration when
+ assessing the security and authentication of the information served.
+
+ A more detailed exposition on security is outside the scope of this
+ document.
+
+
+
+Deutsch, et al Standards Track [Page 11]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+2. Part II - WHOIS++ Implementation
+
+2.1. The WHOIS++ interaction model
+
+ A WHOIS++ server will normally listen for a TCP connections on the
+ allocated WHOIS++ port (although a WHOIS++ server can be accessed
+ over any TCP connection). Once a connection is established, the
+ server issues a banner message, and listens for input. The command
+ specified in this input is processed and the results returned
+ including an ending system message. If the optional HOLD constraint
+ has not been specified the connection is then terminated.
+
+ If the server supports the optional HOLD constraint, and this
+ constraint is specified as part of any command, the server continues
+ to listen on the connection for another line of input. This cycle
+ continues as long as the sender continues to append the required HOLD
+ constraint to each subsequent command.
+
+ At the same time, each server is permitted to set an optional timeout
+ value (which should be indicated in the response to the CONSTRAINTS
+ command). If set, the server is free to terminate an idle connection
+ at any time after this delay has passed with no input from the
+ client. If the server terminates the connection due to timeout, it
+ will be indicated by the system message. The timeout value is not
+ changeable by the client.
+
+2.2. The WHOIS++ Command set
+
+ There are two types of WHOIS++ commands - system commands and the
+ WHOIS++ search command.
+
+ The WHOIS++ command set consists of a core set of required systems
+ commands, a single required search command and an set of optional
+ system commands which support features that are not required by all
+ servers. The set of required WHOIS++ system commands are listed in
+ Table I. Details of the allowable search terms for the search command
+ are included in Table II.
+
+ Each WHOIS++ command also allows the use of one or more controlling
+ constraints, when selected can be used to override defaults or
+ otherwise modify server behavior. There is a core set of constraints
+ that must be supported by all conforming servers. These include
+ SEARCH (which controls the type of search performed), FORMAT (which
+ determines the output format used) and MAXHITS (which determines the
+ maximum number of matches that a search can return).
+
+ These required constraints are summarized in Table III.
+
+
+
+
+Deutsch, et al Standards Track [Page 12]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ An additional set of optional constraints are used to provide support
+ for different character sets, indicate the need and type of
+ authentication to perform on a transaction, and permit multiple
+ transactions during a single communications session. These optional
+ constraints are listed in Table IV.
+
+ It is possible, using the required COMMANDS and CONSTRAINTS system
+ commands, to query any WHOIS++ server for its list of supported
+ commands and constraints.
+
+2.2.1. System Commands
+
+ System commands are commands to the server for information or to
+ control its operation. These include commands to list the template
+ types available from individual servers, to obtain a single blank
+ template of any available type, and commands to obtain the list of
+ valid commands and constraints supported on a server.
+
+ There are also commands to obtain the current version of the WHOIS++
+ protocol supported, to access a simple help subsystem, to obtain a
+ brief description of the service (which is intended, among other
+ things, to support the automated registration of the service by
+ yellow pages directory services). All of these commands are required
+ from a conforming WHOIS++ server.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Deutsch, et al Standards Track [Page 13]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+------------------------------------------------------------------------
+
+Short Long Form Functionality
+----- --------- -------------
+ COMMANDS [ ':' HOLD ] list valid WHOIS++ commands
+ supported by this server
+
+ CONSTRAINTS [ ':' HOLD ] List valid constraints
+ supported by this server
+
+ DESCRIBE [ ':' HOLD ] Describe this server,
+ formating the response
+ using a standard
+ "Services" template
+
+ '?' HELP [<string> [':' <cnstrnts>]] System help, using a "Help"
+ template
+
+ LIST [':' <cnstrnts>] List templates supported
+ by this system
+
+ POLLED-BY [ ':' HOLD ] List indexing servers
+ that are know to track
+ this server
+
+ POLLED-FOR [ ':' HOLD ] List information about
+ what this server is
+ tracking for
+
+ SHOW <string> [':' <cnstrnts>] Show contents of templates
+ specified
+
+ VERSION [ ':' HOLD ] return current version of
+ the protocol supported.
+
+ Table I - Required WHOIS++ SYSTEM commands.
+
+------------------------------------------------------------------------
+
+ Below follows a descriptions for each command. Examples of responses
+ to each command is in Appendix C.
+
+2.2.1.1. The COMMANDS command
+
+ The COMMANDS command returns a list of commands that the server
+ supports. The response is formatted as a FULL response.
+
+
+
+
+
+Deutsch, et al Standards Track [Page 14]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+2.2.1.2. The CONSTRAINTS command
+
+ The CONSTRAINTS command returns a list of constraints and the values
+ of those that the server supports. The response is formatted as a
+ FULL response, where every constraint is represented as a separate
+ record. The template name for these records is CONSTRAINT. No
+ attention is paid to handles. Each record has, as a minimum, the
+ following two fields:
+
+ - "Constraint", which contains the attribute name described -
+ "Default", which shows the default value for this constraint.
+
+ If the client is permitted to change the value of the constraint,
+ there is also:
+
+ - "Range" field, which contains a list of values that this
+ server supports, as a comma separated list; Or, if the range
+ is numerical, as a pair of numbers separated with a hyphen.
+
+2.2.1.3. The DESCRIBE command
+
+ The DESCRIBE command gives a brief description about the server in a
+ "Services" template. The result is formatted as a FULL response.
+
+2.2.1.4. The HELP command
+
+ The HELP command takes an optional argument as subject to get help
+ for.
+
+2.2.1.5. The LIST command
+
+ The LIST command returns the name of the templates available on the
+ server. The answer is formatted FULL format response.
+
+2.2.1.6. The POLLED-BY command
+
+ The POLLED-BY command returns a list of servers and the templates and
+ attribute names that those server polled as centroids from this
+ server. The format is in FULL format with two attributes, Template
+ and Field. Each of these is a list of names of the templates or
+ fields polled. An empty result means either that the server is not
+ polled by anyone, or that it doesn't support indexing.
+
+
+
+
+
+
+
+
+
+Deutsch, et al Standards Track [Page 15]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+2.2.1.7. The POLLED-FOR command
+
+ The POLLED-FOR command returns a list of servers that this server has
+ polled, and the template and attribute names for each of those. The
+ answer is in FULL format with two attributes, Template and Field. An
+ empty result means either that the server is not polling anyone, or
+ that it doesn't support indexing.
+
+2.2.1.8. The SHOW command
+
+ The SHOW command takes a template name as argument and returns
+ information about a specific template, formatted as a FULL response.
+ The answer is formatted as a blank template with the requested name.
+
+2.2.1.9. The VERSION command
+
+ The output format is a FULL response containg a record with template
+ name VERSION. The record must have attribute name "Version", which
+ value is "1.0" for this version of the protocol. The record may also
+ have the additional fields "Program-Name" and "Program-Version" which
+ gives information about the server implementation if the server so
+ desires.
+
+2.2.2. The Search Command
+
+ A search command consists of one or more search terms, which might
+ each have local constraints, followed by an optional colon with a set
+ of global search constraints.
+
+ Each attribute value in the WHOIS++ database is divided into one or
+ more words separated by whitespace. Each search term operates on
+ every word in the attribute value.
+
+ Two or more search terms may be combined with boolean operators AND,
+ OR or NOT (other than the implied AND between terms). The operator
+ AND has higher precedence than the operator OR, but this can be
+ changed by the use of parentheses.
+
+ Search constraints that apply to every search term are specified as
+ global constraints. Local constraints override global constraints for
+ the search term they are bound to. The search terms and the global
+ constraints are separated with a colon (':'). Additional global
+ constraints are appended to the end of the search command delimited
+ with a semicolon ';'.
+
+ If different search constraints can not be fulfilled, or the
+ combination of different search constraints is uncombinable, the
+ server may choose to ignore some constraints, but still do the search
+
+
+
+Deutsch, et al Standards Track [Page 16]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ and return some records.
+
+ The set of required constraints are summarized in Table III. The set
+ of optional constraints are summarized in Table IV.
+
+ As an option, the server may accept specifications for attributes for
+ either inclusion or exclusion from a reply. Thus, users could specify
+ -only- those attributes to return, or specific attributes to filter
+ out, thus creating custom views.
+
+2.2.2.1. Format of a Search Term
+
+ Each search term consists of one of the following:
+
+ 1) A search string, followed by an optional semicolon and set of
+ semicolon-separated local constraints.
+
+ 2) A search term specifier (as listed in Table II), followed by a
+ '=', followed by a search string, an optional semicolon and a
+ set of semicolon-separate local constraints.
+
+ 3) An abbreviated search term specifier, followed by a search
+ string, followed by an optional semicolon and set of
+ semicolon-separated local constraints.
+
+ 4) A combination of attribute name, followed by '=', followed by
+ a search string, followed by an optional semicolon and set of
+ semicolon-separate local constraints.
+
+ If no term identifier is provided, then the search will be applied to
+ attribute values only. This corresponds to an identifier of VALUE.
+
+ If a SEARCH-ALL specifier is used then the search will be applied to
+ all template names, handles, attribute names and attribute values.
+
+ When the user specifies the search term using the form:
+
+ "<attribute_name> = <value>"
+
+ this is considered to be an ATTRIBUTE-VALUE search.
+
+ For discussion of the system reply format, and selecting the
+ appropriate reply format, see section 2.4.
+
+
+
+
+
+
+
+
+Deutsch, et al Standards Track [Page 17]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ -------------------------------------------------------------------
+
+ Valid specifiers:
+ -----------------
+
+ Name Functionality
+ ---- -------------
+
+ ATTRIBUTE-VALUE [ ';' <constrnt>]* allows combining
+ attribute and value
+ specifiers in one term.
+ HANDLE [ ';' <constrnt>]* Confine search to handles.
+ SEARCH-ALL [ ';' <constrnt>]* Search everything.
+ TEMPLATE [ ';' <constrnt>]* Confine search to
+ template names.
+ VALUE [ ';' <constrnt>]* Confine search to attribute
+ values. This is the default.
+
+ (Note: The name HANDLE can be replaced with the shortname '!')
+
+ Acceptable forms of a search specifier:
+ ---------------------------------------
+
+ 1) <searchstring> [';' <constraint>]*
+
+ 2) <specifier> = <searchstring> [';' <constraint>]*
+
+ 3) <shortspecifier> <searchstring> [';' <constraint>]*
+
+ 4) <attribute_name> = <searchstring> [';' <constraint>]*
+
+ (Note: A <constraint> is a name of a valid local constraint.)
+
+ Table II - Valid search command term specifiers.
+
+ -------------------------------------------------------------------
+
+2.2.2.2. Format of a Search String
+
+ Special characters that need to be quoted are preceeded by a
+ backslash, '\'.
+
+ Special characters are space ' ', tab, equal sign '=', comma ',',
+ colon ':', backslash '\', semicolon ';', asterisk '*', period '.',
+ parenthesis '()', square brackets '[]', dollar sign '$' and
+ circumflex '^'.
+
+
+
+
+
+Deutsch, et al Standards Track [Page 18]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ If the search term is given in some other character set than ISO-
+ 8859-1, it must be specified by the constraint INCHARSET.
+
+2.3. WHOIS++ Constraints
+
+ Constraints are intended to be hints or recommendations to the server
+ about how to process a command. They may also be used to override
+ default behaviour, such as requesting that a server not drop the
+ connection after performing a command.
+
+ Thus, a user might specify a search constraint as "SEARCH=exact",
+ which means that the search engine is to perform an exact match
+ search. It might also specify "LANGUAGE=Fr", which implies that the
+ server should use French in fuzzy matches. It might also be able to
+ issue system messages in French.
+
+ In general, contraints take the form "<constraintname>=<value>", with
+ <value> being one of a specified set of valid values. The notable
+ exception is "HOLD", which takes no argument.
+
+ All constraints can be used as a global constraint, but only a few
+ can be used as local. See tables IV and V for information of which
+ constraints can be local.
+
+ The CONSTRAINTS system command is used to list the search constraints
+ supported by an individual server.
+
+ If a server cannot satisfy the specified constraint there will be a
+ mechanism for informing the user in the reply, using system messages.
+ In such cases, the search is still performed, with the the server
+ ignoring unsupported constraints.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Deutsch, et al Standards Track [Page 19]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+2.3.1. Required Constraints
+
+ The following CONSTRAINTS must be supported in all conforming WHOIS++
+ servers.
+
+ ------------------------------------------------------------------
+
+ Format LOCAL/GLOBAL
+ ------ -------------
+
+ SEARCH= {exact | lstring } LOCAL/GLOBAL
+
+ FORMAT= {full | abridged | handle | summary } GLOBAL
+
+ MAXHITS= { 1-<max-allowed> } GLOBAL
+
+ Table III - Required WHOIS++ constraints.
+
+ ------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Deutsch, et al Standards Track [Page 20]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+2.3.2. Optional CONSTRAINTS
+
+ The following CONSTRAINTS and constraint values are not required of a
+ conforming WHOIS++ server, but may be supported. If supported, their
+ names and supported values must be returned in the response to the
+ CONSTRAINTS command.
+
+ ---------------------------------------------------------------------
+
+ Format LOCAL/GLOBAL
+ ------ -------------
+
+ SEARCH= { regex | fuzzy | substring | <X-format> } LOCAL/GLOBAL
+
+ CASE= { ignore | consider } LOCAL/GLOBAL
+
+ FORMAT= { server-to-ask | <X-format> } GLOBAL
+
+ MAXFULL= { 1-<max-allowed> } GLOBAL
+
+ AUTHENTICATE= password GLOBAL
+
+ NAME= <string> GLOBAL
+
+ PASSWORD= <string> GLOBAL
+
+ INCHARSET= { us-ascii | iso-8859-* } GLOBAL
+
+ LANGUAGE= <As defined in ISO 639:1988> GLOBAL
+
+ HOLD GLOBAL
+
+ IGNORE= {attributelist} GLOBAL
+
+ INCLUDE= {attributelist} GLOBAL
+
+ Table IV - Optional WHOIS++ constraints.
+
+ ----------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
+
+Deutsch, et al Standards Track [Page 21]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+2.3.2.1. The SEARCH Constraint
+
+ The SEARCH constraint is used for specifying the method that is to be
+ used for the search. The default method is "exact". Following is a
+ definition of each search method.
+
+
+ exact The search will succeed for a word that exactly
+ matches the search string.
+
+ substring The search will succeed for a word that matches
+ a part of a word.
+
+ regex The search will succeed for a word when a regular
+ expression matches the searched data. Regular
+ expression is built up by using constructions of
+ '*', '.', '^', '$', and '[]'. For use of
+ regular expressions see Appendix G.
+
+ fuzzy The search will succeed for words that matches the
+ search string by using an algorithm designed to catch
+ closely related names with different spelling, e.g.
+ names with the same pronounciation. The server
+ chooses which algorithm to use, but it may vary
+ depending on template name, attribute name and
+ language used (see Constraint Language above).
+
+ lstring The search will succed for words that begins
+ with the search string.
+
+2.3.2.2. The FORMAT Constraint
+
+ The FORMAT constraint describes what format the result will be in.
+ Default format is FULL. For a description of each format, see Server
+ Response Modes below.
+
+2.3.2.3. The MAXFULL Constraint
+
+ The MAXFULL constraint sets the limit of the number of matching
+ records the server allows before it enforces SUMMARY responses. The
+ client may attempt to override this value by specifying another value
+ to that constraint. Example: If, for privacy reasons, the server will
+ return the response in SUMMARY format if the number of hits exceeds
+ 2, the MAXFULL constraint is set to 2 by the server.
+
+ Regardless of what format the client did or did not ask for, the
+ server will change the response format to SUMMARY when the number of
+ matching records equals or exceeds this value.
+
+
+
+Deutsch, et al Standards Track [Page 22]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+2.3.2.4. The MAXHITS Constraint
+
+ The MAXHITS constraint sets the maximum number of records the client
+ can get in a search respone.
+
+2.3.2.5. The CASE Constraint
+
+ The CASE constraint defines if the search should be done case
+ sensistive or not. Default value is to have case ignored.
+
+2.3.2.6. The AUTHENTICATE Constraint
+
+ The AUTHENTICATE constraint describes which authentication method to
+ use when executing the search. By using a specific authentication
+ method, some other constraints might be needed which is specified by
+ the authentication method.
+
+ The only authentication method described in this document is
+ "password", if used, also the two other constraints "name" and
+ "password" need to be set.
+
+2.3.2.7. The NAME Constraint
+
+ The NAME constraint is only used together with some authentication
+ method named by the constraint "authenticate". The only use described
+ in this document is by sending a username as a string of characters
+ which together with the string given as an argument to the "password"
+ constraint is sent to the server. The server can use that pair of
+ strings to do a simple authentication check, similar to the UNIX
+ login program.
+
+2.3.2.8. The PASSWORD Constraint
+
+ The PASSWORD constraint is only used together with some
+ authentication method named by the constraint "authenticate". The
+ only use described in this document is by sending a password as a
+ string of characters which together with the string given as an
+ argument to the "name" constraint is sent to the server. The server
+ can use that pair of strings to do a simple authentication check,
+ similar tothe UNIX login program.
+
+2.3.2.9. The LANGUAGE Constraint
+
+ The LANGUAGE constraints can be used as an extra information to the
+ fuzzy matching search method, and it might also be used to tell the
+ server to give the system responses in another language, although
+ this ability should be handled by the client. The language code
+ defined in RFC 1766 [ALVE95] can be used as a value for the language
+
+
+
+Deutsch, et al Standards Track [Page 23]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ constraint. In these, the case of the letters are insignigicant.
+
+2.3.2.10. The INCHARSET Constraint
+
+ The INCHARSET constraint tells the server in which character set the
+ search string itself is given in. The default character set is ISO-
+ 8859-1.
+
+2.3.2.11. The IGNORE Constraint
+
+ The IGNORE constraint specifies which attributes to NOT include in
+ the result. All other attributes will be included (as if named
+ explicitly by the "include" constraint).
+
+ If an attribute is named both with the "include" and "ignore"
+ constraint, the attribute is to be included in the result, but the
+ system message must be "% 205 Requested constraint not fulfilled".
+
+2.3.2.12. The INCLUDE Constraint
+
+ The INCLUDE constraint specifies which attributes to include in the
+ result. All other attributes will be excluded (as if named explicitly
+ by the "ignore" constraint).
+
+ If an attribute is named both with the "include" and "ignore"
+ constraint, the attribute is to be included in the result, but the
+ system message must be "% 205 Requested constraint not fulfilled".
+
+2.4. Server Response Modes
+
+ There are currently a total of five different response modes possible
+ for WHOIS++ servers. These are FULL, ABRIDGED, HANDLE, SUMMARY and
+ SERVER-TO-ASK. The syntax of each output format is specified in more
+ detail in the following section.
+
+ 1) A FULL format response provides the complete contents of a
+ template matching the specified query, including the template
+ type, the server handle and an optional record handle.
+
+ 2) An ABRIDGED format response provides a brief summary, including
+ (as a minimum) the server handle, the corresponding record handle
+ and relevant information for that template.
+
+ 3) A HANDLE format response returns a line with information about
+ the server handle and record handle for a record that matched
+ the specified query.
+
+
+
+
+
+Deutsch, et al Standards Track [Page 24]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ 4) A SUMMARY response provides only a brief summary of information
+ the number of matches and the list of template types in which the
+ matches occured.
+
+ 5) A SERVER-TO-ASK response only returns pointers to other index
+ servers which might possibly be able to answer the specified
+ query.
+
+ The server may respond with a null answer and may also respond with a
+ null answer together with a correct system message to indicate that
+ the query was too complex.
+
+2.4.1. Default Responses
+
+ By default, a WHOIS++ server will provide FULL responses. This may be
+ changed by the client with the use of the global constraint "format".
+
+ The server is allowed to provide response in SUMMARY format if the
+ number of hits exceeds the value of the global constraint "maxfull".
+
+ The server will not respond with more matches than the value
+ specified with the global constraint "maxhits"; Not in any response
+ format. If the number of matches exceeds this value, the server will
+ issues the system message 110 (maxhits value exceeded), but will
+ still show the responses, up to the number of the "maxhits"
+ constraint value. This mechanism will allow the server to hide the
+ number of possible matches to a search command.
+
+ The server response modes are summarized in Table V.
+
+2.4.2. Format of Responses
+
+ Each response consists of a numerical system generated message, which
+ can be tagged with text, followed by an optional formatted response
+ message, followed by a second system generated messages.
+
+ That is:
+
+ '%' <system messages> <nl>
+
+ [ <formatted response> ]
+
+ '%' <system messages> <nl>
+
+
+ If there are no matches to a query, the system is not required to
+ generate any output as a formatted response, although it must still
+ generate system messages.
+
+
+
+Deutsch, et al Standards Track [Page 25]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ For information about the format for system messages, see Appendix E.
+
+2.4.3. Syntax of a Formatted Response
+
+ All formatted responses except for the HANDLE response, consists of a
+ response-specific START line, followed by an optional response-
+ specific data section, followed by a TERMINATION line. The HANDLE
+ response is different in that it only consists of a START line. It
+ is permissible to insert any number of lines consisting solely of
+ newlines within a formatted response to improve readibility.
+
+ Each line shall be limited to no more than 81 characters, including
+ the terminating newline. If a line (including the required leading
+ single space) would exceed 81 characters, it is to be broken into
+ lines of no more than 81 characters, with each continuation line
+ beginning with a "+" character in the first column instead of the
+ leading character.
+
+ If an attribute value in a data section includes a line break, the
+ line break must be replaced by a CR/LF pair and the following line
+ begin with a "-" character in the first column, instead of the
+ leading character. The attribute name is not repeated on consecutive
+ lines.
+
+ A TERMINATION line consists of a line with a '#' in the first column,
+ followed by one white space character (SPACE or TAB), followed by the
+ keyword END, followed by zero or more characters, followed by a
+ newline.
+
+ A response-specific section will be one of the following:
+
+ 1) FULL Format Response
+ 2) ABRIDGED Format Response
+ 3) HANDLE Format Response
+ 4) SUMMARY Format Response
+ 5) SERVER-TO-ASK Format Response
+
+ The details of each are specified in the following sections:
+
+2.4.3.1. A FULL format response
+
+ A FULL format response consists of a series of responses, each
+ consisting of a START line, followed by the complete template
+ information for the matching record and a TERMINATION line.
+
+ Each START line consists of a '#' in the first column, followed by
+ one white space character, the word "FULL", a white space character,
+ the name of the corresponding template type, one white space
+
+
+
+Deutsch, et al Standards Track [Page 26]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ character, the server handle, a white space character, an optional
+ handle for the record, and a terminating newline.
+
+ The template information for the record will be returned as a series
+ of lines consisting of a single space, followed by the corresponding
+ line of the record.
+
+ The line of the record shall consist of a single space and the
+ attribute name followed by a ':', a single space, the value of that
+ attribute, and a newline.
+
+2.4.3.2. ABRIDGED Format Response
+
+ Each ABRIDGED format response consists of a START line, a single line
+ excerpt of the template information from each matching record and a
+ TERMINATION line. The excerpt information shall include information
+ that is relevant to the template type.
+
+ The START line consists of a '#' in the first column, followed by one
+ white space character, the word "ABRIDGED", a white space character,
+ the name of the corresponding template type, a white space character,
+ the server handle, a white space character, the handle for the
+ record, and a terminating newline.
+
+ The abridged template information will be returned as a line,
+ consisting of a single space, followed by the abridged line of the
+ record and a newline pair.
+
+2.4.3.3. HANDLE Format Response
+
+ A HANDLE response consists of a single START line, which shall start
+ with a '#' in the first column, followed by one white space
+ character, the word "HANDLE", a white space character, the name of
+ the corresponding template, a white space character, the handle for
+ the server, a white space character, the handle for that record, and
+ a terminating newline.
+
+2.4.3.4. SUMMARY Format Response
+
+ A SUMMARY format response consists of a single set of responses,
+ consisting of a line listing the number of matches to the specified
+ query, followed by a list of all template types which satisfied the
+ query at least once.
+
+ The START line shall begin with a '#' in the first column, be
+ followed by one white space character, the word "SUMMARY", a white
+ space character, the handle for the server, and a terminating
+ newline.
+
+
+
+Deutsch, et al Standards Track [Page 27]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ All following lines until the TERMINATION line starts with a leading
+ space. The first line shall begin with the string "matches: ", be
+ followed by a space and the number of responses to the query and
+ terminated by a newline. The second line shall begin with the string
+ "templates: ", be followed by a newline separated list of the name of
+ the template types which matched the query. Each line following the
+ first which include the text "templates:" must begin with a '-'
+ instead of a space.
+
+2.4.3.5. SERVER-TO-ASK Response
+
+ A SERVER-TO-ASK response consists of information to the client about
+ a server to contact next to resolve a query. If the server has
+ pointers to more than one server, it will present additional SERVER-
+ TO-ASK responses.
+
+ The SERVER-TO-ASK response will consist of a START line and a number
+ of lines with attribute-value pairs, separated by CRLF. Each line is
+ indented with one space. The end of a SERVER-TO-ASK response is
+ indicated with a TERMINATION line.
+
+ Each START line consists of a '#' in the first column, followed by
+ one white space character, the word "SERVER-TO-ASK", a white space
+ character, the handle of the server and a terminating newline.
+
+ 1. "Server-Handle" - The server handle of the server pointed at.
+ (req.)
+ 2. "Host-Name" - A cached host named for the server pointed at. (opt.)
+ 3. "Host-Port" - A cached port number for the server pointed at.
+ (opt.)
+
+ Other attributes may be present, depending on the index server.
+
+2.4.4. System Generated Messages
+
+ All system generated messages must begin with a '%' as the first
+ character, a space as the second one, followed by a three digit
+ number, a space and an optional text message. The total length of the
+ line must be no more than 81 characters long, including the
+ terminating CR LF pair. There is no limit to the number of system
+ messages that may be generated.
+
+ The format for multiline replies requires that every line, except the
+ last, begin with "%", followed by space, the reply code, a hyphen,
+ and an optional text. The last line will begin with "%", followed by
+ space, the reply code, a space and some optional text.
+
+
+
+
+
+Deutsch, et al Standards Track [Page 28]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ System generated messages displayed before or after the formatted
+ response section are expected to refer to operation of the system or
+ refer to the entire query. System generated messages within the
+ output of an individual record during a FULL reponse are expected to
+ refer to that record only, and could (for example) be used to
+ indicate problems with that record of the response. See Appendix E
+ for a description of system messages.
+
+2.5. Compatibility with Older WHOIS Servers
+
+ Note that this format, although potentially more verbose, is still in
+ a human readible form. Responses from older systems that do not
+ follow this format are still conformant, since their responses would
+ be interpreted as being equivalent to optional text messages, without
+ a formatted response. Clients written to this specification would
+ display the responses as a advisory text message, where it would
+ still be readible by the user.
+
+3. Miscellaneous
+
+3.1. Acknowledgements
+
+ The WHOIS++ effort began as an intensive brainstorming session at the
+ 24th IETF, in Boston Massachusetts. Present at the birth, and
+ contributing ideas through this early phase, were (alphabetically)
+ Peter Deutsch, Alan Emtage, Jim Fullton, Joan Gargano, Brad
+ Passwaters, Simon Spero, and Chris Weider. Others who have since
+ helped shape this document with feedback and suggestions include
+ Roxana Bradescu, Patrik Faltstrom, Kevin Gamiel, Dan Kegel, Michael
+ Mealling, Mark Prior and Rickard Schoultz.
+
+3.2 References
+
+ [ALVE95] Alvestrand H., "Tags for the Identification of
+ Languages", RFC 1766, UNINETT, March 1995.
+
+ [HARR85] Harrenstein K., Stahl M., and E. Feinler,
+ "NICNAME/WHOIS", RFC 954, SRI, October 1985.
+
+ [IIIR] Weider C., and P. Deutsch, "A Vision of an
+ Integrated Internet Information Service", RFC 1727
+ Bunyip Information Systems, Inc., December 1994.
+
+ [POST82] Postel J., "Simple Mail Transfer Protocol", STD 10,
+ RFC 821, USC/Information Sciences Institute,
+ August 1982.
+
+
+
+
+
+Deutsch, et al Standards Track [Page 29]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+3.3. Authors' Addresses
+
+ Peter Deutsch
+ BUNYIP INFORMATION SYSTEMS, Inc.
+ 310 St-Catherine St West,
+ Suite 202,
+ Montreal, Quebec H2X 2A1
+ CANADA
+
+ EMail: peterd@bunyip.com
+
+
+ Rickard Schoultz
+ KTHNOC, SUNET/NORDUnet/Ebone Operations Centre
+ 100 44 STOCKHOLM
+ SWEDEN
+
+ EMail: schoultz@sunet.se
+
+
+ Patrik Faltstrom
+ BUNYIP INFORMATION SYSTEMS, Inc.
+ 310 St-Catherine St West,
+ Suite 202,
+ Montreal, Quebec H2X 2A1
+ CANADA
+
+ EMail: paf@bunyip.com
+
+
+ Chris Weider
+ BUNYIP INFORMATION SYSTEMS, Inc.
+ 2001 S. Huron Parkway, #12
+ Ann Arbor, MI 48104
+ USA
+
+ EMail: clw@bunyip.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Deutsch, et al Standards Track [Page 30]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+Appendix A - Some Sample Queries
+
+ author=chris and template=user
+
+ The result will consist of all records where attribute "author"
+ matches "chris" with case ignored. Only USER templates will be
+ searched. An example of a matching record is "Author=Chris Weider".
+ This is the typical case of search.
+
+ schoultz and rick;search=lstring
+
+ The result will consist of all records which have one attribute value
+ matching "schoultz" exactly and one having "rick" as leading
+ substring, both with case ignored. One example is "Name=Rickard
+ choultz".
+
+ value=phone;search=substring
+
+ The result will consist of all records which have attribute values
+ matching *phone*, for example the record "Name=Acme telephone inc.",
+ but will not match the attribute name "phone". (Since "value" term
+ specifier is the default, the search term could be "phone" as well as
+ "value=phone".)
+
+ search-all=Peter ; search=substring;case=consider
+
+ The result will consist of all records which have attribute names,
+ template names or attribute values matching "Peter" with respect to
+ case. One example is "Friend-Of-Peter: Yes".
+
+ ucdavis;search=substring and (gargano or joan):include=name,email
+
+ This search command will find records which have records containing
+ the words "gargano" or "joan" somewhere in the record, and has the
+ word "ucdavis" somewhere in a word. The result will only show the
+ "name" and "email" fields.
+
+Appendix B - Some sample responses
+
+ 1) FULL format responses:
+
+ # FULL USER SERVERHANDLE1 PD45
+ Name: Peter Deutsch
+ email: peterd@bunyip.com
+ # END
+ # FULL USER SERVERHANDLE1 AE1
+ Name: Alan Emtage
+ email: bajan@bunyip.com
+
+
+
+Deutsch, et al Standards Track [Page 31]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ # END
+ # FULL USER SERVERHANDLE1 NW1
+ Name: Nick West
+ Favourite-Bicycle-Forward-Wheel-Brand: New Bicy
+ +cles Acme Inc.
+ email: nick@bicycle.acme.com
+ My-favourite-song: Happy birthday to you!
+ -Happy birthday to you!
+ -Happy birthday dear Nick!
+ -Happy birthday to you.
+ # END
+ # FULL SERVICES SERVERHANDLE1 WWW1
+ Type: World Wide Web
+ Location: the world
+ # END
+
+ --------------------
+
+
+ 2) An ABRIDGED format response:
+
+ # ABRIDGED USER SERVERHANDLE1 PD45
+ Peter Deutsch peterd@bunyip.com
+ # END
+ # ABRIDGED USER SERVERHANDLE1 AE1
+ Alan Emtage bajan@bunyip.com
+ # END
+ # ABRIDGED USER SERVERHANDLE1 WWW1
+ World Wide Web the world
+ # END
+
+
+ --------------------
+
+
+ 3) HANDLE format responses:
+
+
+ # HANDLE USER SERVERHANDLE1 PD45
+ # HANDLE USER SERVERHANDLE1 AE1
+ # HANDLE SERVICES SERVERHANDLE1 WWW1
+
+
+ --------------------
+
+
+
+
+
+
+
+Deutsch, et al Standards Track [Page 32]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ 4) A SUMMARY HANDLE format response:
+
+ # SUMMARY SERVERHANDLE1
+
+ Matches: 175
+ Templates: User
+ - Services
+ - Abstracts
+ # END
+
+Appendix C - Sample responses to system commands
+
+ C.1 Response to the LIST command
+
+ # FULL LIST SERVERHANDLE1
+ Templates: USER
+ -SERVICES
+ -HELP
+ # END
+
+
+ C.2 Response to the SHOW command
+
+ This example shows the result after issuing "show user":
+
+ # FULL USER SERVERHANDLE1
+ Name:
+ Email:
+ Work-Phone:
+ Organization-Name:
+ City:
+ Country:
+ # END
+
+ C.3 Response to the POLLED-BY command
+
+ # FULL POLLED-BY SERVERHANDLE1
+ Server-handle: serverhandle2
+ Cached-Host-Name: sunic.sunet.se
+ Cached-Host-Port: 7070
+ Template: USER
+ Field: ALL
+ # END
+ # FULL POLLED-BY SERVERHANDLE1
+ Server-handle: serverhandle3
+ Cached-Host-Name: kth.se
+ Cached-Host-Port: 7070
+ Template: ALL
+
+
+
+Deutsch, et al Standards Track [Page 33]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ Field: Name,Email
+ # END
+
+
+ C.4 Response to the POLLED-FOR command
+
+ # FULL POLLED-FOR SERVERHANDLE1
+ Server-Handle: serverhandle5
+ Template: ALL
+ Field: Name,Address,Job-Title,Organization-Name,
+ +Organization-Address,Organization-Name
+ # END
+ # FULL POLLED-FOR SERVERHANDLE1
+ Server-Handle: serverhandle4
+ Template: USER
+ Field: ALL
+ # END
+
+
+ C.5 Response to the VERSION command
+
+ # FULL VERSION BUNYIP.COM
+ Version: 1.0
+ Program-Name: kth-whoisd
+ Program-Version: 2.0
+ # END
+
+
+ C.6 Response to the CONSTRAINTS command
+
+ # FULL CONSTRAINT COMEDIA.SE
+ Constraint: format
+ Default: full
+ Range: full,abridged,summary,handle
+ # END
+ # FULL CONSTRAINT COMEDIA.SE
+ Constraint: maxhits
+ Default: 200
+ Range: 1-1000
+ # END
+ # FULL CONSTRAINT COMEDIA.SE
+ Constraint: search
+ Default: exact
+ Range: exact,substring,lstring
+ # END
+ # FULL CONSTRAINT COMEDIA.SE
+ Constraint: maxfull
+ Default: 20
+
+
+
+Deutsch, et al Standards Track [Page 34]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ # END
+
+ C.3 Response to the COMMANDS command
+
+ # FULL COMMANDS SERVERHANDLE1
+ Commands: commands
+ -constraints
+ -describe
+ -help
+ -list
+ -polled-by
+ -polled-for
+ -show
+ -version
+ # END
+
+Appendix D - Sample whois++ session
+
+ Below is an example of a session between a client and a server. The
+ angle brackets to the left is not part of the communication, but is
+ just put there to denonte the direction of the communication between
+ the server or the client. Text appended to '>' means messages from
+ the server and '<' from the client.
+
+ Client connects to the server
+
+ >% 220-Welcome to
+ >% 220-the whois++ server
+ >% 220 at ACME inc.
+ <name=Nick:hold
+ >% 200 Command okay
+ >
+ ># FULL USER ACME.COM NW1
+ > name: Nick West
+ > email: nick@acme.com
+ ># END
+ ># SERVER-TO-ASK ACME.COM
+ > Server-Handle: SUNETSE01
+ > Host-Name: whois.sunet.se
+ > Host-Port: 7070
+ ># END
+ ># SERVER-TO-ASK ACME.COM
+ > Server-Handle: KTHSE01
+ ># END
+ >% 226 Tranfer complete
+ <version
+ >% 200 Command okay
+ ># FULL VERSION ACME.COM
+
+
+
+Deutsch, et al Standards Track [Page 35]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ > Version: 1.0
+ ># END
+ >% 226 Tranfer complete
+ >% 203 Bye
+ Server closes the connection
+
+ In the example above, the client connected to a whois++ server and
+ queried for all records where the attribute "name" equals "Nick", and
+ asked the server not to close the connection after the response by
+ using the global constraint "HOLD".
+
+ The server responds with one record and a pointer to two other
+ servers that either holds records or pointers to other servers.
+
+ The client continues with asking for the servers version number
+ without using the HOLD constraint. After responding with protocol
+ version, the server closes the connection.
+
+ Note that each response from the server begins system message 200
+ (Command OK), and ends with system message 226 (Transfer Complete).
+
+Appendix E - System messages
+
+ A system message begins with a '%', followed by a space and a three
+ digit number, a space, and an optional text message. The line message
+ must be no more than 81 characters long, including the terminating CR
+ LF pair. There is no limit to the number of system messages that may
+ be generated.
+
+ A multiline system message have a hyphen instead of a space in column
+ 6, immediately after the numeric response code in all lines, except
+ the last one, where the space is used.
+
+ Example 1
+
+ % 200 Command okay
+
+ Example 2
+
+ % 220-Welcome to
+ % 220-the whois++ server
+ % 220 at ACME inc.
+
+ The client is not expected to parse the text part of the response
+ message except when receiving reply 600, in which case the text part
+ is the name of a character set that will be used by the server in the
+ rest of the response. The valid values for characters sets is
+ specified in the "characterset" list in the BNF listing in Appendix
+
+
+
+Deutsch, et al Standards Track [Page 36]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ F.
+
+ The theory of reply codes is described in Appendix E in STD 10, RFC
+ 821 [POST82].
+
+------------------------------------------------------------------------
+
+List of system response codes
+------------------------------
+
+110 Too many hits The number of matches exceeded
+ the value specified by the
+ maxhits constraint. Server
+ will still reply with as many
+ records as "maxhits" allows.
+
+111 Requested constraint not supported One or more constraints in
+ query is not implemented, but
+ the search is still done.
+
+112 Requested constraint not fullfilled One or more constraints in
+ query has unacceptable value
+ and was therefore not used,
+ but the search is still done.
+
+200 Command Ok Command accepted and executed.
+ The client must wait for a
+ transaction end system message.
+
+201 Command Completed successfully Command accepted and executed.
+
+203 Bye Server is closing connection
+
+220 Service Ready Greeting message. Server is
+ accepting commands.
+
+226 Transaction complete End of data. All responses to
+ query are sent.
+
+430 Authentication needed Client requested information
+ that needs authentication.
+
+500 Syntax error
+
+502 Search expression too complicated This message is sent when the
+ server is not able to resolve
+ a query (i.e. when a client
+ sent a regular expression that
+
+
+
+Deutsch, et al Standards Track [Page 37]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ is too deeply nested).
+
+530 Authentication failed The authentication phase
+ failed.
+
+600 <token> Subsequent attribute values
+ are encoded in the charater
+ set specified by <token>.
+
+ Table V - System response codes
+
+------------------------------------------------------------------------
+
+Appendix F - The WHOIS++ BNF Grammar
+
+
+
+ whois-command = ( system-command [":" "hold"]
+ / terms [":" globalcnstrnts] ) NL
+
+ system-command = "constraints"
+ / "describe"
+ / "commands"
+ / "polled-by"
+ / "polled-for"
+ / "version"
+ / "list"
+ / "show" [1*SP string]
+ / "help" [1*SP string]
+ / "?" [string]
+
+ terms = and-expr *("or" and-expr)
+
+ and-expr = not-expr *("and" not-expr)
+
+ not-expr = ["not"] (term / ( "(" terms ")" ))
+
+ term = generalterm / specificterm
+ / shorthandle / combinedterm
+
+ generalterm = string *(";" localcnstrnt)
+
+ specificterm = specificname "=" string
+ *(";" localcnstrnt)
+
+ specificname = "handle" / "value"
+
+ shorthandle = "!" string *(";" localcnstrnt)
+
+
+
+Deutsch, et al Standards Track [Page 38]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ combinedterm = string "=" string *(";" localcnstrnt)
+
+ globalcnstrnts = globalcnstrnt *(";" globalcnstrnt)
+
+ globalcnstrnt = localcnstrnt
+ / "format" "=" format
+ / "maxfull" "=" 1*digit
+ / "maxhits" "=" 1*digit
+ / opt-globalcnst
+
+ opt-globalcnst = "hold"
+ / "authenticate" "=" auth-method
+ / "name" "=" string
+ / "password" "=" string
+ / "language" "=" language
+ / "incharset" "=" characterset
+ / "ignore" "=" string
+ / "include" "=" string
+
+ format = "full" / "abridged" / "handle" / "summary"
+ / "server-to-ask"
+
+ 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" / "utf-8" /
+ charset-value
+
+ charset-value = 1*char
+
+ localcnstrnt = "search" "=" searchvalue /
+ "case" "=" casevalue
+
+ searchvalue = "exact" / "substring" / "regex" / "fuzzy"
+ / "lstring"
+
+ casevalue = "ignore" / "consider"
+
+ auth-method = "password"
+
+ string = 0*char
+
+ char = "\" specialchar
+ / <Characters 0-255 (decimal) except specialchar>
+
+
+
+
+
+Deutsch, et al Standards Track [Page 39]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ specialchar = " " / <tab> / "=" / "," / ":" / ";" / "\" /
+ "*" / "." / "(" / ")" / "[" / "]" / "^" /
+ "$" / "!" / "?"
+
+ digit = "0" / "1" / "2" / "3" / "4" /
+ "5" / "6" / "7" / "8" / "9"
+
+ NL = <CR LF (decimal 13 10)>
+
+
+ NOTE: Significant blanks must be escaped. The following
+ characters, when significant to the query, may be preceded
+ and/or followed by a single blank:
+
+ : ; , ( ) = !
+
+Appendix G - Description of Regular expressions
+
+ The regular expressions described in this section is the same as used
+ in many other applications and operating systems. It is though very
+ simple and does not include logical operators AND and OR.
+
+ Searches using regular expressions are always using substring
+ matching except when the regular expression contains the characters
+ '^' or '$'.
+
+ Character Function
+ --------- --------
+
+ <any except those listed in this table> Matches itself
+
+ . Matches any character
+
+ a* Matches zero or more 'a'
+
+ [ab] Matches 'a' or 'b'
+
+ [a-c] Matches 'a', 'b' or 'c'
+
+ ^ Matches beginning of
+ a token
+
+ $ Matches end of a token
+
+
+
+
+
+
+
+
+Deutsch, et al Standards Track [Page 40]
+
+RFC 1835 Architecture of the WHOIS++ service August 1995
+
+
+ Examples
+ ---------
+
+ String Matches Matches not
+ ------- ------- -----------
+ hello xhelloy heello
+ h.llo hello helio
+ h.*o hello helloa
+ h[a-f]llo hello hgllo
+ ^he.* hello ehello
+ .*lo$ hello helloo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Deutsch, et al Standards Track [Page 41]
+