view Side-By-Side changes
Network Working Group Peter Deutsch INTERNET-DRAFT BUNYIP INFORMATION SYSTEMS, inc<draft-ietf-wnils-whois-arch-01.txt><draft-ietf-wnils-whois-arch-02.txt> Rickard Schoultz Expires: 25JanuaryJuly 95 KTHNOC Patrik FaltstromKTHBUNYIP INFORMATION SYSTEMS, inc Chris Weider BUNYIP INFORMATION SYSTEMS, inc 25July 1994January 1995 Architecture of the WHOIS++ service STATUS OF THIS MEMO This document is an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by otherdocumentsdocu- ments at any time. It is inappropriate to use Internet- Drafts as reference material or to cite them other than as ``work inprogress.''pro- gress.'' To learn the current status of any Internet-Draft, please check the ``1id-abstracts.txt'' listing contained in the Internet- Drafts Shadow Directories on ds.internic.net (US East Coast), nic.nordu.net (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific Rim). 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 authenti- cation mechanism for protecting all or part of the associated WHOIS++ information database from unauthorized access is also described.The additional architectural issues and commands added to support the distributed indexing service are described in [Weider94]. This present document should be read in conjunction with the additional reference.Deutsch, et al [Page 1]^LInternet-Draft Architecture of the WHOIS++ service 25July 1994 1.January 1995 Table of contents Part I - WHOIS++ Overview 1.1. Purpose andMotivation The current NIC WHOIS service [HARR85] is usedMotivation....................................... 2 1.2. Basic Information Model...................................... 3 1.2.1. Changes toprovide a very limited directory service, serving information about a small number of Internet users registered with the DDN NIC. Over timethebasic service has been expanded to serve additional informationcurrent WHOIS Model......................... 3 1.2.2. Registering WHOIS++ servers................................ 4 1.2.3. The WHOIS++ Search Selection Mechanism..................... 5 1.2.4. The WHOIS++ Architecture................................... 6 1.3. Indexing in WHOIS++.......................................... 6 1.4. Getting Help................................................. 7 1.4.1. Minimum HELP Required...................................... 8 1.5. Options andsimi- lar services have also been set up on other hosts. Unfortunately, these additionsConstraints...................................... 8 1.6. Formatting Responses......................................... 8 1.7. Reporting Warnings andextensions have been done in an ad hocErrors................................ 9 1.8. Privacy anduncoordinated manner.Security Issues.................................. 9 Part II - WHOIS++ Implementation 2.1. Introduction................................................. 11 2.1.1. Thebasic WHOIS information model represents each individual record as a Rolodex-like collectionWHOIS++ interaction model.............................. 11 2.2. The WHOIS++ Command set...................................... 12 2.2.1. System Commands............................................ 12 2.2.1.1. The COMMANDS command..................................... 13 2.2.1.2. The CONSTRAINTS command.................................. 13 2.2.1.3. The DESCRIBE command..................................... 14 2.2.1.4. The HELP command......................................... 14 2.2.1.5. The LIST command......................................... 14 2.2.1.6. The POLLED-BY command.................................... 14 2.2.1.7. The POLLED-FOR command................................... 15 2.2.1.8. The SHOW command......................................... 15 2.2.1.9. The VERSION command...................................... 15 2.2.2. The Search Command......................................... 15 2.2.2.1. Format oftext. Each record hasaunique 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 relia- bility, the huge volumeSearch Term.................................. 16 2.2.2.2. Format oftraffic thatafull scale directory ser- vice will generate and the potentially huge number of usersSearch String................................ 17 2.3. WHOIS++ Constraints.......................................... 18 2.3.1. Required Constraints....................................... 18 2.3.2. Optional Constraints....................................... 19 2.3.2.1. The SEARCH Constraint.................................... 20 2.3.2.2. The FORMAT Constraint.................................... 21 2.3.2.3. The MAXFULL Constraint................................... 21 2.3.2.4. The MAXHITS Constraint................................... 21 2.3.2.5. The CASE Constraint...................................... 21 2.3.2.6. The AUTHENTICATE Constraint.............................. 21 2.3.2.7. The NAME Constraint...................................... 22 2.3.2.8. The PASSWORD Constraint.................................. 22 2.3.2.9. The LANGUAGE Constraint.................................. 22 2.3.2.10. The INCHARSET Constraint................................ 22 2.3.2.11. The IGNORE Constraint................................... 23 2.3.2.12. The INCLUDE Constraint.................................. 23 Deutsch, et al [Page 2] Internet-Draft Architecture ofsuch a service, such a trivial architecture is obviously unsuitable for the current Internet's needs for information services. This document describesthearchitecture and protocol for WHOIS++, a simple, distributed and extensible information lookupWHOIS++ servicebased upon a small set25 January 1995 2.4. Server Response Modes........................................ 23 2.4.1. Default Responses.......................................... 24 2.4.2. Format of Responses........................................ 24 2.4.3. Syntax ofextensions to the original WHOIS informa- tion model. These extensions allow the new service to address the community's needs forasimple directory service, yet the extensi- ble 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 trivialFormatted Response............................. 24 2.4.3.1. A FULL format response................................... 25 2.4.3.2. ABRIDGED Format Response................................. 26 2.4.3.3. HANDLE Format Response................................... 26 2.4.3.4. SUMMARY Format Response.................................. 27 2.4.3.5. SERVERS-TO-ASK Response.................................. 27 2.4.4. System Generated Messages.................................. 28 2.5. Compatibility with Older WHOISdata model and query protocol and a companion extensible, distributed indexing service.Servers....................... 28 3. Miscellaneous.................................................. 28 3.1. Acknowledgements............................................. 28 3.2. Contact information.......................................... 29 Appendix Anumber of other options have also been added, like boolean operators, more powerful search constraints and search methods and most specificly structured the data- Some Sample Queries................................... 30 Appendix B - Some sample responses................................. 31 Appendix C - Sample responses tomake 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 unau- thorized access is also briefly described.system commands................... 33 Appendix D - Sample whois++ session................................ 35 Appendix E - System messages....................................... 37 Appendix F - Theadditional architectural issues and commands added to support an optional distributed indexing service are described in [Weider93]. This present document should be read in conjunction with the additional reference.WHOIS++ BNF Grammar............................... 39 Appendix G - Description of Regular expressions.................... 41 Deutsch, et al [Page2] ^L3] Internet-Draft Architecture of the WHOIS++ service 25July 1994 The basic architecture ofJanuary 1995 1. Part I - WHOIS++allows distributed maintenance of the directory contentsOverview 1.1. Purpose andthe use of the WHOIS++ indexing service for locating additionalMotivation The current NIC WHOISservers. Although a general overview of thisservice [HARR85] isincluded for completeness, the reader is referredused to[Weider94] for full detailsprovide a very limited directory service, serving information about a small number of Internet users registered with theindexing extensions. 1.2. Basic Information Model Our extensions toDDN NIC. Over time theexisting WHOISbasic serviceare centered upon a recommendationhas been expanded tostructure user information around a series of standardizedserve additional informationtemplates, such as to those described by [IAFA1]. Such templates consist of ordered sets of data elements (or attribute-value pairs)anda number of groups at the IETF are now workingsimi- lar services have also been set up onstandardizing their format and content [IAFA], [NIR]. It is intended that adding such structured templates to a serverother hosts. Unfortunately, these additions andsubsequently identifyingextensions have been done in an ad hoc andsearching them be simple tasks.uncoordinated manner. Thecreation and use of customized templates should also be possi- ble with little effort, although their use should be discouraged where appropriate standardized templates exist. We also offerbasic WHOIS information model represents each individual record as asetRolodex-like collection ofextensions to the trivial protocol described in RFC954 [HARR85]text. Each record has a unique identifier (or handle), but otherwise is assumed toallow the userhave little structure. The current service allows users toconstrainissue searchesto desired attributes or template types, in addition to the existing commandsforspecifyingindividual strings within individual records, as well as searches for individual record handlesor simple strings. It is expected that the minimalist approach we have taken will find application whereusing a very simple query-response protocol. Despite its utility, thehigh cost of configuring and operating tradi- tionalcurrent NIC WHOIS service cannot function as a general White Pagesservices can not currently be justified. Also note thatservice for thenew architecture makes no assumptions aboutentire Internet. Given thesearch and retrieval mechanisms used within individual servers. Operators are freeinability of a single server touse dedicated database formats, fast indexing softwareoffer guaranteed response oreven provide gateways to otherrelia- bility, the huge volume of traffic that a full scale directoryservices to storeser- vice will generate andretrieve information, if desired. The WHOIS++ server simply functions asthe potentially huge number of users of such aknown front end, offeringservice, such asimple data modeltrivial architecture is obviously unsuitable for the current Internet's needs for information services. This document describes the architecture andcommunicating throughprotocol for WHOIS++, awell known portsimple, distributed andquery protocol. The formatextensible information lookup service based upon a small set ofboth queries and replies has been structuredextensions to the original WHOIS informa- tion model. These extensions allow theuse of client software for generating searches and displayingnew service to address theresults. Atcommunity's needs for a simple directory service, yet thesame time, some effort has been madeextensi- ble architecture is expected tokeep responses at leastalso allow it tosome degree readible by humans,find application in a number of other information service areas. Added features include an extension toensure low entry costthe trivial WHOIS data model andto ease debugging. The actual implemention details ofquery protocol and a companion extensible, distributed indexing service. A number ofan individual WHOISother options have also been added, like boolean operators, more powerful searchengine are leftconstraints and search methods and most specificly structured the data to make both theimaginationclient and the server part of theimplementordialogue more stringent anditparseable. An optional authentication mechanism for protecting all or parts of the associated WHOIS++ information database from unau- thorized access ishoped thatalso briefly described. The basic architecture of WHOIS++ allows distributed maintenance of thesimple, extensible approach taken will encourage experimentationdirectory contents and thedevelopmentuse ofimproved search engines.the WHOIS++ indexing service for locating additional WHOIS servers. Although a general overview of this service is included for completeness, the indexing exten- sions are described in a separate paper. Deutsch, et al [Page3] ^L4] Internet-Draft Architecture of the WHOIS++ service 25July 1994 1.2.1. ChangesJanuary 1995 1.2. Basic Information Model Our extensions to thecurrent WHOIS Model The currentexisting WHOIS serviceis basedare centered uponan extremely simple data model. The NIC WHOIS database consists ofa recommendation to structure user information around a series ofindividual records, each of which is identifiedstandardized information templates, such as to those described bya single unique identifer (the "handle"). Each record contains one or more lines[IAFA1]. Such templates consist ofinforma- tion. Currently, there is no structure or implicit orderingordered sets ofthis information, although by implication each record is concerned with information aboutdata elements (or attribute-value pairs) and asingle 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 typingnumber of groups at thedatabase records. In effect, each recordIETF are now working on standardizing their format and content [IAFA], [NIR]. It isbased upon one ofintended that adding such structured templates to aspecified setserver and subsequently identifying and searching them be simple tasks. The creation and use oftem- plates, each containingcustomized templates should also be possi- ble with little effort, although their use should be discouraged where appropriate standardized templates exist. We also offer afinite and specified numberset ofdata ele- ments. Thisextensions to the trivial protocol described in RFC954 [HARR85] to allowusersthe user toeasily limitconstrain searches tospecific col- lections 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++ data- base on the Internet be assigned a unique handle, analogousdesired attributes or template types, in addition to thehandle associated with each database record. The WHOIS++ database structureexisting commands for specifying handles or simple strings. It isshown in Fig. 1. 1.2.2. Registering WHOIS++ servers We proposeexpected thatindividual database handles be registered throughtheInternet Assigned Numbers Authority (the IANA), ensuring their uniqueness. Thisminimalist approach we have taken willallow us to specify each WHOIS++ entry onfind application where theInternet as a server handle and a unique record handle pair. This pair is called the ``composed handle''. A unique registered handle is preferable to using the host's IP address, since it is conceivablehigh cost of configuring and operating tradi- tional White Pages services can not currently be justified. Also note that theWHOIS++ server for a par- ticular domain may move over time. If we preserve the unique WHOIS++ handle in such cases we havenew architecture makes no assumptions about theoption of using it for resource discoverysearch andnetworked informationretrieval(see [IIIR] for a discussion of resource and discovery and support issues). Theremechanisms used within individual servers. Operators aremany ways of guaranteeing uniqueness offree 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++ serverhandles; we will discuss them insimply functions as aseparate paper. We believe that organizing information aroundknown front end, offering aseries of such tem- plates will make it easier for administrators to gathersimple data model andmain- tain this informationcommunicating through a well known port andthus encourage themquery protocol. The format of both queries and replies has been structured tomake such informa- tion available.allow the use of client software for generating searches and displaying the results. At the same time,as users become more familiar with the data elements available within specific templates they will be better ablesome effort has been made tospecify their searches, leadingkeep responses at least toa more useful service. Deutsch, et al [Page 4] ^L Internet-Draft Architecturesome degree readible by humans, to ensure low entry cost and to ease debugging. The actual implemention details of of an individual WHOIS search engine are left to the imagination of theWHOIS++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 service25 July 1994 ______________________________________________________________________ | | | + Single unique WHOIS++is based upon an extremely simple data model. The NIC WHOIS databasehandle | | | | _______ _______ _______ | | handle3 |.. .. | handle6 |.. .. | handle9 |.. .. | | | _______ | _______ | _______ | | | handle2 |.. .. | handle5 |.. .. | handle8 |.. .. | | | _______ | _______ | _______ | | | handle1 |.. .. | handle4 |.. .. | handle7 |.. .. | | | |.. .. | |.. .. | |.. .. | | | ------- ------- ------- | | Template Template Template | | Type 1 Type 2 Type 3 | | | | | | | | | | Fig.1 - Structureconsists of aWHOIS++ database. | | | | Notes: - Entire databaseseries of individual records, each of which is identified by a single uniqueWHOIS | | handle. | | -identifer (the "handle"). Each recordhas a single unique handle and a specific set | |contains one or more lines ofattributes, determinedinforma- tion. Currently, there is no structure or implicit ordering of this information, although bythe template type used. | | - Each value associated with an attribute can be any ASCII | | string up to a specified length. | |______________________________________________________________________| 1.2.3. The WHOIS++ Search Selection Mechanism The WHOIS++ search mechanismimplication each record isintended to be extremely simple. A search command consists of one or more search terms,concerned withan optional nvsetDeutsch, et al [Page 5] Internet-Draft Architecture ofglobal constraints (specifiers that modify or control a search). Search terms allowthe WHOIS++ service 25 January 1995 information about a single userto specify template type, attribute, valueorhandle that any record returns must satisfy. Each search term canservice. We havean optional set of local constraints that applyimplemented two basic changes toonly that term. A WHOIS++this model. First, we have structured the information within the databasemay be seenasa single rolodex-like collectioncollections oftyped records.data elements, or simple attribute/value pairs. Eachterm specifiesindividual record contains afurther constraint that the selectedspecified ordered set ofoutput records must satisfy. Each term may thus be thoughtthese data elements. Secondly, we have introduced typing ofas performing a subtractive selection, inthesense that anydatabase records. In effect, each recordthat does not fulfill the termisdiscarded from the result set. Boolean searches are possible by the usebased upon one ofAND, OR, NOTa specified set of tem- plates, each containing a finite andparenthesis. Deutsch, et al [Page 5] ^L Internet-Draft Architecturespecified number ofthe WHOIS++ service 25 July 1994 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, which is described in [Weider94]. A single physical server can actdata ele- ments. This allow users to easily limit searches to specific col- lections of information, such asboth a base level serverinformation about users, services, abstracts of papers, descriptions of software, andan indexing server. Aso on. As a final extension, we require that each individual WHOIS++ data- baselevel server is one which contains only filled templates. An indexing server is one which contains forward knowledge (q.v.) and pointerson the Internet be assigned a unique handle, analogous toother indexing servers or base level servers. 1.3. Indexing inthe handle associated with each database record. The WHOIS++Indexingdatabase structure is shown in Fig. 1. 1.2.2. Registering WHOIS++is used to tie together many base levelserversand index servers intoWe 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 aunified directory service. Each base levelserver handle andindex server which wishes to participate ina unique record handle pair. This pair is called theunified directory service must generate "forward knowledge" for``composed handle''. A unique registered handle is preferable to using theentrieshost's IP address, since itcontains. One type of forward knowledgeis conceivable that the WHOIS++ server for a par- ticular domain may move over time. If we preserve the"centroid", discussedunique WHOIS++ handle in[Weider94]. An examplesuch cases we have the option of using it for resource discovery and networked information retrieval (see [IIIR] for acentroid is as follows: if a whois++discussion of resource and discovery and support issues). There are many ways of guaranteeing uniqueness of servercon- tained 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 centroidhandles; we will discuss them in a separate paper. We believe that organizing information around a series of such tem- plates will make it easier for administrators to gather and main- tain thisserver wouldinformation and thus encourage them to make such informa- tion available. At the same time, as users become more familiar with the data elements available within specific templates they will beTemplate: Person First-Name: Joe John Last-Name: Smith Favourite-Drink:Beer Labatt Molson Template: Domain Domain-Name: foo.edu Contact-Name: Mike Foobarbetter able to specify their searches, leading to a more useful service. Deutsch, et al [Page 6]^LInternet-Draft Architecture of the WHOIS++ service 25July 1994 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. Implementors of this protocol are strongly encouraged to incor- porate centroid generation abilities into their servers, and to read [Weider94] carefully. ------------------------------------------------------------------- ____ ____ top levelJanuary 1995 ______________________________________________________________________ | | | + Single unique WHOIS++ database handle | |whois index| | _______ _______ _______ | |servers ---- ---- ____ ____ first levelhandle3 |.. .. | handle6 |.. .. | handle9 |.. .. | |whois index| _______ | _______ | _______ | |servers ---- ---- ____ ____ ____ individual| handle2 |.. .. | handle5 |.. .. | handle8 |.. .. | | |whois servers_______ | _______ | _______ | | | handle1 |.. .. |---- ---- ---- Fig.handle4 |.. .. | handle7 |.. .. | | | |.. .. | |.. .. | |.. .. | | | ------- ------- ------- | | Template Template Template | | Type 1 Type 2 Type 3 | | | | | | | | | | Fig.1 -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 setStructure ofhelp commands, allowing users to find out information about both the individual server and the entirea WHOIS++service itself. Thisdatabase. | | | | Notes: - Entire database isdone in the context of the new extended information modelidentified bydefining 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, asaminimum,single unique WHOIS | | handle. | | - Each record has a singleexample of SERVICESunique handle andHELP records, which can be accessed through appropriate commands. Deutsch, et al [Page 7] ^L Internet-Draft Architecture of the WHOIS++ service 25 July 1994 1.4.1. Minimum HELP Required Executing the command: DESCRIBE gives a brief information about the WHOIS++ server. 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 uponaminimal core set of commands and controlling constraints. A smallspecific set | | ofadditional optional commands and constraintsattributes, determined by the template type used. | | - Each value associated with an attribute can besupported. These would allow usersany ASCII | | string up toperform such tasks as provide security options, modify the information contents ofaserver or add multilingual support.specified length. | |______________________________________________________________________| 1.2.3. Therequired set of WHOIS++ commands are summarized in section 2.2.WHOIS++constraints are described in section 2.4. Optional commands and constraints are described in section 2.5. 1.6. Formatting ResponsesSearch Selection Mechanism Theoutput returned by aWHOIS++server is structured to allow machine parsing and automated handling. Of particular interest in the ability to return summary information about asearch(without having to return the entire results) and the abilitymechanism is intended toencode graphics and other information, using the MIME message encoding format. All output of searches willbereturned in oneextremely simple. A search command consists ofsix output for- mats, which will beoneof FULL, ABRIDGED, HANDLE, SUMMARY, SERVERS-TO-ASKorMIME. Notemore search terms, with an optional nvset of global constraints (specifiers that modify or control aconforming server is only required to supportsearch). Search terms allow thefirst four formats. When available, SERVERS-TO-ASK format is useduser toindicatespecify 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 fulfill the term is discarded from the result set. Boolean searches are possible by the use of AND, OR, NOT and parenthesis. Deutsch, et al [Page8] ^L7] Internet-Draft Architecture of the WHOIS++ service 25July 1994 search cannot be completed but that one or more alternativeJanuary 1995 1.2.4. The WHOIS++servers may be able to performArchitecture The WHOIS++ directory service has an architecture which is separated into two components; thesearch. When available, MIME formatbase level server, which isused to encode outputdescribed inMIME format [BORE93]this paper, and[MOOR93]. This allows the responsea 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 toinclude attri- bute valuesother indexing servers or base level servers. 1.3. Indexing indifferent character sets. Details of each output format are specifiedWHOIS++ Indexing insection 2.5. 1.7. Reporting Warnings and Errors The formatted response ofWHOIS++commands allows the encoding of warning or error messagesis used tosimplify parsing and machine handling. The syntax of output formats are described in detail in section 2.5,tie together many base level servers anddetails of WHOIS++ warningsindex servers into a unified directory service. Each base level server anderror conditions are given in section appendix E. All system messages are numerical, but can be tagged with text. It is the clients decision if the text is presentedindex server which wishes to participate in theuser. 1.8. Privacy and Security Issues The basic WHOIS++unified directory servicewas conceived as a simple, unauthenti- cated 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 usedmustbegin with the characters "X-" and should thus be regarded as experimental and non-standard. Note that the WHOIS++ authentication mechanism does not dictategenerate "forward knowledge" for theactual authentication scheme used,entries itmerely provides a framework for indicating that a particular transactioncontains. One type of forward knowledge isto be authenti- cated, andtheappropriate 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"centroid". An example ofusername and passworda centroid issent together with the search string so theas follows: if a whois++ servercan verify that the user have access to the information. Note that this is NOT by any means a method recom- mended to secure the data itself because both password and informa- tion are tranferred unencrypted over the network. Given the unauthenticated nature that default services like white pages services are, it is easy to either forgetcon- tained 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 theimplications ofcentroid for thisand just show all data to the public Internet, or think thatserver 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 Deutsch, et al [Page9] ^L8] Internet-Draft Architecture of the WHOIS++ service 25July 1994 Internet is so dangerous that information is hidden fromJanuary 1995 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 theInter- net soservers that thewhole idea ofindex server knows about can be searched with aglobal whitepages service is lost. Thereforesingle query to thetype of authentication scheme selected andindex server; thepublic nature ofindex server holds theInternet environment must still be taken into con- sideration when assessingforward knowledge along with pointers to thesecurityservers it indexes, andauthentication ofcan refer the query to servers which might hold informationserved. A more detailed exposition on security is outsidewhich satisfies thescopequery. Implementors of thisdocument. Deutsch, et al [Page 10] ^L Internet-Draft Architecture of the WHOIS++ service 25 July 1994 2. Part II - WHOIS++ Implementation 2.1. Introduction The WHOIS++protocolspecifies the interactions between a WHOIS client and a WHOIS server supporting the WHOIS++ extensions. These extensionsaredesignedstrongly encouraged to incor- porate 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 tobe backwards compatible with existing servers, inthesensebasic WHOIS service is the requirement that all servers support at least anew server receiving anyminimal set of help commands, allowing users to find out information about both theolder commands specified in RFC 954 [HARR85] will behave in the same manner asindividual server and theoriginal NIC WHOIS server. Obviously, itentire WHOIS++ service itself. This isnot possible to ensure desired behaviour if onedone in the context of the new extendedcommands is sentinformation model by defining two specific template formats and requiring each server toan olderoffer at least one example of each record using these formats. The operator of each WHOISserver, since the requested functionalityservice issimply not there. Still, it would be possibletherefor expected toquery whether the WHOIS++ command set is supportedhave, asan attribute for each WHOIS server in an appropriate services registry (which itself could be set up usingaWHOIS++ server). Thus, in practice this should not beminimum, aproblem. In addition, any such command sent to an older WHOIS server would simplysingle example of SERVICES and HELP records, which can betreated asaccessed through appropriate commands. Deutsch, et al [Page 9] Internet-Draft Architecture of the WHOIS++ service 25 January 1995 1.4.1. Minimum HELP Required Executing the command: DESCRIBE gives asearch term, and thus no harmbrief information about the WHOIS++ server. Executing the command: HELP gives a brief description of the WHOIS++ service itself. The text of both required helped records shouldresult.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 Thesmall numberWHOIS++ service is based upon a minimal core set ofolder servers,commands andthe probability that at least somecontrolling constraints. A small set ofthe older servers willadditional optional commands and constraints can beconvertedsupported. These would allow users toWHOIS++perform such tasks asimplementations become available, means that backwards compatibil- ity is not expected to beprovide security options, modify the information contents of aproblem in practice. 2.1.1.server or add multilingual support. The required set of WHOIS++interaction model Acommands are summarized in section 2.2. WHOIS++server will normally listen for a TCP connections on the allocated WHOIS port (port 43) (althoughconstraints are described in section 2.4. Optional commands and constraints are described in section 2.5. 1.6. Formatting Responses The output returned by a WHOIS++ servercan be accessed over any TCP connection). Once a connectionisesta- blished, the server issues a banner message, then 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 con- straint is specified as part of any command, the server continuesstructured tolisten on the connection for another line of input. This cycle continues as long asallow machine parsing and automated handling. Of particular interest in thesender continuesability toappend the required HOLD constraintreturn summary information about a search (without having toeach subsequent command. Atreturn thesame time, each server is permitted to set an optional timeout value (which shouldentire results). All output of searches will beindicatedreturned inthe response to the CONSTRAINTS command). If set, theone of five output for- mats, which will be one of FULL, ABRIDGED, HANDLE, SUMMARY or SERVERS-TO-ASK. Note that a conforming server isfreeonly required toterminate an idle connection at any time after this delay has passed with no input from the client. If the server terminatessupport theconnection duefirst four formats. When available, SERVERS-TO-ASK format is used totimeout, it willindicate that a search cannot beindicated by the system message. The timeout value is not changeable bycompleted but that one or more alternative WHOIS++ servers may be able to perform theclient.search. Deutsch, et al [Page11] ^L10] Internet-Draft Architecture of the WHOIS++ service 25July 1994 2.2. The WHOIS++ Command set There are two typesJanuary 1995 Details ofWHOIS++ 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 thateach output format arenot required by all servers.specified in section 2.5. 1.7. Reporting Warnings and Errors Thesetformatted response ofrequiredWHOIS++systemcommandsare listed in Table I. Details of the allowable search terms for the search com- mand are included in Table II. Each WHOIS++ command alsoallows theuseencoding ofonewarning ormore controlling constraints, which select can be usederror messages tooverride defaults or oth- erwise 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)simplify parsing andMAXHITS (which determines the maximum numbermachine handling. The syntax ofmatches that a a search can return). These required constraintsoutput formats aresummarizeddescribed inTable III. An additional set of optional constraints are used to provide sup- port for different character sets, indicate the needdetail in section 2.5, andtypedetails ofauthentication to perform on a transaction,WHOIS++ warnings andpermit multiple transactions during a single communications session. These optional constraintserror conditions arelistedgiven inTable IV.section appendix E. All system messages are numerical, but can be tagged with text. It ispossible, usingtherequired COMMANDS and CONSTRAINTS system commands,clients decision if the text is presented toquery any WHOIS++ server for its list of supported commandsthe user. 1.8. Privacy andconstraints. 2.2.1. System Commands System commandsSecurity Issues The basic WHOIS++ service was conceived as a simple, unauthenti- cated information lookup service, but there arecommands tooccasions 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 theservercharacters "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 forinformation or to control its operation. These include commandsindicating that a particular transaction is tolistbe authenti- cated, and thetemplate types available fromappropriate mechanisms to use. This mechanism is extensible and individualservers,implementors are free toobtainadd additional mechanisms. This document includes asingle blank templatevery simple authentication scheme where a combination ofany available type,username andcommands to obtainpassword is sent together with thelist of valid commands and constraints supported on a server. There are also commands to obtainsearch string so thecurrent version ofserver can verify that theWHOIS++ protocol supported, touser have accessa simple help subsystem,toobtain a brief description oftheservice (whichinformation. Note that this isintended, among other things,NOT by any means a method recom- mended tosupportsecure theautomated registration ofdata itself because both password and informa- tion are tranferred unencrypted over theservice by yellownetwork. Given the unauthenticated nature that default services like white pagesdirectory services). All of these commands are requiredservices 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 Inter- net so the whole idea of aconforming WHOIS++ server. ------------------------------------------------------------------------ Short Long Form Functionality ----- --------- ------------- COMMANDS [ ':' HOLD ] list validglobal whitepages service is lost. Therefore the type of authentication scheme selected and the public nature of the Internet environment must still be taken into con- sideration when assessing the security and authentication of the information served. Deutsch, et al [Page 11] Internet-Draft Architecture of the WHOIS++commandsservice 25 January 1995 A more detailed exposition on security is outside the scope of this document. Deutsch, et al [Page 12]^LInternet-Draft Architecture of the WHOIS++ service 25July 1994 supported by this server CONSTRAINTS [ ':' HOLD ] List valid constraints supported by this server DESCRIBE [ ':' HOLD ] Describe this server, formatingJanuary 1995 2. Part II - WHOIS++ Implementation 2.1. Introduction The WHOIS++ protocol specifies theresponse usinginteractions between a WHOIS client and a WHOIS server supporting thestandard IAFA "Services" template '?' HELP [<string> [':' <cnstrnts>]] System help, using standard IAFA "Help" template LIST [<string> [':' <cnstrnts>]] List templates supported by this system POLLED-BY [ ':' HOLD ] List indexing servers thatWHOIS++ extensions. These extensions areknowdesigned totrack this server POLLED-FOR [ ':' HOLD ] List information about what thisbe backwards compatible with existing servers, in the sense that a new serveris tracking for SHOW <string> [':' <cnstrnts>] Show contentsreceiving any oftemplatesthe older commands specifiedVERSION [ ':' HOLD ] return current version ofin RFC 954 [HARR85] will behave in theprotocol supported. Table I - Required WHOIS++ SYSTEM commands. ------------------------------------------------------------------------ Below follows a descriptions for each command. Examples of responses to each commandsame manner as the original NIC WHOIS server. Obviously, it isin Appendix C. 2.2.1.1. The COMMANDS command The COMMANDS command returns a listnot possible to ensure desired behaviour if one of the extended commandsthatis sent to an older WHOIS server, since theserver supports. The responserequested functionality isformattedsimply not there. Still, it would be possible to query whether the WHOIS++ command set is supported as anABRIDGED response. 2.2.1.2. The CONSTRAINTS command The CONSTRAINTSattribute for each WHOIS server in an appropriate services registry (which itself could be set up using a WHOIS++ server). Thus, in practice this should not be a problem. In addition, any such commandreturnssent to an older WHOIS server would simply be treated as alistsearch term, and thus no harm should result. The small number ofconstraintsolder servers, and thevalues of thoseprobability that at least some of theserver supports. The response is formattedolder servers will be converted to WHOIS++ asa FULL response, where every constraintimplementations become available, means that backwards compatibil- ity isrepresented asnot expected to be aseparate record.problem in practice. 2.1.1. Thetemplate nameWHOIS++ interaction model A WHOIS++ server will normally listen forthese records is CONSTRAINT. No attention is paid to handles. Each record has, asaminimum, the Deutsch, et al [Page 13] ^L Internet-Draft Architecture ofTCP connections on the allocated WHOIS port (port 43) (although a WHOIS++service 25 July 1994 following two fields: - "Constraint", which contains the attribute name described - "Default", which showsserver can be accessed over any TCP connection). Once a connection is esta- blished, thedefault valueserver issues a banner message, then listens for input. The command specified in thisconstraint.input is processed and the results returned including an ending system message. If theclientoptional HOLD constraint has not been specified the connection ispermitted to changethen terminated. If thevalue ofserver supports the optional HOLD constraint,there is also: - "Range" field, which contains a list of values thatand thisserver supports, as a comma separated list; Or, if the rangecon- straint isnumerical,specified asa pairpart ofnumbers separated with a hyphen. 2.2.1.3. The DESCRIBE command This is equivalent to issuing the search command onany command, thelocalserverwith only the terms "template=services" and "subject=describe" and will result incontinues to listen on thedisplayconnection for another line of input. This cycle continues as long as thecorresponding SERVICES template with an attribute of "subject" and value of "describe", except thatsender continues to append theDESCRIBE command only searches local information and may not return pointersrequired HOLD constraint toother servers. 2.2.1.4. The HELP command The HELP command takeseach subsequent command. At the same time, each server is permitted to set an optionalargument as subject to get help for. This is equivalenttimeout value (which should be indicated in the response toissuingthesearch command onCONSTRAINTS command). If set, thelocalserveronly with the terms "template=help and subject=<subject>" (or "subject=help" if no argument specified) and will result in the display of the corresponding HELP templateis free to terminate an idle connection at any time after this delay has passed withsubject "help". The HELP command differsno input from theabove search command in that the HELP command only searches local information and may not return pointers to other servers. 2.2.1.5. The LIST command The LIST command returns the name of the templates available on the server. The answer is in ABRIDGED format withclient. If thetemplate name asserver terminates thefirst word on each line. 2.2.1.6. The POLLED-BY command The POLLED-BY command returns a list of servers andconnection due to timeout, it will be indicated by thetemplates and attribute names that those server polled as centroids from this server.system message. Theformat is in FULL format with two attributes, Template and Field. Each of thesetimeout value isa list of names ofnot changeable by thetemplates or fields polled.client. Deutsch, et al [Page14] ^L13] Internet-Draft Architecture of the WHOIS++ service 25July 1994 2.2.1.7.January 1995 2.2. ThePOLLED-FOR commandWHOIS++ Command set There are two types of WHOIS++ commands - system commands and the WHOIS++ search command. ThePOLLED-FORWHOIS++ commandreturnsset consists of alistcore set ofservers that this server has polled, and the templaterequired systems commands, a single required search command andattribute names for eachan set ofthose.optional system commands which support features that are not required by all servers. Theanswer isset of required WHOIS++ system commands are listed inFULL format with two attributes, Template and Field. 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 This is equivalent to issuingTable I. Details of the allowable searchcommand on the local server only with theterms"template=version" and will result in the display of the VERSION template, except thatfor theVERSIONsearch com- mandonly searches local information and may not return pointers to other servers. The output format is a FULL response containg a record with tem- plate name VERSION. The handle for this record is unspecified. The record must have attribute name "Version", which value is "1.0" for this version of the protocol. The record mayare included in Table II. Each WHOIS++ command alsohave the addi- tional fields "Program-Name" and "Program-Version" which gives information about the server implementation ifallows theserver so desires. 2.2.2. The Search Command A search command consistsuse of one or moresearch terms, which might each have localcontrolling constraints,followed by an optional colon withwhich select can be used to override defaults or oth- erwise modify server behavior. There is a core set ofglobal search constraints. Each attribute value in the WHOIS++ database is divided into one or more words separatedconstraints that must be supported bywhitespace. Each search term operates on every word inall conforming servers. These include SEARCH (which controls theattribute value. Two or moretype of searchterms 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 forperformed), FORMAT (which determines thesearch term they are bound to. The search termsoutput format used) and MAXHITS (which determines theDeutsch, et al [Page 15] ^L Internet-Draft Architecturemaximum number ofthe WHOIS++ service 25 July 1994 global constraints are separated withmatches that acolon (':'). Additional global constraints are appended to the end of the search command delimited withasemicolon ';'. If differentsearchconstraintscannot be fulfilled, or the combi- nation of different search constraints is uncombinable, the server may choose to ignore some constraints, but still do the search and return some records. The set ofreturn). These required constraints are summarized in Table III.TheAn additional set of optional constraints aresummarizedused to provide sup- port 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.As an option,It is possible, using the required COMMANDS and CONSTRAINTS system commands, to query any WHOIS++ servermay accept specificationsforattributesits list of supported commands and constraints. 2.2.1. System Commands System commands are commands to the server foreither inclusioninformation orexclusionto control its operation. These include commands to list the template types available from individual servers, to obtain areply. Thus, users could specify _only_ those attributessingle blank template of any available type, and commands toreturn, 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 ofobtain thefollowing: 1) A search string, followed by an optional comma and set of comma-separated local constraints. 2) A search term specifier (as listed in Table II), followed by '=', followed by a search string, an optional comma and a setlist ofcomma-separate local constraints. 3) An abbreviated search term specifier, followed by a search string, followed by an optional commavalid commands andset of comma-separate local constraints. 4) A combination of attribute name, followed by '=', followed byconstraints supported on asearch string, followed by an optional comma and set of comma-separate local constraints. If no term identifier is provided, then the search will be applied to attribute values only. This correspondsserver. There are also commands toan identifier of VALUE. If a HANDLE specifier is used thenobtain thesearch term can specify either a composed handle or a record handle. The server is respon- sible for resolvingcurrent version of thecomposed handleWHOIS++ protocol supported, to access aserver handle and a record handle. If a SEARCH-ALL specifier is used then the search will be appliedsimple help subsystem, toall template names, handles, attribute names and attribute values. When the user specifies the search term using the form: Deutsch, et al [Page 16] ^L Internet-Draft Architectureobtain a brief description of theWHOIS++service25 July 1994 "<attribute_name> = <value>" this(which isconsideredintended, among other things, tobe an ATTRIBUTE-VALUE search. For discussionsupport the automated registration of thesystem reply format, and selecting the appropriate reply format, see section 2.5. ---------------------------------------------------------------------- Valid specifiers: ----------------- Nameservice by yellow pages directory services). All of these commands are required from a conforming WHOIS++ server. ------------------------------------------------------------------------ Short Long Form 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. VALUECOMMANDS [',' <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':' HOLD ] list validlocal 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 circum- flex '^'.WHOIS++ commands Deutsch, et al [Page17] ^L14] Internet-Draft Architecture of the WHOIS++ service 25July 1994 If the search term is given in some other character set than ISO- 8859-1, it must be specifiedJanuary 1995 supported bythe constraint INCHARSET. 2.3. WHOIS++ Constraints Constraints are intended to be hints or recommendations to thethis serverabout how to process a command. They may also be used to override default behaviour, such as requestingCONSTRAINTS [ ':' HOLD ] List valid constraints supported by this server DESCRIBE [ ':' HOLD ] Describe this server, formating the response using the standard IAFA "Services" template '?' HELP [<string> [':' <cnstrnts>]] System help, using standard IAFA "Help" template LIST [':' <cnstrnts>] List templates supported by this system POLLED-BY [ ':' HOLD ] List indexing servers thataare know to track this servernot dropPOLLED-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 theconnection after performingprotocol supported. Table I - Required WHOIS++ SYSTEM commands. ------------------------------------------------------------------------ Below follows a descriptions for each command.Thus, a user might specifyExamples of responses to each command is in Appendix C. 2.2.1.1. The COMMANDS command The COMMANDS command returns asearch constraint as "SEARCH=exact", which meanslist of commands that thesearch engineserver supports. The response isto performformatted as anexact match search. It might also specify "LANGUAGE=Fr", which impliesABRIDGED response. 2.2.1.2. The CONSTRAINTS command The CONSTRAINTS command returns a list of constraints and the values of those that the servershould 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.supports. Thenot- able exceptionresponse is"HOLD", which takes no argument. All constraints can be usedformatted as aglobal 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 con- straints supported by an individual server. If a server cannot satisfy the specifiedFULL response, where every constraintthere will beis represented as amechanismseparate record. The template name forinforming the user in the reply, using system mes- sages. In such cases, the searchthese records isstill performed, with theCONSTRAINT. No attention is paid to handles. Each record has, as a minimum, theserver ignoring unsupported constraints. 2.3.1. Required Constraints The following CONSTRAINTS must be supported in all conforming WHOIS++ servers.Deutsch, et al [Page18] ^L15] Internet-Draft Architecture of the WHOIS++ service 25July 1994 ------------------------------------------------------------------ Format LOCAL/GLOBAL ------ ------------- SEARCH= {exact | lstring } LOCAL/GLOBAL FORMAT= {full | abridged | handle | summary } GLOBAL MAXHITS= { 1-<max-allowed> } GLOBAL Table III - Required WHOIS++ constraints. ------------------------------------------------------------------ 2.3.2. Optional CONSTRAINTS TheJanuary 1995 followingCONSTRAINTS and constraint values are not required of a conforming WHOIS++ server, but may be supported.two fields: - "Constraint", which contains the attribute name described - "Default", which shows the default value for this constraint. Ifsupported, their names and supported values must be returned intheresponseclient is permitted to change theCONSTRAINTS command. Deutsch, et al [Page 19] ^L Internet-Draft Architecturevalue of theWHOIS++ service 25 July 1994 --------------------------------------------------------------------- Format LOCAL/GLOBAL ------ ------------- SEARCH= { regex | fuzzy | substring | <X-format> } LOCAL/GLOBAL CASE= { ignore | consider } LOCAL/GLOBAL FORMAT= { servers-to-ask | mime | <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. ---------------------------------------------------------------------- 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". Followingconstraint, there is also: - "Range" field, which contains adefinitionlist ofeach search method. exact The search will succeed for a wordvalues thatexactly matches the search string. substring The search will succeed forthis server supports, as aword that matchescomma separated list; Or, if the range is numerical, as apartpair of numbers separated with aword. regexhyphen. 2.2.1.3. Thesearch will succeed for a word when a regular expression matches the searched data. Regular expressionDESCRIBE command This isbuilt up by using constructions of '*', '.', '^', '$', and '[]'. For use of regular expressions see Appendix G. Deutsch, et al [Page 20] ^L Internet-Draft Architecture ofequivalent to issuing theWHOIS++ service 25 July 1994 fuzzy Thesearchwill succeed for words that matchescommand on thesearch string by using an algorithm designed to catch closely related names with different spelling, e.g. nameslocal server with only thesame pronounciation. The server chooses which algorithm to use, but it may vary depending onterms "template=services" and "subject=describe" and will result in the display of the corresponding SERVICES templatename,with an attributenameof "subject" andlanguage used (see Constraint Language above). lstring The search will succed for wordsvalue of "describe", except thatbegins withthesearch string. 2.3.2.2.DESCRIBE command only searches local information and may not return pointers to other servers. 2.2.1.4. TheFORMAT ConstraintHELP command TheFORMAT constraint describes what format the result will be in. Default formatHELP command takes an optional argument as subject to get help for. This isFULL. For a description of each format, see Server Response Modes below. 2.3.2.3. The MAXFULL Constraint The MAXFULL constraint sets the limit ofequivalent to issuing thenumber of matching recordssearch command on the local serverallows 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,only with theserverterms "template=help and subject=<subject>" (or "subject=help" if no argument specified) and willreturn the responseresult inSUMMARY format ifthenumberdisplay ofhits exceeds 2,theMAXFULL constraint is set to 2 bycorresponding HELP template with subject "help". The HELP command differs from theserver. Regardless of what formatabove search command in that theclient did or didHELP command only searches local information and may notask for, the server will change the response formatreturn pointers toSUMMARY when the number of matching records equals or exceeds this value. 2.3.2.4.other servers. 2.2.1.5. TheMAXHITS ConstraintLIST command TheMAXHITS constraint setsLIST command returns themaximum numbername ofrecordstheclient can gettemplates available on the server. The answer is ina search respone. 2.3.2.5.ABRIDGED format with the template name as the first word on each line. 2.2.1.6. TheCASE ConstraintPOLLED-BY command TheCASE constraint defines if the search should be done case sen- sistive or not. Default value is to have case ignored. 2.3.2.6. The AUTHENTICATE ConstraintPOLLED-BY command returns a list of servers and the templates and attribute names that those server polled as centroids from this server. TheAUTHENTICATE constraint describes which authentication methodformat is in FULL format with two attributes, Template and Field. Each of these is a list of names of the templates or fields polled. Deutsch, et al [Page21] ^L16] Internet-Draft Architecture of the WHOIS++ service 25July 1994 to use when executing the search. By usingJanuary 1995 2.2.1.7. The POLLED-FOR command The POLLED-FOR command returns aspecific authentica- tion method, some other constraints might be needed which is speci- fied bylist of servers that this server has polled, and theauthentication method.template and attribute names for each of those. Theonly authentication method described in this documentanswer is"pass- word", if used, also thein FULL format with twoother constraints "name"attributes, Template and"pass- word" need to be set. 2.3.2.7.Field. 2.2.1.8. TheUSER ConstraintSHOW command TheUSER constraint is only used together with some authentication method named by the constraint "authenticate".SHOW command takes a template name as argument and returns information about a specific template, formatted as a FULL response. Theonly use described in this documentanswer isby sending a usernameformatted as astring of characters which togetherblank template with thestring given as an argument to the "password" constraintrequested name. 2.2.1.9. The VERSION command This issentequivalent to issuing theserver. Thesearch command on the local servercan use that pair of strings to do a simple authentication check, likeonly with theUNIX login program do. 2.3.2.8. The PASSWORD Constraint The PASSWORD constraint is only used together with some authentica- tion method named byterms "template=version" and will result in theconstraint "authenticate". Thedisplay of the VERSION template, except that the VERSION com- mand onlyuse described in this documentsearches local information and may not return pointers to other servers. The output format isby sendingapassword asFULL response containg astring of characters which togetherrecord withthe string given as an argument to the "user" constrainttem- plate name VERSION. The handle for this record issent to the server.unspecified. Theserver can use that pairrecord must have attribute name "Version", which value is "1.0" for this version ofstrings to do a simple authentication check, liketheUNIX login program do. 2.3.2.9. The LANGUAGE Constraintprotocol. TheLANGUAGE constraints can be used as an extra information torecord may also have thefuzzy matching search method,addi- tional fields "Program-Name" andit might also be used to tell"Program-Version" which gives information about the serverto give the system responses in another language, although this ability should be handled byimplementation if theclient.server so desires. 2.2.2. Thetwo-letter language code defined in ISO 639:1988 can be used asSearch 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 valuefor the language constraint. In these,in thecase ofWHOIS++ database is divided into one or more words separated by whitespace. Each search term operates on every word in theletters are insignigicant. Other language codes shallattribute value. Two or more search terms may beinterpreted according tocombined with boolean operators AND, OR or NOT (other than theInternet standard for language codes in RFC 822/MIME mes- sages, if and when such a standard is adopted. 2.3.2.10. The INCHARSET Constraintimplied AND between terms). TheINCHARSET constraint tellsoperator AND has higher precedence than theserver in which character setoperator OR, but this can be changed by the use of parentheses. Search constraints that apply to every searchstring itself is given in.term are specified as global constraints. Local constraints override global constraints for the search term they are bound to. Thedefault character set is "ISO-8859-1".search terms and the Deutsch, et al [Page22] ^L17] Internet-Draft Architecture of the WHOIS++ service 25July 1994 2.3.2.11. The IGNORE Constraint The IGNORE constraint specifies which attributesJanuary 1995 global constraints are separated with a colon (':'). Additional global constraints are appended toNOT include intheresult. All other attributes will be included (as if named explicitly byend of the"include" constraint). If an attribute is named bothsearch command delimited with a semicolon ';'. If different search constraints can not be fulfilled, or the"include" and "ignore" con- straint, the attributecombi- nation of different search constraints isto be included inuncombinable, theresult,server may choose to ignore some constraints, but still do thesystem message must be "% 205 Requested constraint not fulfilled". 2.3.2.12.search and return some records. TheINCLUDE Constraintset of required constraints are summarized in Table III. TheINCLUDE constraint specifies which attributes to includeset of optional constraints are summarized inthe result. All other attributes will be excluded (as if named expli- citly by the "ignore" constraint). IfTable IV. As anattribute is named both with the "include" and "ignore" con- straint,option, theattribute isserver may accept specifications for attributes for either inclusion or exclusion from a reply. Thus, users could specify _only_ those attributes tobe included in the result, but the system message must be "% 205 Requested constraint not fulfilled". 2.4. Server Response Modes There are currentlyreturn, or specific attributes to filter out, thus creating custom views. 2.2.2.1. Format of atotalSearch Term Each search term consists ofsix different response modes possi- ble for WHOIS++ servers. These are FULL, ABRIDGED, HANDLE, SUMMARY, SERVERS-TO-ASK and MIME. The syntaxone ofeach output format is speci- fied in more detail inthefollowing section.following: 1) AFULL format response provides the complete contents of each template matching the specified query, including the template typesearch string, followed by an optional comma andthe composed handle for each record.set of comma-separated local constraints. 2)An ABRIDGED format response provides a brief summary, includingA search term specifier (as listed in Table II), followed by '=', followed by aminimum) the composed handlesearch string, an optional comma andrelevant information for that template.a set of comma-separate local constraints. 3)A HANDLE format response returns onlyAn abbreviated search term specifier, followed by alistsearch string, followed by an optional comma and set ofhandles that matched the specified query.comma-separate local constraints. 4) ASUMMARY response provides only a brief summary of information the number of matches and the listcombination oftemplate types in whichattribute name, followed by '=', followed by a search string, followed by an optional comma and set of comma-separate local constraints. If no term identifier is provided, then thematches occured. 5) A SERVERS-TO-ASK response returns onlysearch will be applied to attribute values only. This corresponds to an identifier of VALUE. If apointerHANDLE specifier is used then the search term can specify either a composed handle or a record handle. The server is respon- sible for resolving the composed handle toanother WHOIS++ server, which might possiblya server handle and a record handle. If a SEARCH-ALL specifier is used then the search will beableapplied toanswerall template names, handles, attribute names and attribute values. When thespecified query. 6) A MIME response indicates thatuser specifies thebody ofsearch term using theresponse has been encoded in MIME message format.form: Deutsch, et al [Page23] ^L18] Internet-Draft Architecture of the WHOIS++ service 25July 1994 The server may respond with a null answer and may also respond with a null answer together with a correct system messageJanuary 1995 "<attribute_name> = <value>" this is considered toindicate that the query was too complex. 2.4.1. Default Responses By default, a WHOIS++ server will provide a FULL response. This maybechanged by the client with the usean ATTRIBUTE-VALUE search. For discussion of theglobal constraint "format". The server is allowed to provide response in SUMMARY format if the number of hits exceedssystem reply format, and selecting the appropriate reply format, see section 2.5. ---------------------------------------------------------------------- Valid specifiers: ----------------- Name Functionality ---- ------------- ATTRIBUTE-VALUE [ ',' <constrnt>]* allows combining attribute and valueof the global constraint "max- full". The server will not respond with more matches than the value speci- fied with the global constraint "maxhits"; Notspecifiers inany response for- mat. 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, upone term. HANDLE [ ',' <constrnt>]* Confine search tothe number of the "maxhits" con- straint value.handles. SEARCH-ALL [ ',' <constrnt>]* Search everything. TEMPLATE [ ',' <constrnt>]* Confine search to template names. VALUE [ ',' <constrnt>]* Confine search to attribute values. Thismechanism will allowis theserver to hidedefault. (Note: The name HANDLE can be replaced with thenumbershortname '!') Acceptable forms ofpossible matches toa searchcommand. The server response modes are summarized inspecifier: --------------------------------------- 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.) TableV. 2.4.2.II - Valid search command term specifiers. ---------------------------------------------------------------------- 2.2.2.2. Format ofResponses Each response consists ofanumerical system generated message, which canSearch String Special characters that need to betagged with text, followed by an optional formatted response message, followedquoted are preceeded by asecond system generated messages. That is: '%' <system messages> <nl> [ <formatted response> ] '%' <system messages> <nl> If therebackslash, '\'. Special characters areno matches to a query, the system is not required to generate any output as a formatted response, although it must still generate system messages. For information about the format for system messages, see Appendix E.space ' ', tab, equal sign '=', comma ',', colon ':', backslash '\', semicolon ';', asterisk '*', period '.', parenthesis '()', square brackets '[]', dollar sign '$' and circum- flex '^'. Deutsch, et al [Page24] ^L19] Internet-Draft Architecture of the WHOIS++ service 25July 1994 2.4.3. Syntax of a Formatted Response All formatted responses consist of a START line, followed by a response-specific section, followed by a TERMINATION line. ItJanuary 1995 If the search term ispermissible to insert any number of lines consisting solely of new- lines within a formatted response to improve readibility. A START line consists of a line beginning with a '#'given inthe first column, followed by one white spacesome other character(SPACE or TAB), fol- lowedset than ISO- 8859-1, it must be specified byone ofthefollowing keywords FULL, ABRIDGED, HANDLE, SUM- MARY, SERVERS-TO-ASKconstraint INCHARSET. 2.3. WHOIS++ Constraints Constraints are intended to be hints orMIME. A START line must contain no more than 81 characters, includingrecommendations to theterminating newline character. A TERMINATION line consists ofserver about how to process aline beginning withcommand. They may also be used to override default behaviour, such as requesting that a'#' in the first column, followed by one white space character (SPACE or TAB), followed byserver not drop thekeyword END, followed by zero or more characters, followed byconnection after performing anewline. A TERMINATION line must contain no more than 81 characters, includ- ing the terminating newline character. A response-specific section will be one ofcommand. Thus, a user might specify a search constraint as "SEARCH=exact", which means that thefollowing: 1) FULL Format Response 2) ABRIDGED Format Response 3) HANDLE Format Response 4) SUMMARY Format Response 5) SERVERS-TO-ASK Format Response 6) MIME format Response The details of each are specifiedsearch 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 thefollowing sections: 2.4.3.1. A FULL format response A FULL format response consistsform "<constraintname>=<value>", with <value> being one of aseries of responses, each con- sistingspecified set of valid values. The not- able exception is "HOLD", which takes no argument. All constraints can be used as aFORMAT specifier line, followed by the complete tem- plate informationglobal constraint, but only a few can be used as local. See tables IV and V forthe matching record. Each FORMAT specifier line consistsinformation ofa '#' inwhich constraints can be local. The CONSTRAINTS system command is used to list thefirst column, followedsearch con- straints supported byone white space character, the name of the correspond- ing template type, one white space character, the serverhandle,an individual server. If acolon,server cannot satisfy thehandle for that record, and a terminating newline. The template information for each recordspecified constraint there will bereturned as a series of lines consisting ofasingle space, followed bymechanism for informing thecorresponding line ofuser in therecord. Deutsch, et al [Page 25] ^L Internet-Draft Architecture ofreply, using system mes- sages. In such cases, theWHOIS++ service 25 July 1994 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. Each such 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, itsearch isto be broken into lines of no more than 81 characters, with each con- tinuation line beginningstill performed, witha "+" character in the first column, instead of the leading space. Iftheattribute value includes a line break,theline breakserver ignoring unsupported constraints. 2.3.1. Required Constraints The following CONSTRAINTS must bereplaced by a CR/LF pair and the following line begin with a "-" charactersupported inthe first column, insteadall conforming WHOIS++ servers. Deutsch, et al [Page 20] Internet-Draft Architecture of thespace character.WHOIS++ service 25 January 1995 ------------------------------------------------------------------ Format LOCAL/GLOBAL ------ ------------- SEARCH= {exact | lstring } LOCAL/GLOBAL FORMAT= {full | abridged | handle | summary } GLOBAL MAXHITS= { 1-<max-allowed> } GLOBAL Table III - Required WHOIS++ constraints. ------------------------------------------------------------------ 2.3.2. Optional CONSTRAINTS Theattribute name isfollowing CONSTRAINTS and constraint values are notrepeated on consecutive lines. 2.4.3.2. ABRIDGED Format Response An ABRIDGED format response consists of a single set of responses, consisting of a single line excerptrequired ofthe template information from each matching record. The excerpt information shall include, asaminimum,conforming WHOIS++ server, but may be supported. If supported, their names and supported values must be returned in thecomposed handle ofresponse to therecord, as well as other informationCONSTRAINTS command. Deutsch, et al [Page 21] Internet-Draft Architecture of the WHOIS++ service 25 January 1995 --------------------------------------------------------------------- Format LOCAL/GLOBAL ------ ------------- SEARCH= { regex | fuzzy | substring | <X-format> } LOCAL/GLOBAL CASE= { ignore | consider } LOCAL/GLOBAL FORMAT= { servers-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. ---------------------------------------------------------------------- 2.3.2.1. The SEARCH Constraint The SEARCH constraint is used for specifying the method that isrelevantto be used for thetemplate type.search. Theabridged template information for each record will be returned asdefault method is "exact". Following is aseriesdefinition oflines,eachof which must consist ofsearch method. exact The search will succeed for asingle space, followed by the abridged line of the record, one or more space characters,word that exactly matches thecomposed handle, andsearch string. substring The search will succeed for aCR/LF pair. Each line shall be limited to no more than 81 characters, including the terminating newline. Ifword that matches aline (including the required single space, would exceed 81 characters, it is to be broken into linespart ofno more than 81 characters, with the remainder following on the subsequent line, with the space replaced bya"+" character in the first column. If the attribute value includesword. regex The search will succeed for aline break,word when a regular expression matches theline break must be replaced by a CR/LF pair and the following line begin with a "-" character in the first column, instead of the space character. The attribute namesearched data. Regular expression isnot repeated on consecutive lines. 2.4.3.3. HANDLE Format Response A HANDLE format response consists of a single set of responses, consisting of a single line listing the composed handle and tem- plate type for each matching record. Each line shall start with one space, followedbuilt up bythe server han- dle, a colon, the record handle, one or more whitespace characters, the template typeusing constructions of '*', '.', '^', '$', andterminated by a newline.'[]'. For use of regular expressions see Appendix G. Deutsch, et al [Page26] ^L22] Internet-Draft Architecture of the WHOIS++ service 25July 1994 Each such line must contain no more than 81 characters, including the terminating newline character. If a line (includingJanuary 1995 fuzzy The search will succeed for words that matches therequired first space) would exceed 81 characters, it shall be split into multiple lines,search string by using an algorithm designed to catch closely related names witheach continuation line beginningdifferent spelling, e.g. names witha '+' instead of a space. 2.4.3.4. SUMMARY Format Response A SUMMARY format response consists of a single set of responses, consisting of a line listingthenumber of matchessame pronounciation. The server chooses which algorithm tothe specified query, followed by a list of alluse, but it may vary depending on templatetypes which satisfied the query at least once.name, attribute name and language used (see Constraint Language above). lstring Thefirst line shall beginsearch will succed for words that begins with thestring "matches: ",search string. 2.3.2.2. The FORMAT Constraint The FORMAT constraint describes what format the result will befollowed byin. Default format is FULL. For aspace and the numberdescription ofresponses to the query and terminated by a newline.each format, see Server Response Modes below. 2.3.2.3. Thesecond line shall begin withMAXFULL Constraint The MAXFULL constraint sets thestring "tem- plates: ", be followed by a newline separated listlimit of thenamenumber of matching records thetemplate types which matchedserver 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, thequery. Each line followingserver will return thefirst which includeresponse in SUMMARY format if thetext "templates:" must begin with a '-' insteadnumber ofa space. Ifhits exceeds 2, thelineMAXFULL constraint islonger than 81 characters includingset to 2 by theterminating CR/LF pair, it shall be split into multiple lines with each con- tinuation line beginning with a '+' insteadserver. Regardless ofa space. 2.4.3.5. MIME Format Response A MIMEwhat format the client did or did not ask for, the server will change the responseconsists of a MIME encoding of all responses, each consisting offormat to SUMMARY when thedatanumber ofonematchingrecord.records equals or exceeds this value. 2.3.2.4. TheresultMAXHITS Constraint The MAXHITS constraint sets the maximum number of records the client can get in a searchis contained in one MIME message.respone. 2.3.2.5. TheMIME mes- sage itself is indented with one space. Each record is embedded in the message type text/iafa-template. If the result consists of more than one record,CASE Constraint The CASE constraint defines if themessage type multipart/mixedsearch should be done case sen- sistive or not. Default value isusedtoseparate the different records from each other. See RFC-1521 [BORE93] and RFC-1522 [MOOR93] for more information about the MIME format.have case ignored. 2.3.2.6. Theformat of the message type text/iafa-template follows the specification of the FULL template, as described above.AUTHENTICATE Constraint TheMIME message itself must be indented with one space character. 2.4.3.6. SERVERS-TO-ASK Response A SERVERS-TO-ASK response consists of information to the client aboutAUTHENTICATE constraint describes whichservers to contact next to resolve a query.authentication method Deutsch, et al [Page27] ^L23] Internet-Draft Architecture of the WHOIS++ service 25July 1994 The servers-to-ask response will consist ofJanuary 1995 to use when executing the search. By using anumber of attribute- value pairs, separatedspecific authentica- tion method, some other constraints might be needed which is speci- fied byCRLF. Each linethe authentication method. The only authentication method described in this document isindented with one space. Required attributes are "Version-number", which will be "1.0","pass- word", if used, also the two other constraints "name" and"Next-Servers". The "Next-Servers" field will"pass- word" need to bereturnedset. 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 aseriesstring oflines, each holding pointer informationcharacters which together with the string given as an argument toone server. Consecutive lines shall have a hyphen "-" inthefirst column. Each line will be separated into five fields, separated with a semicolon. Those fields are: 1."password" constraint is sent to the server. The serverhandlecan use that pair ofthe server pointed at. (required) 2. A cached host named for the server pointed at. (optional) 3. A cached port number for the server pointed at. (optional) Each such line shall be limitedstrings tono more than 81 characters, including the terminating newline. Ifdo aline (includingsimple authentication check, like therequired leading single space) would exceed 81 characters, itUNIX login program do. 2.3.2.8. The PASSWORD Constraint The PASSWORD constraint isto be broken into lines of no more than 81 characters, with each con- tinuation line beginning with a "+" character in the first column. 2.4.4. System Generated Messages All system generated messages must beginonly used together witha '%' as the first character, a space assome authentica- tion method named by thesecond one, followedconstraint "authenticate". The only use described in this document is by sending athree digit number,password as aspace and an optional text message. The total lengthstring ofthe line must be no more than 81characterslong, includingwhich together with theterminating CR LF pair. Therestring given as an argument to the "name" constraint isno limitsent to thenumber of system messages that may be generated.server. Theformat for multiline replies requiresserver can use thatevery line, except the last, begin with "%", followed by space, the reply code,pair of strings to do ahyphen, and an optional text.simple authentication check, like the UNIX login program do. 2.3.2.9. Thelast line will begin with "%", followed by space,LANGUAGE Constraint The LANGUAGE constraints can be used as an extra information to thereply code, a spacefuzzy matching search method, andsome optional text. System generated messages displayed before or after the formatted response section are expectedit might also be used torefertell the server tooperation ofgive the systemor refer toresponses in another language, although this ability should be handled by theentire query. System generated messages withinclient. The two-letter language code defined in ISO 639:1988 can be used as a value for theoutputlanguage constraint. In these, the case ofan individual record during a FULL reponsethe letters areexpected to refer to that record only, and could (for example)insignigicant. Other language codes shall beusedinterpreted according toindicate problems with that record oftheresponse. See Appendix EInternet standard for language codes in RFC 822/MIME mes- sages, if and when such adescription of system messages. 2.5. Compatibility with Older WHOIS Servers Note that this format, although potentially more verbose,standard isstilladopted. 2.3.2.10. The INCHARSET Constraint The INCHARSET constraint tells the server ina human readible form. Responses from older systems that do not follow this format are still conformant, since their responseswhich character set the search string itself is given in. The default character set is "ISO-8859-1". Deutsch, et al [Page28] ^L24] Internet-Draft Architecture of the WHOIS++ service 25July 1994 would be interpreted as being equivalent to optional text messages, without a formatted response. Clients writtenJanuary 1995 2.3.2.11. The IGNORE Constraint The IGNORE constraint specifies which attributes tothis specifica- tion would displayNOT include in theresponses as a advisory text message, where it would stillresult. All other attributes will bereadibleincluded (as if named explicitly by theuser. 3. Miscellaneous 3.1. Acknowledgements The WHOIS++ effort began as"include" constraint). If anintensive brainstorming session atattribute is named both with the24th IETF,"include" and "ignore" con- straint, the attribute is to be included inBoston Massachusetts. Present atthebirth, and contributing ideas through this early phase, were (alphabetically) Peter Deutsch, Alan Emtage, Jim Fullton, Joan Gargano, Brad Passwa- ters, Simon Spero, and Chris Weider. Others who have since helped shape this document with feedback and suggestions include Patrik Faltstrom, Dan Kegel, Mark Prior and Rickard Schoultz. 3.2. Contact information Peter Deutsch, BUNYIP INFORMATION SYSTEMS, inc 310 St-Catherine St West, suite 202, Montreal, Quebec H2X 2A1 CANADA <peterd@bunyip.com> Rickard Schoultz, KTHNOC, SUNET/NORDUnet/Ebone Operations Centre 100 44 STOCKHOLM SWEDEN <schoultz@sunet.se> Patrik Faltstrom KTH/NADA 100 44 STOCKOLM SWEDEN <paf@nada.kth.se> Chris Weider BUNYIP INFORMATION SYSTEMS, inc 2001 S. Huron Parkway, #12 Ann Arbor, MI 48104 USA <clw@bunyip.com> Deutsch, et al [Page 29] ^L Internet-Draft Architecture ofresult, but theWHOIS++ service 25 July 1994 Appendix A - Some Sample Queries author=chris and template=usersystem message must be "% 205 Requested constraint not fulfilled". 2.3.2.12. Theresult will consist of all records where attribute "author" matches "chris" with case ignored. Only USER templatesINCLUDE Constraint The INCLUDE constraint specifies which attributes to include in the result. All other attributes will besearched. An example of a matching record is "Author=Chris Weider". Thisexcluded (as if named expli- citly by the "ignore" constraint). If an attribute is named both with thetypical case of search. schoultz"include" andrick;search=lstring The result will consist of all records which have one"ignore" con- straint, the attributevalue matching "schoultz" exactly and one having "rick" as leading substring, both with case ignored. One exampleis"Name=Rickard Schoultz". value=phone;search=substring The result will consist of all records which have attribute values matching *phone*, for exampleto be included in therecord "Name=Acme telephone inc.",result, butwill not matchtheattribute name "phone". (Since "value" term specifiersystem message must be "% 205 Requested constraint not fulfilled". 2.4. Server Response Modes There are currently a total of five different response modes possi- ble for WHOIS++ servers. These are FULL, ABRIDGED, HANDLE, SUMMARY and SERVERS-TO-ASK. The syntax of each output format is specified in more detail in thedefault,following section. 1) A FULL format response provides thesearch term could be "phone" as well as "value=phone".) search-all=Peter ; search=substring;case=consider The result will consistcomplete contents ofall records which have attribute names,each templatenames or attribute valuesmatching"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 containingthewords "gargano" or "joan" somewhere inspecified query, including therecord,template type andhastheword "ucdavis" somewhere incomposed handle for each record. 2) An ABRIDGED format response provides aword. The result will only showbrief summary, including (as a minimum) the"name"composed handle and"email" fields. Deutsch, et al [Page 30] ^L Internet-Draft Architecture of the WHOIS++ service 25 July 1994 Appendix B - Some sample responses. 1)relevant information for that template. 3) AFULLHANDLE formatresponse: # FULL # USER SERVHANDLE1:PD45 Name: Peter Deutsch email: peterd@bunyip.com # USER SERVHANDLE1:AE1 Name: Alan Emtage email: bajan@bunyip.com # USER SERVHANDLE1: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. # SERVICES SERVHANDLE1:WWW1 Type: World Wide Web Location: the world # END -------------------- 2) An ABRIDGED format response: # ABRIDGED Peter Deutsch peterd@bunyip.com PD45 Alan Emtage bajan@bunyip.com AE1 World Wide Web the world WWW1 # END -------------------- 3) A HANDLE format response: # HANDLE SERVHANDLE1:PD45 User SERVHANDLE1:AE1 User Deutsch, et al [Page 31] ^L Internet-Draft Architectureresponse returns only a list of handles that matched theWHOIS++ service 25 July 1994 SERVHANDLE1:WWW1 Services # END --------------------specified query. 4) A SUMMARYHANDLE format response: # SUMMARY Matches: 175 Templates: User - Services - Abstracts # ENDresponse provides only a brief summary of information the number of matches and the list of template types in which the matches occured. 5) AMIME format response: # MIME Mime-Version: 1.0 Content-Type: multipart/mixed;boundary=uniqueboundary --uniqueboundary Content-Type: text/iafa-template;charset=iso-8859-1;template=user; handle=nadakthse01:paf01 Content-Transfer-Encoding: quoted-printable Name: Patrik F=E4ltstr=F6m Email: paf@nada.kth.se --uniqueboundary Content-Type: text/iafa-template;charset=us-ascii;template=user; handle=sunetse01:risc01 Name: Rickard Schoultz Email: schoultz@sunet.se --uniqueboundary- # ENDSERVERS-TO-ASK response returns only a pointer to another WHOIS++ server, 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 Deutsch, et al [Page32] ^L25] Internet-Draft Architecture of the WHOIS++ service 25July 1994 Appendix C - Sample responses to system commands C.1 Response to the LIST command # ABRIDGED USER SERVICES HELP # END C.2 Response to the SHOW command This example show the result after issuing "show help": # FULL # TEMPLATE serverhandle1:user-template Template-Name: USER Attribute-Names: Name,Organization-Name,Organization-Type,Work-Phone, +Work-Fax,Work-Postal,Job-Title,Department,Email,Handle,Home-Phone, +Home-Postal,Home-Fax # TEMPLATE serverhandle1:help Template-Name: HELP Attribute-Names: Subject,Description,Handle # END C.3 Response to the POLLED-BY command # FULL # POLLED-BY xyz:serverhandle1 Server-handle: serverhandle1 Cached-Host-Name: sunic.sunet.se Cached-Host-Port: 7070 Template: user Field: ALL # POLLED-BY xyz:serverhandle2 Server-handle: serverhandle2 Cached-Host-Name: kth.se Cached-Host-Port: 7070 Template: ALL Field: Name,Email # END C.4 Response to the POLLED-FOR command # FULL # POLLED-FOR xyz:serverhandle3 Server-Handle: serverhandle3 Template: ALL Deutsch, et al [Page 33] ^L Internet-Draft Architecture ofJanuary 1995 that the query was too complex. 2.4.1. Default Responses By default, a WHOIS++service 25 July 1994 Field: Name,Address,Job-Title,Organization-Name,Organization-Address, +Organization-Name # POLLED-FOR xyz:serverhandle4 Server-Handle: serverhandle4 Template: User Field: ALL # END C.5 Response to the VERSION command # FULL # VERSION serverhandle:version Version: 1.0 Program-Name: kth-whoisd Program-Version: 2.0 # END C.6 Response to the CONSTRAINTS command #server will provide a FULL# CONSTRAINT asdjkq Constraint: format Default: full Range: full,abridged,summary,handle,mime # CONSTRAINT ljkqwer Constraint: maxhits Default: 200 Range: 1-1000 # CONSTRAINT slkjewer Constraint: search Default: exact Range: exact,substring,lstring # CONSTRAINT qwewerq Constraint: maxfull Default: 20 # END Deutsch, et al [Page 34] ^L Internet-Draft Architecture ofresponse. This may be changed by theWHOIS++ service 25 July 1994 Appendix D - Sample whois++ session Below is an example of a session between aclientand a server. The angle brackets towith theleft is not partuse of thecommunication, butglobal constraint "format". The server isjust put thereallowed todenonteprovide response in SUMMARY format if thedirectionnumber of hits exceeds thecommunication betweenvalue of the global constraint "max- full". The serveror the client. Text appended to '>' means mes- sages from the server and '<' from the client. Client connects towill not respond with more matches than theserver >% 220-Welcome to >% 220-the whois++ server >% 220 at ACME inc. <name=Nick:hold >% 200 Command okay > ># FULL > ># USER serverhandle:nw1 > name: Nick West > email: nick@acme.com ># END ># SERVERS-TO-ASK > Version-number: 1.0 > Next-Servers: sunetse01;whois.sunet.se;7070 >- kthse01 >- anotherserverhandle01;whois.acme.com;7070 ># END >% 226 Tranfer complete <version >% 200 Command okay ># FULL ># VERSION ignoredserverhandle:version > Version: 1.0 ># END >% 226 Tranfer complete >% 203 Bye Server closesvalue speci- fied with theconnection Inglobal constraint "maxhits"; Not in any response for- mat. If theexample above,number of matches exceeds this value, theclient connected to a whois++serverand queried for all records wherewill issues theattribute "name" equals "Nick", and askedsystem message 110 (maxhits value exceeded), but will still show theserver notresponses, up toclosetheconnection afternumber of theresponse by using"maxhits" con- straint value. This mechanism will allow theglobal constraint "HOLD". Theserverresponds with one record and a pointertothree other servers that either holds records or pointershide the number of possible matches toother servers. The first server was polled for "USER" templates and "name" and "email" fields.a search command. Theclient continues with asking for servers version number without using the HOLD constraint. After responding with protocol version, theservercloses the connection. Deutsch, et al [Page 35] ^L Internet-Draft Architecture of the WHOIS++ service 25 July 1994 Note that eachresponsefrom the server beginsmodes are summarized in Table V. 2.4.2. Format of Responses Each response consists of a numerical systemmessage 200 (Command OK), and endsgenerated message, which can be tagged with text, followed by an optional formatted response message, followed by a second systemmessage 226 (Transfer Complete).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. For information about the format for system messages, see Appendix E. 2.4.3. Syntax of a Formatted Response All formatted responses consist of a START line, followed by a Deutsch, et al [Page36] ^L26] Internet-Draft Architecture of the WHOIS++ service 25July 1994 Appendix E - System messagesJanuary 1995 response-specific section, followed by a TERMINATION line. It is permissible to insert any number of lines consisting solely of new- lines within a formatted response to improve readibility. Asystem message beginsSTART line consists of a line beginning with a'%','#' in the first column, followed byaone white spaceand a three digit number, a space, and an optional text message. Thecharacter (SPACE or TAB), fol- lowed by one of the following keywords FULL, ABRIDGED, HANDLE, SUM- MARY or SERVERS-TO-ASK. A START linemes- sagemustbecontain no more than 81characters long,characters, including theter- minating CR LF pair. There is no limit to the number of system mes- sages that may be generated.terminating newline character. Amultiline system message have a hyphen insteadTERMINATION line consists of aspaceline beginning with a '#' incolumn 6, immediately afterthenumeric response code in all lines, exceptfirst column, followed by one white space character (SPACE or TAB), followed by thelast one, wherekeyword END, followed by zero or more characters, followed by a newline. A TERMINATION line must contain no more than 81 characters, includ- ing thespace 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 parseterminating newline character. A response-specific section will be one of thetext partfollowing: 1) FULL Format Response 2) ABRIDGED Format Response 3) HANDLE Format Response 4) SUMMARY Format Response 5) SERVERS-TO-ASK Format Response The details of each are specified in the following sections: 2.4.3.1. A FULL format responsemessage except when receiving reply 600,A FULL format response consists of a series of responses, each con- sisting of a FORMAT specifier line, followed by the complete tem- plate information for the matching record. Each FORMAT specifier line consists of a '#' inwhich casethetext part isfirst column, followed by one white space character, the name of the correspond- ing template type, one white space character, the serverhandle, acharacter setcolon, the handle for that record, and a terminating newline. The template information for each record will beusedreturned as a series of lines consisting of a single space, followed by theserver in the restcorresponding line of theresponse.record. Thevalid values for characters sets is specified in the "characterset" list inline of theBNF listing in appendix F. The theoryrecord shall consist ofreply codes is described in appendix E in RFC 821 [POST82]. ------------------------------------------------------------------------ List of system response codes ------------------------------ 110 Too many hits The number of matches exceededa single space and thevalue specifiedattribute name, followed by a ':', a single space, themaxhits 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 unacceptablevalue of that attribute, andwas therefore not used, but the search is still done.a newline. Deutsch, et al [Page37] ^L27] Internet-Draft Architecture of the WHOIS++ service 25July 1994 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 responsesJanuary 1995 Each such line shall be limited toquery are sent. 430 Authentication needed Client requested information that needs authentication. 500 Syntax error 502 Search expression too complicated This message is sent whenno more than 81 characters, including theserverterminating newline. If a line (including the required leading single space) would exceed 81 characters, it isnot abletoresolve a query (i.e. when a client sentbe broken into lines of no more than 81 characters, with each con- tinuation line beginning with aregular expression that is too deeply nested). 530 Authentication failed The authentication phase failed. 600 <token> Subsequent attribute values are encoded"+" character in thecharater set specified by <token>. Table V - System response codes ------------------------------------------------------------------------ Deutsch, et al [Page 38] ^L Internet-Draft Architecturefirst column, instead of theWHOIS++ service 25 July 1994 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" 1*SP [string] / "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) 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 Deutsch, et al [Page 39] ^L Internet-Draft Architecture ofleading space. If theWHOIS++ service 25 July 1994 format = "full" / "abridged" / "handle" / "summary" / "servers-to-ask" / "mime" language = <The two-letter language code defined in ISO 639-1988 canattribute value includes a line break, the line break must beused as language constraint. In thesereplaced by a CR/LF pair and thecasefollowing line begin with a "-" character in the first column, instead of theletters are insignificant. Other language codes shall be interpreted according tospace character. The attribute name is not repeated on consecutive lines. 2.4.3.2. ABRIDGED Format Response An ABRIDGED format response consists of a single set of responses, consisting of a single line excerpt of theInternet standard for language codes in RFC 822/MIME messages, if and when suchtemplate information from each matching record. The excerpt information shall include, as astandardminimum, the composed handle of the record, as well as other information that isadopted> 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" / 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> 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 char- acters, when significantrelevant to thequery, maytemplate type. The abridged template information for each record will bepreceded and/or followed byreturned as a series of lines, each of which must consist of a singleblank: : ; , ( ) = ! Deutsch, et al [Page 40] ^L Internet-Draft Architecture ofspace, followed by theWHOIS++ service 25 July 1994 Appendix G - Descriptionabridged line ofRegular expressions The regular expressions described in this section isthesame as used in many other applications and operating systems. It is though very simple and does not include logical operators AND and OR. Character Function --------- -------- <any except those listed in this table> Matches itself a* Matches zerorecord, one or more'a' [ab] Matches 'a' or 'b' [a-c] Matches 'a', 'b' or 'c' ^ Matches beginning ofspace characters, the composed handle, and astring $ Matches end ofCR/LF pair. Each line shall be limited to no more than 81 characters, including the terminating newline. If astring Examples --------- String Matches Matches not ------- ------- ----------- hello hello helloo h.llo hello helio h.*o hello helloa h[a-f]llo hello hgllo ^he.* hello ehello .*lo$ hello helloo Deutsch, et al [Page 41] ^L Internet-Draft Architectureline (including the required single space, would exceed 81 characters, it is to be broken into lines of no more than 81 characters, with theWHOIS++ service 25 July 1994 References [BORE93] Borenstein N., and N. Freed, MIME (Multipurpose Internet Mail Extensions): Mechanisms for Specifyingremainder following on the subsequent line, with the space replaced by a "+" character in the first column. If the attribute value includes a line break, the line break must be replaced by a CR/LF pair andDescribingtheFormatfollowing line begin with a "-" character in the first column, instead ofInternet Message Bodies, RFC 1521, Bellcore, Innosoft, September 1993. [HARR85] Harrenstein K., Stahl M., Feinler E., NICNAME/WHOIS, RFC954, SRI, October 1985 [IAFA] Internet Anonymous FTP Archives Working Group (now closed). [IAFA1] Emtage A., and Deutsch P.. IAFA (Internet Anonymous FTP Archives) (not yet issued, pending some editing...) [IIIR] Weider C., and Deutsch P.,the space character. The attribute name is not repeated on consecutive lines. 2.4.3.3. HANDLE Format Response AvisionHANDLE format response consists ofan integrated internet information service, Internet Draft, October, 1993. < URL:ftp://nic.merit.edu/documents/ internet-drafts/draft-ietf-iiir-vision-02.txt > [MOOR93] Moore K., MIME (Multipurpose Internet Mail Extenssions) Part Two: Message Header Extensions for Non-ASCII Text, RFC 1522, Universitya single set ofTennessee, September 1993. [NIR] Network Information Retrieval Working Group. [POST82] Postel J., Simple Mail Transfer Protocol, RFC 821, ISI, August 1982. [Weider94] Weider C., Fullton J., Spero S.,responses, consisting of a single line listing the composed handle and tem- plate type for each matching record. Each line shall start with one space, followed by the server han- dle, a colon, the record handle, one or more whitespace characters, the template type and terminated by a newline. Each such line must contain no more than 81 characters, including the terminating newline character. If a line (including the required first space) would exceed 81 characters, it shall be split Deutsch, et al [Page 28] Internet-Draft Architecture of the WHOIS++Index Service: Internet Draft, March, 1994. < URL:ftp://nic.merit.edu/documents/internet-drafts/ draft-ietf-wnils-whois-03.txt > Expires:service 25 January95 Part I - WHOIS++ Overview 1.1. Purpose and Motivation....................................... 2 1.2. Basic Information Model...................................... 3 1.2.1. Changes1995 into multiple lines, with each continuation line beginning with a '+' instead of a space. 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 thecurrent WHOIS Model......................... 4 1.2.2. Registering WHOIS++ servers................................ 4 1.2.3.specified query, followed by a list of all template types which satisfied the query at least once. TheWHOIS++ Search Selection Mechanism..................... 5 1.2.4.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. TheWHOIS++ Architecture................................... 6 1.3. Indexingsecond line shall begin with the string "tem- plates: ", 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. If the line is longer than 81 characters including the terminating CR/LF pair, it shall be split into multiple lines with each con- tinuation line beginning with a '+' instead of a space. 2.4.3.5. SERVERS-TO-ASK Response A SERVERS-TO-ASK response consists of information to the client about which servers to contact next to resolve a query. The servers-to-ask response will consist of a number of attribute- value pairs, separated by CRLF. Each line is indented with one space. Required attributes are "Version-number", which will be "1.0", and "Next-Servers". The "Next-Servers" field will be returned as a series of lines, each holding pointer information to one server. Consecutive lines shall have a hyphen "-" inWHOIS++.......................................... 6the first column. Each line will be separated into five fields, separated with a semicolon. Those fields are: 1. The server handle of the server pointed at. (required) 2. A cached host named for the server pointed at. (optional) 3. A cached port number for the server pointed at. (optional) Each such 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 con- tinuation line beginning with a "+" character in the first column. Deutsch, et al [Page 29] Internet-Draft Architecture of the WHOIS++ service 25 January 1995 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. 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 specifica- tion 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 Passwa- ters, 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 Meal- ling, Mark Prior and Rickard Schoultz. Deutsch, et al [Page 30] Internet-Draft Architecture of the WHOIS++ service 25 January 1995 3.2. Contact information Peter Deutsch, BUNYIP INFORMATION SYSTEMS, inc 310 St-Catherine St West, suite 202, Montreal, Quebec H2X 2A1 CANADA <peterd@bunyip.com> Rickard Schoultz, KTHNOC, SUNET/NORDUnet/Ebone Operations Centre 100 44 STOCKHOLM SWEDEN <schoultz@sunet.se> Patrik Faltstrom BUNYIP INFORMATION SYSTEMS, inc 310 St-Catherine St West, suite 202, Montreal, Quebec H2X 2A1 CANADA <paf@bunyip.com> Chris Weider BUNYIP INFORMATION SYSTEMS, inc 2001 S. Huron Parkway, #12 Ann Arbor, MI 48104 USA <clw@bunyip.com> Deutsch, et al [Page 31] Internet-Draft Architecture of the WHOIS++ service 25 January 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 Schoultz". 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. Deutsch, et al [Page 32] Internet-Draft Architecture of the WHOIS++ service 25 January 1995 Appendix B - Some sample responses. 1) A FULL format response: # FULL # USER SERVHANDLE1:PD45 Name: Peter Deutsch email: peterd@bunyip.com # USER SERVHANDLE1:AE1 Name: Alan Emtage email: bajan@bunyip.com # USER SERVHANDLE1: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. # SERVICES SERVHANDLE1:WWW1 Type: World Wide Web Location: the world # END -------------------- 2) An ABRIDGED format response: # ABRIDGED Peter Deutsch peterd@bunyip.com PD45 Alan Emtage bajan@bunyip.com AE1 World Wide Web the world WWW1 # END -------------------- 3) A HANDLE format response: # HANDLE SERVHANDLE1:PD45 User SERVHANDLE1:AE1 User Deutsch, et al [Page 33] Internet-Draft Architecture of the WHOIS++ service 25 January 1995 SERVHANDLE1:WWW1 Services # END -------------------- 4) A SUMMARY HANDLE format response: # SUMMARY Matches: 175 Templates: User - Services - Abstracts # END Deutsch, et al [Page 34] Internet-Draft Architecture of the WHOIS++ service 25 January 1995 Appendix C - Sample responses to system commands C.1 Response to the LIST command # ABRIDGED USER SERVICES HELP # END C.2 Response to the SHOW command This example show the result after issuing "show help": # FULL # TEMPLATE serverhandle1:user-template Template-Name: USER Attribute-Names: Name,Organization-Name,Organization-Type,Work-Phone, +Work-Fax,Work-Postal,Job-Title,Department,Email,Handle,Home-Phone, +Home-Postal,Home-Fax # TEMPLATE serverhandle1:help Template-Name: HELP Attribute-Names: Subject,Description,Handle # END C.3 Response to the POLLED-BY command # FULL # POLLED-BY xyz:serverhandle1 Server-handle: serverhandle1 Cached-Host-Name: sunic.sunet.se Cached-Host-Port: 7070 Template: user Field: ALL # POLLED-BY xyz:serverhandle2 Server-handle: serverhandle2 Cached-Host-Name: kth.se Cached-Host-Port: 7070 Template: ALL Field: Name,Email # END C.4 Response to the POLLED-FOR command # FULL # POLLED-FOR xyz:serverhandle3 Server-Handle: serverhandle3 Template: ALL Deutsch, et al [Page 35] Internet-Draft Architecture of the WHOIS++ service 25 January 1995 Field: Name,Address,Job-Title,Organization-Name,Organization-Address, +Organization-Name # POLLED-FOR xyz:serverhandle4 Server-Handle: serverhandle4 Template: User Field: ALL # END C.5 Response to the VERSION command # FULL # VERSION serverhandle:version Version: 1.0 Program-Name: kth-whoisd Program-Version: 2.0 # END C.6 Response to the CONSTRAINTS command # FULL # CONSTRAINT asdjkq Constraint: format Default: full Range: full,abridged,summary,handle # CONSTRAINT ljkqwer Constraint: maxhits Default: 200 Range: 1-1000 # CONSTRAINT slkjewer Constraint: search Default: exact Range: exact,substring,lstring # CONSTRAINT qwewerq Constraint: maxfull Default: 20 # END Deutsch, et al [Page 36] Internet-Draft Architecture of the WHOIS++ service 25 January 1995 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 mes- sages 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 serverhandle:nw1 > name: Nick West > email: nick@acme.com ># END ># SERVERS-TO-ASK > Version-number: 1.0 > Next-Servers: sunetse01;whois.sunet.se;7070 >- kthse01 >- anotherserverhandle01;whois.acme.com;7070 ># END >% 226 Tranfer complete <version >% 200 Command okay ># FULL ># VERSION ignoredserverhandle:version > 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 three other servers that either holds records or pointers to other servers. The first server was polled for "USER" templates and "name" and "email" fields. The client continues with asking for servers version number without using the HOLD constraint. After responding with protocol version, the server closes the connection. Deutsch, et al [Page 37] Internet-Draft Architecture of the WHOIS++ service 25 January 1995 Note that each response from the server begins system message 200 (Command OK), and ends with system message 226 (Transfer Complete). Deutsch, et al [Page 38] Internet-Draft Architecture of the WHOIS++ service 25 January 1995 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 mes- sage must be no more than 81 characters long, including the ter- minating CR LF pair. There is no limit to the number of system mes- sages 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 F. The theory of reply codes is described in appendix E in 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. Deutsch, et al [Page 39] Internet-Draft Architecture of the WHOIS++ service 25 January 1995 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 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 ------------------------------------------------------------------------ Deutsch, et al [Page 40] Internet-Draft Architecture of the WHOIS++ service 25 January 1995 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) 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 Deutsch, et al [Page 41] Internet-Draft Architecture of the WHOIS++ service 25 January 1995 format = "full" / "abridged" / "handle" / "summary" / "servers-to-ask" language = <The two-letter language code defined in ISO 639-1988 can be used as language constraint. In these the case of the letters are insignificant. Other language codes shall be interpreted according to the Internet standard for language codes in RFC 822/MIME messages, if and when such a standard is adopted> 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" / 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> 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 char- acters, when significant to the query, may be preceded and/or followed by a single blank: : ; , ( ) = ! Deutsch, et al [Page 42]^LInternet-Draft Architecture of the WHOIS++ service 25July 1994 1.4. Getting Help................................................. 7 1.4.1. Minimum HELP Required...................................... 8 1.5. Options and Constraints...................................... 8 1.6. Formatting Responses......................................... 8 1.7. Reporting Warnings and Errors................................ 9 1.8. Privacy and Security Issues.................................. 9 Part IIJanuary 1995 Appendix G -WHOIS++ Implementation 2.1. Introduction................................................. 11 2.1.1. The WHOIS++ interaction model.............................. 11 2.2. The WHOIS++ Command set...................................... 12 2.2.1. System Commands............................................ 12 2.2.1.1. The COMMANDS command..................................... 13 2.2.1.2. The CONSTRAINTS command.................................. 13 2.2.1.3. The DESCRIBE command..................................... 14 2.2.1.4. The HELP command......................................... 14 2.2.1.5. The LIST command......................................... 14 2.2.1.6. The POLLED-BY command.................................... 14 2.2.1.7. The POLLED-FOR command................................... 15 2.2.1.8. The SHOW command......................................... 15 2.2.1.9. The VERSION command...................................... 15 2.2.2. The Search Command......................................... 15 2.2.2.1. Format of a Search Term.................................. 16 2.2.2.2. FormatDescription ofa Search String................................ 17 2.3. WHOIS++ Constraints.......................................... 18 2.3.1. Required Constraints....................................... 18 2.3.2. Optional Constraints....................................... 19 2.3.2.1. The SEARCH Constraint.................................... 20 2.3.2.2. The FORMAT Constraint.................................... 21 2.3.2.3. The MAXFULL Constraint................................... 21 2.3.2.4. The MAXHITS Constraint................................... 21 2.3.2.5. The CASE Constraint...................................... 21 2.3.2.6. The AUTHENTICATE Constraint.............................. 21 2.3.2.7. The USER Constraint...................................... 22 2.3.2.8. The PASSWORD Constraint.................................. 22 2.3.2.9. The LANGUAGE Constraint.................................. 22 2.3.2.10. The INCHARSET Constraint................................ 22 2.3.2.11. The IGNORE Constraint................................... 23 2.3.2.12.Regular expressions TheINCLUDE Constraint.................................. 23 2.4. Server Response Modes........................................ 23 2.4.1. Default Responses.......................................... 24 2.4.2. Formatregular 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 char- acters '^' 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 ofResponses........................................ 24 2.4.3. Syntaxa token $ Matches end of aFormatted Response............................. 25 2.4.3.1. A FULL format response................................... 25 2.4.3.2. ABRIDGED Format Response................................. 26 2.4.3.3. HANDLE Format Response................................... 26 2.4.3.4. SUMMARY Format Response.................................. 27 2.4.3.5. MIME Format Response..................................... 27 2.4.3.6. SERVERS-TO-ASK Response.................................. 27 2.4.4. System Generated Messages.................................. 28 2.5. Compatibility with Older WHOIS Servers....................... 28 3. Miscellaneous.................................................. 29token 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 [Page 43]^LInternet-Draft Architecture of the WHOIS++ service 25July 1994 3.1. Acknowledgements............................................. 29 3.2. Contact information.......................................... 29 AppendixJanuary 1995 References [HARR85] Harrenstein K., Stahl M., Feinler E., NICNAME/WHOIS, RFC954, SRI, October 1985 [IAFA] Internet Anonymous FTP Archives Working Group (now closed). [IAFA1] Emtage A., and Deutsch P.. IAFA (Internet Anonymous FTP Archives) (not yet issued, pending some editing...) [IIIR] Weider C., and Deutsch P., A- Some Sample Queries................................... 30 Appendix B - Some sample responses................................. 31 Appendix C - Sample responses to system commands................... 33 Appendix D - Sample whois++ session................................ 35 Appendix E - System messages....................................... 37 Appendix F - The WHOIS++ BNF Grammar............................... 39 Appendix G - Descriptionvision ofRegular expressions.................... 41an integrated internet information service, Internet Draft, October, 1993. < URL:ftp://nic.merit.edu/documents/ internet-drafts/draft-ietf-iiir-vision-02.txt > [NIR] Network Information Retrieval Working Group. [POST82] Postel J., Simple Mail Transfer Protocol, RFC 821, ISI, August 1982. Expires: 25 July 95 Deutsch, et al [Page 44] ----