From 4bfd864f10b68b71482b35c818559068ef8d5797 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Wed, 27 Nov 2024 20:54:24 +0100 Subject: doc: Add RFC documents --- doc/rfc/rfc2259.txt | 1683 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1683 insertions(+) create mode 100644 doc/rfc/rfc2259.txt (limited to 'doc/rfc/rfc2259.txt') diff --git a/doc/rfc/rfc2259.txt b/doc/rfc/rfc2259.txt new file mode 100644 index 0000000..b96bb9a --- /dev/null +++ b/doc/rfc/rfc2259.txt @@ -0,0 +1,1683 @@ + + + + + + +Network Working Group J. Elliott +Request for Comments: 2259 Epic Systems Corporation +Category: Informational J. Ordille + Bell Labs, Lucent Technologies + January 1998 + + + Simple Nomenclator Query Protocol (SNQP) + + +Status of this Memo + + This memo provides information for the Internet community. It does + not specify an Internet standard of any kind. Distribution of this + memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (1998). All Rights Reserved. + +Abstract + + The Simple Nomenclator Query Protocol (SNQP) allows a client to + communicate with a descriptive name service or other relational-style + query service. The protocol is useful to services that search many + data repositories for query responses. Clients can pose queries on + relations, list descriptions of relations, and obtain advice on + reducing the search time and cost of their queries. Clients are + informed of the age of information in caches, and may request more + recent information. SNQP provides support for graphical user + interfaces. It also supports different types of comparison + operators, so services can use SNQP with a variety of back-end + servers, e.g. relational database servers, CCSO servers, and servers + providing relational views of X.500. + + SNQP is an ASCII protocol in the request-reply style of SMTP. It was + specifically designed for use with the Nomenclator name and + information service, and has been useful elsewhere. + +1. Introduction + + The Simple Nomenclator Query Protocol (SNQP) is a protocol for + querying servers that search collections of data repositories. Users + retrieve information from an SNQP server by describing attributes of + the information. SNQP servers contact one or many data repositories + to retrieve the response to a user query. If the data repositories + + + + + +Elliott & Ordille Informational [Page 1] + +RFC 2259 SNQP January 1998 + + + differ in protocol or data format, it is responsibility of the SNQP + server to translate protocols and data formats to provide one, + integrated answer to the user's query. + + SNQP servers share the protocol needs of centralized data + repositories that answer queries with locally stored data. SNQP + servers also require specialized protocol features due to their + distributed search characteristics. + + In highly distributed environments, it is unreasonable to expect all + data repositories that need to be searched to be available when + queries are posed. SNQP servers require facilities for returning + partial results in the presence of communications errors with data + repositories. The partial results must indicate how to resubmit the + query only to those data repositories that are unavailable. + + In addition, users may pose queries without realizing the cost of the + search for query responses. SNQP provides facilities for informing + users of query costs and advising them on limiting that cost. Costs + and advice are returned before queries are executed. + + Finally, SNQP servers may cache data and meta-data to speed query + responses. Servers can inform users of the t-bound for their query + response. A t-bound is the time after which changes may have + occurred to the data that are not reflected in the query response + [6,2]. A t-bound is the time of the oldest cache entry used to + calculate the response. Users can request that query responses are + more current then a particular t-bound. Making such a request + flushes older items from the cache. + + SNQP provides support for graphical user interfaces. It also + supports different types of comparison operators, so SNQP servers can + query a variety of back-end data repositories, e.g. relational + databases, CCSO servers [3], and servers providing relational views + of X.500 [10]. + + SNQP is a connection-oriented protocol. A client initiates a query + session with an SNQP server by making a TCP connection to a well- + known port. The client then executes a series of SNQP commands. + These commands are listed briefly in Table 1. Section 2 provides + some typical scenarios for using these commands, and Section 3 + describes the commands fully. The server replies to each command + using the theory of reply codes described for the Simple Mail + Transfer Protocol (SMTP) [9]. The theory of reply codes and the + defined reply codes are described in Section 4. + + + + + + +Elliott & Ordille Informational [Page 2] + +RFC 2259 SNQP January 1998 + + + --------------------------------------------------------------------- + Command Description + --------------------------------------------------------------------- + advice Provide advice on query costs without executing + query. + attributes List the attributes for a relation. + compare Set type of comparison operation. + help Explain the SNQP commands. + imagui Format replies for a graphical user interface. + next Stop processing current query, continue with next + query in block. + noadvice Provide responses to queries. Do not advise + on costs. + noimagui Format replies for people. + query Submit a block of one or more SQL query statements. + relations List the relations available through the SNQP + server. + stop End processing of current query, and cancel any + queries remaining in block. + quit Terminate the query session. + + + Table 1: SNQP Commands + + --------------------------------------------------------------------- + + SNQP queries are posed in SQL, a standard relational database query + language [4,12]. Information that is obtained through SNQP servers + is organized by type into database relations. SQL queries may often + have more functionality then a server supports or an application + demands. Moreover, advice on query costs, some types of comparison + operations or t-bounds may not be supported by a particular server. + SNQP defines a minimal subset of functionality for a working SNQP + protocol. Functionality beyond this subset is optional. Servers + that do not support optional functionality must return replies that + indicate this to the user. The required and optional features of + SNQP are summarized in Section 5. + + SNQP was specifically designed for use with the Nomenclator name and + information service [8,7,5]. Nomenclator produces query responses by + integrating information from data repositories with different + protocols and data formats. It constrains the searches for query + responses through a variety of distributed indexing techniques. SNQP + has also been found useful elsewhere, even as a query language for a + single data repository. + + SNQP is defined for US-ASCII only, and use with other character sets + will require further work. + + + +Elliott & Ordille Informational [Page 3] + +RFC 2259 SNQP January 1998 + + + Section 6 concludes this document with a description of security + considerations. + +2. Scenarios + + This section illustrates the basic SNQP commands by presenting + several client scenarios. The scenarios include a new user, a user + who prefers CCSO style comparisons and more current responses, a + graphical user interface program, a user with a change of mind, and a + user worried about costs. Although SNQP will work for a human client + on a bare connection (like one provided by telnet), it also works for + client programs. Several of these programs have been written and + provide enhanced interfaces. + +2.1 New User + + A new SNQP user will first make a tcp connection to an SNQP server. + For purposes of illustration, we will assume that the user makes the + connection with the Unix telnet command, and that the server is + located at nomen.research.bell-labs.com on port 4224. The user enters + a relation command to discover what relations are available, and an + attributes command to discover the attributes for a particular + relation. The user eventually asks for people with a given name of + "J*" and a surname of "Ordille" who work for "Lucent Tech*". The + response is current through June 11, 1996 at 11 p.m. EDT. Figure 1a + and Figure 1b provide this scenario. + + + + + + + + + + + + + + + + + + + + + + + + + +Elliott & Ordille Informational [Page 4] + +RFC 2259 SNQP January 1998 + + + --------------------------------------------------------------------- + + > telnet nomen.research.bell-labs.com 4224 + Trying 135.104.70.9... + Connected to nomen.research.bell-labs.com. + Escape character is '^]'. + 220 nomen.research.bell-labs.com Nomenclator Query Service ready + + relations + 211-There is 1 relation defined: + 211 People + + attributes People + 212-There are 20 attributes in relation "People": + 212-Given_Name + 212-Middle_Name + 212-Surname + 212-Name_Suffix + 212-Title + 212-Organization + 212-Division + 212-Department + 212-Building + 212-Street + 212-City + 212-State_or_Province + 212-Postal_Code + 212-Country + 212-Phone + 212-Fax + 212-Email + 212-MHSmail + 212-Last_Modified + 212 Source + + + Figure 1a: New User Queries Server + + --------------------------------------------------------------------- + + + + + + + + + + + + +Elliott & Ordille Informational [Page 5] + +RFC 2259 SNQP January 1998 + + + --------------------------------------------------------------------- + + query + 350 Send the query text, end with . + + select * from People where + given_name = "J*" and surname = "Ordille" and + organization = "Lucent Tech*"; + . + 351 Partial response follows, ended with . + + Given_Name: Joann + Middle_Name: J. + Surname: Ordille + Title: MTS + Organization: Lucent Technologies + Division: Bell Laboratories + Department: Computing Sciences Research Center + Building: 2C-301 + Street: 700 Mountain Avenue + City: Murray Hill + State_or_Province: New Jersey + Postal_Code: 07974 + Country: United States + Phone: +1 908 582 7114 + Email: joann@bell-labs.com + Source: nomen://bell-labs.com:17036/email=joann@bell-labs.com + + . + 250 All queries processed. Current through 11-Jun-1996 23:00 EDT. + + quit + 221 nomen.research.bell-labs.com closing transmission channel + + Connection closed by foreign host. + + + Figure 1b: New User Queries Server + (continued) + + --------------------------------------------------------------------- + +2.2 User with CCSO and Currentness Preferences + + A user who is accustomed to CCSO name servers prefers CCSO word-based + matching within attribute strings. Each word in the query string for + an attribute must appear in some order in the response string. The + wildcard "*" matches any substring within a word. The default + + + +Elliott & Ordille Informational [Page 6] + +RFC 2259 SNQP January 1998 + + + matching, illustrated in Figure 1b, is exact matching of a query + string. The query string may include "*" wildcards which match any + substring within the response string. Both types of matching are + case insensitive. + + In Figure 2, the CCSO-style user connects to the SNQP server, enables + csso matching, and requests some information about Ordille who works + in research at a lab division of some company. The request asks for + information that is more current than June 11, 1996 at 11 p.m. if it + is available. + + --------------------------------------------------------------------- + + compare ccso + 213 Performing ccso equality comparisons + + query 11-Jun-1996 23:00 + 350 Send the query text, end with . + + select given_name, surname, organization, division, department, + email from People + where surname = "Ordille" and department = "research" + and division = "lab*"; + . + + 351 Partial response follows, ended with . + + Given_Name: Joann + Surname: Ordille + Organization: Lucent Technologies + Division: Bell Laboratories + Department: Computing Sciences Research Center + Email: joann@bell-labs.com + + . + 250 All queries processed. Current through 12-Jun-1996 22:35 EDT. + + Figure 2: User with CCSO Preferences Queries Server + + --------------------------------------------------------------------- + +2.3 Graphical User Interface Program + + A user designs a Windows program as a front end to the SNQP server. + In Figure 3, the program requests replies formatted for a graphical + user interface program. The program submits two SQL queries, and + + + + + +Elliott & Ordille Informational [Page 7] + +RFC 2259 SNQP January 1998 + + + receives detailed responses that indicate the type and position of + errors. The error messages are discussed in more detail in Section + 3. + + --------------------------------------------------------------------- + + imagui + 214 GUI responses enabled + + query + 350 Send the query text, end with . + + select * from Peple where name = "Elliott"; + . + 735 00000001a000015 e Unknown relation, "Peple" + + 735 00000001a000027 e Attribute "name" not found in any relation used. + + + 250 All queries processed. Current through 12-Jun-1996 22:35 EDT. + + query + 350 Send the query text, end with . + + select * from People wher surname = "Elliott"; + . + 730 00000001a000022 e syntax error + + 730 00000001a000027 e syntax error + + 730 00000001a000037 e syntax error + + 730 00000001a000039 e syntax error + + + 250 All queries processed + + Figure 3: Graphical User Interface Program Queries Server + + --------------------------------------------------------------------- + +2.4 User Changes Mind + + An exuberant user decides to search everywhere for family members, + then look up a friend who works at Epic Systems, and finally search + everywhere for an old school friend. Once the query set starts, the + user realizes the folly of searching everywhere, stops the first + + + + +Elliott & Ordille Informational [Page 8] + +RFC 2259 SNQP January 1998 + + + query, executes the second query and then stops executing the query + block. This scenario is illustrated in Figure 4. The t-bound is + represented by