home *** CD-ROM | disk | FTP | other *** search
Text File | 2003-06-11 | 78.7 KB | 2,300 lines |
-
-
-
-
-
-
- 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]
-
-