Professional Documents
Culture Documents
Internet-Drafts are draft documents valid for a maximum of six months and
may be updated, replaced, or obsoleted by other documents at any time. It is
inappropriate to use Internet-Drafts as reference material or to cite them
other than as "work in progress."
Abstract
The Internet portions of the DDN NIC have been transitioned to what is now
known as InterNIC Registration Services (RS). The charter for InterNIC RS
has been reduced to maintain information only for IP networks, top-level
domains, Autonomous System Numbers, and the points of contact for each of
these particular entities. In addition, the InterNIC, in its role as an
Internet Registry (IR), has delegated IP block assignment authority to
regional registries-such as the RIPE NCC for Europe and the APNIC for the
Asian Pacific region-while retaining authority for North America and all
non-delegated regions. This has led to a fragmentation of Whois service to
the Internet user.
Various regional IRs proposed and developed several different solutions for
this fragmentation. Two solutions have been worked on extensively: the
Shared Whois Project (SWIP) and X.500. The SWIP project has a common
exchange format that can be parsed by the IRs for input and output. Thus, a
database can be synchronized with information obtained from the other IRs.
This project is showing promise and is now operational. However, this
approach still requires a centralized database for the storage and display
of information.
The InterNIC has also been involved in the use of X.500 for the display of
registration information. Among other things, this included defining schemas
and Directory Information Tree structures for the purpose of distributing
information among the various X.500 Directory Service Agents (DSAs).
Unfortunately, X.500's complexity, resource utilization, and lack of
Internet support has made necessary a search for an alternative solution.
To date, the underlying premise while building this protocol has been to
retain the basic functionality of the Whois server and client, making all of
the extensions optional. The server MAY respond to the original Whois client
that is currently included with many operating systems. The RWhois client
may also interact with RFC954 [RFC-954] whois servers. This is now an
implementation choice. This decision to remove the requirements for RFC954
compatibility will allow RWhois to move forward to the next generation
information/registration system. We believe that the best way to remain
compatible with RFC954 service is to build a Whois-to-RWhois gateway.
RWhois has been designed as an extendible protocol to ensure that many uses
can be accommodated. Public extensions to the protocol should be documented
as RFCs. Private extensions can be used with agreement left up to the client
and server. If extensions are not implemented at the server in question, an
appropriate error message must be sent. The use of extended error message is
outlined in Appendix A: Error Codes.
Throughout this document ABNF notations are used to describe the RWhois
server/client interaction. The following are predefined.
CHAR = 0..127
DIGIT = "0".."9"
SPACE = 32
YEAR = 4*4DIGIT
DAY = "0".."7"
The words "MAY", "SHOULD", and "MUST" are significant in this document. If
"MAY" is used, the implementer has the option to follow the advice of this
document. If the word "SHOULD" is used, the implementer is strongly
encouraged to follow the advice but may choose not to. If "MUST" is used, it
is a required part of the protocol. Implementations without this
functionality will not be considered RWhois protocol compliant.
Directive Response -
Guardian Object - This object, when linked to another object, specifies the
method of protection for that object.
Primary RWhois Server - A primary (or master) RWhois server is where data is
registered for an authority area. It answers authoritatively to queries for
data in that authority area. There MUST be one and only one primary server
for a particular authority area. An RWhois server may be primary for
multiple authority areas.
Query Result -
Referral Object -
Secondary RWhois Server - A secondary (or slave) RWhois server is where data
is replicated from a primary server for an authority area. It, like its
primary server, answers authoritatively to queries for data in that
authority area. There can be multiple secondary servers for a particular
authority area. An RWhois server may be secondary for multiple authority
areas.
2. Connection Model
The normal connection style will be via Transmission Control Protocol (TCP).
3. Data Model
The RWhois protocol has a Base class definition. The Base class defines a
set of attributes that MUST be present in every class definition.
The Base class below defines those attributes that must be present in every
class definition for RWhois.
Schema-Name = 1*CHAR
ID = OBJECTID
where <locally unique identifier> can be any string without the period
character that is unique to the local RWhois installation�s database, and
where <authority area name> is the actual name of the authority area
(netsol.com, for example).
Auth-Area = 1*CHAR
This is the authority area to which the object belongs. While this
information is encoded in the ID string as well, it is needed for the
-register directive process (see Section 5.2.13 below). This attribute is
required
Updated = TIMESTAMP
Guardian = OBJECTID
This contains the ID of a guardian object (see below). The guardian object
pointed to by this attribute describes what security protocol must be
followed in order to modify or delete this object. This attribute is
OPTIONAL. If no Guardian attributes are present in an object, then the
object is considered unguarded and anyone may modify the object.
Auth-Scheme = 1*CHAR
This attribute describes the particular authentication/encryption scheme
this guardian uses. There is no restriction on this field, but both the
client and server must understand the semantics of any particular scheme.
This attribute is REQUIRED.
Guard-Info = 1*CHAR
The Referral class describes objects that are used to delegate authority to
a sub-authority area. For example, the netsol.com authority area may have a
referral object delegating authority for the west.netsol.com authority area.
In addition to the Base class, the Referral class contains the following
attributes.
Referral =
Referred-Auth-Area =
4. Search Model
The search model is made up of four distinct aspects. The query itself is
specified by the client. The server takes that query and looks in its local
database; if it finds an appropriate object, it returns the results. If it
cannot find an appropriate object, the server uses query reduction to find a
referral to a server that may know more about the object in question.
Returned objects can also have a see-also, which provides a pointer to
another object that contains additional information that may be of use to
the client.
The query is generally the final message sent to the server. It is not a
directive and therefore does not start with a '-'. The query is the question
that the client wants the server to answer. It has two primary parts: the
query terms themselves and global constraints that apply to the entire query
and the display of its output. The class type to search is the only
qualifier that MAY precede the query. If the first token does not match the
name of an existing class on the server, then that token is considered part
of the query string. Below is the description for query interaction.
OR = "or" QUERY
ATTNAME = 1*DNSCHAR
MATCHMANY = "*"
Example of use:
netsol.com
domain netsol.com
The critical component of the RWhois server is its ability to reduce the
query to find a server that is "closer" to the data or to realize that the
data is within an authority area being served by the server. Initially, the
server searches for local matches. If the server cannot find a local match
and the query is non-hierarchical, the server passes the query to a Common
Indexing Protocol (CIP)-type mesh. If the server cannot find a local match
and the query is hierarchical, the server searches within the authority
area. If there is a match in that authority area, the server sends a link
referral. If the server cannot find a match, it sends a punt referral. The
search algorithm of the server is the following.
1. connect to root.rwhois.net
2. query for ietf.cnri.reston.va.us
3. search for ietf.cnri.reston.va.us (No hit)
4. check for auth area ieft.cnri.reston.va.us (No hit)
5. search referrals for cnri.reston.va.us (No hit)
6. check for auth area cnri.reston.va.us (No hit)
7. search referrals for reston.va.us (No hit)
8. check for auth area reston.va.us (No hit)
9. search referrals for va.us (No hit)
10. check for auth area va.us (No hit)
11. search referrals for us (referral found) - referred to nii.isi.edu port
43.
12. query for ietf.cnri.reston.va.us
13. search for ietf.cnri.reston.va.us (No hit)
14. check for auth area ieft.cnri.reston.va.us (No hit)
15. search referrals for cnri.reston.va.us (No hit)
16. check for auth area cnri.reston.va.us (No hit)
17. search referrals for reston.va.us (No hit)
18. check for auth area reston.va.us (No hit)
19. search referrals for va.us (No hit)
20. check for auth area va.us (No hit)
21. search referrals for us (No hit)
22. check for auth area us - determine to be authority for us - send %error
230 No records found.
4.3 referral
Server Response:
The "%referral" response instructs the client to contact and query another
server. The server SHOULD be an RWhois server. However, if the client is
capable of using other directory access protocols, then there is nothing to
prevent a referral to another server type. For example, an RWhois server
could refer a client to a Whois++ server. Following the first referral
received during a session, the client MUST replace the default server list.
If there is more than one referral the additional servers are considered
secondary. Therefore, if the first server can be contacted, the rest should
be dropped.
Client Behavior:
In the non-URL response format below, the authority area equals the reduced
query. There are three types of referral; the type can be determined by the
client evaluating the authority area, which is part of the "%referral"
response. The client may receive multiple referrals from a single query. If
the SOA for each of these referrals is the same, then the first referral is
the primary server and all subsequent servers are secondary. Each of the
servers will report the SOA for the authority area in question.
Types of Referrals:
Old Style:
New Style:
server = SERVER ;This argument identifies the server with which the client
should reconnect.
;This argument identifies the server type. This could save wait time for the
client trying to identify a non-RWhois server.
autharea = 1*CHAR ;This argument identifies the authority area that caused
the referral for the query in question. Using this value as the argument for
the "-soa" directive to the referral server should result in a positive
response. If this is not the case, the referral is considered bad.
url = ;This argument defines the URL string that points to the resource
containing the desired information.
Example of use:
%referral url:http://www.netsol.com/
4.4 see-also
Capid: {1h}
The "%see-also" response instructs the client to contact another server for
additional information about the current query. If multiple see-alsos are
received from a single query, each subsequent see-also SHOULD be visited in
the order received. One example of use for the see-also response is to
display autonomous system information relating to an IP network number or
router interface information relating to an IP host number.
server = SERVER ;This argument identifies the server with which the client
should reconnect.
type = "rwhois" / "whois++" / "whois" / "ldap"
;This argument identifies the server type. This could save wait time for the
client trying to identify a non-RWhois server.
query = QUERY ;This argument sets the query that must be sent to the
referred server. The query may be different from the original query sent to
the referring server.
url = URL ;This argument defines the URL string that points to the resource
containing the desired information.
Example of use:
%see-also prmd.merit.edu:43:handle=xxx
%see-also url:http://www.netsol.com/
The RWhois client sends directives to the RWhois server. These directives
MUST be prefixed with the '-' character in the first column. The query is
not prefaced with the '-' character; this allows the client to first
ascertain that the server is an RWhois server before sending directives. All
directives MUST be terminated by a new line (NL) character.
This section details those directives and responses that are necessary for
an RWhois server. They are REQUIRED. The error responses listed in this
section are those general responses that can occur as a result of any
directive.
5.1.1 General
The error responses below are general responses that can occur as a result
of any directive. They SHOULD be implemented. These messages will not be
repeated under each directive. The error codes are explained in Appendix A.
5.1.2 ok
The "%ok" response MUST be sent by the RWhois server at the completion of
every task or to positively acknowledge a directive.
"%ok"
5.1.3 error
Textmsg = *ALPHA ;This argument is the text that describes the error
message; it makes the error readable to humans. This message must be
consistent for each error. Messages sent following an error code associated
with the registration process will contain the line number of the attribute
that is incorrect. This is the only case where the message should be
variable.
Example of use:
%error 400 Invalid Server Directive
5.1.4 RWhois
Directive:
The "-RWhois" directive identifies the client as an RWhois client and allows
the server to operate using the RWhois protocol exclusively. This directive
MUST be sent in response to the %RWhois response from the server if the
client is to be treated as an RWhois client.
responseid = 6*6HDIGIT
displayid = 2*2HDIGIT
????id = 2*2HDIGIT
Example of use:
Response:
The "%RWhois" response MUST be sent upon connection in order to identify the
server as an RWhois server. RWhois clients need this response to know it is
an RWhois server and to enable or disable certain optional capabilities.
responseid = 6*6HDIGIT
displayid = 2*2HDIGIT
????id = 2*2HDIGIT
servername = 1*DNSCHAR
;This argument is the host name of the computer hosting the RWhois server.
Example of use:
Errors:
5.2.1 info
Example of use:
%info on
%info off
5.2.2 load
Directive:
The "-load" directive allows the client to make a quick decision about
presenting the query to the current server. If the client determines that
another server can better serve the query, then control may be transferred
to the server with the lower load and better connection. This directive has
no arguments.
Response:
The "%load" response returns the current and average load of the computer
hosting the RWhois server. The measurement may be different depending on the
implication of the system's load mechanism. This directive/response was
implemented to allow experiments with sorting preferred servers to deliver
better results to the user.
;This argument delivers the current load on the system hosting the RWhois
server.
;This argument delivers the average load on the system hosting the RWhois
server.
Example of use:
Error:
5.2.3 limit
The "-limit" directive will allow the client to request that the server
allocate enough space to collect more responses than would currently be
collected by the server.
Value = 1*DIGIT ;This argument is the hit limit requested by the client. If
the hit limit exceeds the limit set by the server administrator, the client
MUST receive an error message.
Example of use:
-limit 2000
Errors:
5.2.4 schema
Knowing the class definition (schema) before making a query can increase the
flexibility in building client displays. This knowledge is required if the
client wishes to add an object. A server SHOULD have separate class
definition files for each authority area.
Directive:
The client can request the class definition for all or some classes in an
authority area by using the "-schema" directive. The optional argument
"version" is used to request the version of the schema. A schema version
MUST be the time stamp. The method for doing version SHOULD be agreed upon
with in an RWhois tree.
AUTHAREA ;
classname = 1*ALPHA ;This optional argument identifies the name of the class
for which the schema is being requested. If this argument is not sent, the
schema for all classes contained in the server for that authority area will
be sent.
"version" ;
Example of use:
-schema internic.net
Response:
;This argument indicates whether the attribute can span multiple lines.
Example of use:
In response to:
%schema user:version:19960522103000
In response to:
%schema user:version:19960522103000
%schema
%schema domain:version:19960815231500
%schema
%schema contanct:version:19960816093001
%schema
%schema asn:version:19961011062200
%schema
%schema network:version:19961030115300
In response to:
%schema user:attribute:Handle
%schema user:indexed:OFF
%schema user:required:OFF
%schema user:mult-line:OFF
%schema user:type:TEXT
%schema user:primary:ON
%schema
%schema user:attribute:Object-Type
%schema user:indexed:ON
%schema user:required:OFF
%schema user:mult-line:OFF
%schema user:type:TEXT
%schema user:primary:OFF
%schema
%schema user:attribute:Organization-Name
%schema user:indexed:ON
%schema user:required:OFF
%schema user:mult-line:OFF
%schema user:type:TEXT
%schema user:primary:OFF
%schema
%schema user:attribute:Organization-Postal
%schema user:required:OFF
%schema user:mult-line:ON
%schema user:type:TEXT
%schema user:primary:OFF
Errors:
5.2.5 xfer
Directive:
The "-xfer" directive is used to request data from a server. This method of
transfer has no limit on the number of records that can be transferred to
the client application. This directive is used primarily by a secondary
server to transfer data contained in an authority area. This directive
SHOULD be restricted to a pre-selected set of hosts.
Example of use:
The "%xfer" response will send requested objects in response to the "-xfer"
directive. The transfer MUST be limited to the authority area identified. If
there are no further arguments, the server MUST send all of the objects in
the database for that authority area. Non-authoritative data MUST not be
transferred using this method. Each object instance is sent with a blank
%xfer response between instances.
CLASS = ;This argument represents the name of the class being transferred.
value = ;This argument contains the value of the attribute. If blank, the
attribute value is blank.
Example of use:
In response to:
%xfer user:last-name:Kosters
%xfer user:first-name:Mark
%xfer user:organization-phone:703-555-1212
%xfer
%xfer user:last-name:Williamson
%xfer user:first-name:Scott
%xfer user:organization-phone:703-555-1212
%xfer
Errors:
Capid: {10h}
The "-quit" directive will inform the server that the client is finished.
The server and client SHOULD close the connection. This directive has no
arguments.
5.2.7 status
Directive:
The "-status" directive is used to poll the server for its status. The
server MUST send the seven required attributes; however, additional
attributes may be sent in the response. The client SHOULD ignore all unknown
attributes. This directive has no arguments.
Response:
Limit: Current limit set on the server. This value may be changed using the
"-limit" directive. This is not the maximum limit of the server. The maximum
limit is not disclosed to prevent clients from automatically setting the
highest limit possible, thereby causing degradation in performance of the
server.
Cache: This is the current status of the cache flag. (On or Off)
Holdconnect: This is the current status of the holdconnect flag. (On or Off)
Forward: This is the current status of the forward flag. (On or Off)
Display: This indicates the types of display modes the server is using.
currlimit = 1*DIGIT
authnum = 1*DIGIT
cachnum = 1*DIGIT
type = *CHAR
contact = EMAIL
Example of use:
%status limit:1500
%status load:1.23
%status cache:off
%status holdconnect:on
%status forward:off
%status authority:25
%status cached:200
%status display:multi:summary
%status contact:scottw@rwhois.net
5.2.8 cache
The RWhois server can hold data that does not fall into one of its authority
areas. If the server sends this data to a requester, it is considered a
non-authoritative response. The holding of this data is called caching. The
original or secondary data for these objects is not contained on the server.
The "-cache" directive instructs the server to send cached data if it has an
answer to the query in cache. The RWhois client and server SHOULD start with
the cache turned off. Details on determining the expiration of cache data
can be found in Section 5.2.11, "%soa" response.
Example of use:
-cache on
Error:
5.2.9 holdconnect
The RWhois server MUST close the connection after the response to a query
has been sent; the query is the final exchange between the client and
server. However, this characteristic can be modified with the"-holdconnect"
directive. If this directive is issued to the RWhois server, it MUST remain
connected until the "-quit" directive is received. Once the "-quit"
directive is received, both the server and the client SHOULD close their
connection.
Example of use:
-holdconnect on
5.2.10 forward
Example of use:
-forward on
-forward on slam.internic.net:4321
Error:
5.2.11 soa
Directive:
Example of use:
-soa netsol.com
Response:
The "%soa" response delivers information about the authority area in
question. If the server does not contain the authority for the area in
question, it MUST respond with the appropriate error message. The SOA data
MUST never be cached, and SOA records must originate on the server giving
the answer. The increment and refresh attributes are used to provide for
incremental updates of the secondary server. Deleted data SHOULD remain in
the secondary server's cache until the refresh time has been reached. This
will reduce the amount of data transferred and will not require that the
primary server retain deleted data. The following attributes required MUST
be sent in response to an authority area soa request.
authority
ttl
serial
refresh
increment
retry
tech-contact
admin-contact
hostmaster
primary
("tech-contact:" tech-contact) /
("admin-contact:" admin-contact) /
autharea = 1*CHAR ;This is the authority name of the SOA, for example,
internic.net or 198.41.0.0/24. This is REQUIRED.
ttl = 1*DIGIT ;This is the time to live for data within this authority area
that another server may cache. The server caching the data SHOULD consider
the data expired after storage for the number of seconds identified by this
attribute.
serial = TIMESTAMP ;This is the serial number of the data contained in the
authority area. The serial number MUST be incremented every time data in the
authority area has changed. This is REQUIRED.
refresh = 1*DIGIT ;This is the time to completely remove cached data and
transfer all data from the primary server.
increment = 1*DIGIT ;This is the time to wait before checking for
incremental updates from a primary server.
tech-contact = EMAIL
;This is the e-mail address of the person or role account responsible for
the operation of the authority area.
admin-contact = EMAIL
;This gives the e-mail address of the person or role account responsible for
the data contained on the authority area.
Example of use:
%soa authority:netsol.com
%soa ttl:7200
%soa serial:19940606203030
%soa refresh:7200
%soa increment:60
%soa retry:1200
%soa tech-contact:markk@netsol.com
%soa admin-contact:jasdips@netsol.com
%soa hostmaster:hostmaster@netsol.com
%soa primary:netman1.netsol.com:4343
Error:
5.2.12 notify
;badref When a client receives a "%referral" response that does not work, it
must report the bad referral to the server that issued the referral. The
referral is bad only if the referred server does not contain the authority
area in question. It is not considered a bad referral if the server does not
have an answer to the query but responds positively to the "-soa autharea"
directive. This merely means that there is not an answer to the query. When
a "-badref" is sent to the referring server, it should log the bad referral
so the administrator of that server can remove the reference if it is no
longer correct. This action should only be taken after receiving a negative
response to the query and the SOA request.
;inssec This action will inform the authority server that the server
indicated in the argument will be a secondary for its authority area. The
server receiving this directive MUST determine if the secondary is
acceptable. If it is, the server should be added to the update list so that
it will be informed if data in the authority area changes.
;delsec This action will inform the server that the server indicated in the
subsequent arguments will no longer be a secondary. The server receiving
this action MUST determine if the server is a secondary and, if so, remove
it from the update list.
server = SERVER ;This argument identifies the server that contained the
recursive or bad referral or has data that changed.
query = 1*CHAR ;This argument identifies the query that was sent to the
server that gave a recursive or bad referral.
autharea = 1*CHAR ;This argument identifies the authority area where the
object that changed currently resides.
Example of use:
-notify recurref netman1.netsol.com:4343:scottw@netsol.com
Errors:
5.2.13 register
"-register" SPACE off / "-register" SPACE "on" SPACE action SPACE maintid
;add: This conditionally required argument indicates that the object being
sent should be added to the server's database.
;mod: This conditionally required argument indicates that the object being
sent is a modification of a object that already resides on the server's
database. The identifying characteristics of the original (unmodified)
object are sent first, then the "_NEW_" separator is used, and then the
entire replacement object is sent.
;del: This conditionally required argument indicates that the object being
sent should be deleted from the server's database.
the registration information. The server SHOULD NOT use the maintid for
authentication purposes.
The "register" directive is essentially used to deliver a payload of
registration data from the client to the server. This payload is
encapsulated between a "-register on �" directive and a "-register off"
directive. The format and necessary elements of the registration data depend
upon the action being performed.
In general, the registration data follows the "tag: value" format, where
"tag" refers to an attribute name (or alias) and "value" is a character
string that is valid for the particular attribute.
For the "add" action, the client MUST send all required attributes for the
object, including the base schema attributes (especially the "Schema-Name"
and "Auth-Area" attributes), except that the client MUST NOT send the "ID"
or "Updated" attributes. These attributes will be assigned by the server.
For the "mod" action, the client MUST send the identifying information for
the object to be changed followed by the "_NEW_" separator and the entire
changed object. The key fields (including the "ID", "Schema-Name", and
"Auth-Area" attributes) MUST match the original object. The identifying
information consists of the "ID", "Updated", "Schema-Name", and "Auth-Area"
attributes. Other attributes MAY be sent, but the server is not obligated to
check them. The purpose of sending the old object data before the new,
changed object is primarily to allow the server to perform record locking.
For the "del" action, the client MUST send the identifying information for
the object to be deleted. The identifying information is the same as for the
"mod" action.
Response:
When adding an object to the server, the server will assign the record an
"ID" attribute and value, and generate a "%register" response. The register
response is "%register attribute: value". Currently, the only attribute that
register reports this way is "ID".
Example of use:
-register off
%ok
Example of use:
This example assumes that only "Name" and "Email" are required for the
contact schema, and that "Name" is a key but "Email" is not.
Schema-Name: contact
Auth-Area: a.com
First-Name: Scott
Last-Name: Williamson
Email: scottw@a.com
-register off
%ok
ID: 23456789.a.com
Updated:
Schema-Name: contact
Auth-Area: a.com
_NEW_
Schema-Name: contact
Auth-Area: a.com
ID: 23456789.a.com
First-Name: Scott
Last-Name: Williamson
Email: sw@a.com
-register off
%ok
ID: 23456789.a.com
Updated: 19961205124403
Schema-Name: contact
Auth-Area: a.com
-register off
%ok
Errors:
%error 120 Registration not processed... will process hours:<hours>
5.2.14 class
Example of use:
-object domain
Response:
(":restrict:" restriction)
Example of use:
%object contact:restrict:user
%object user:restrict:person
Error:
5.2.15 define
Directive:
name = 1*CHAR ;This argument identifies the name of the macro to display. If
no arguments are sent, the server must return the definition of all macros
contained in the server.
Example of use:
-define server
Response:
The "%define" response describes format macros to the client. All format
macros used in the schema format definition string must be available to the
client through the "-define" directive. Format macros may be nested. It is
the client's responsibility to request all format strings that are
unrecognized from a server. If the format strings change on a server, the
serial number of the schemas that use the format must change.
NOTE: The brackets around the format string are required to ensure that
spaces contained in the format string are interpreted correctly by the
client.
Example of use:
%define server:[%s:%16Bd]
%define email:[%s@%s]
Error:
5.2.16 private
mode = "on" / "off" ;On: This turns on the reception of secured information.
method = 1*CHAR ;This parameter is REQUIRED when the mode is "on". It is not
required for "off". This string is used to indicate what type of
authentication/encryption is used within the block. "PGP" is used for Pretty
Good Privacy (PGP)-style signed or encrypted message; "PW" is used for
standard UNIX-style username:password. The scheme is case insensitive.
For PGP, it is an argument describing how the data has been treated
(signed|encr|signed-encr), and, if necessary, a keyid. For password, it is
the cleartext password itself. The <method> and <data> parameters have been
left fairly open to allow for a number of different security schemes.
Example of use:
-private off
5.2.17 X-
Server Capid:{800h}
Directive:
directive = 1*CHAR ;This argument identifies the name of the directive being
issued.
Example of use:
-X-date
Response:
The "%X-" response represents extended responses. The client must have prior
knowledge of this response.
arguments = 1*CHAR ;This argument contains the arguments for the extended
directive.
Example of use:
%X-extstatus numusers:500
%X-extstatus avalslots:200
Errors:
5.2.18 directive
Directives allowed by a server may vary. The client can issue the
"-directive" directive to determine if the server allows a specific
directive or to obtain a list of all acceptable directives for that server.
arguments are sent, all of the directives accepted by the server MUST be
sent.
Example of use:
-directive X-date
Response:
Format = 1*CHAR ;This argument defines the format of the directive. It MUST
be expressed in human-readable form.
Example of use:
%directive directive:schema
%directive syntax:schema<SP>[%s]
%directive
%directive directive:xfer
%directive syntax:xfer<SP>[%s]<SP>[%s]
5.2.19 display
Directive:
The "-display" directive is used to set the display mode of the server or to
identify display modes of which the client is capable. If this directive is
sent without arguments, the server will return all available display
methods.
Method = 1*CHAR ;This argument indicates the display method desired by the
client.
Example of use:
-display mime
The "%display" response is used to inform the client that the data following
this response is using the indicated method. The method selected will
continue to be active until a "%display" response is sent without any
arguments. The server must send an error message to clients that have been
identified as non-RWhois clients. This response allows the use of display
methods such as MIME [RFC 1521] or other special character sets such as
those used in the Japanese language.
( "command-line-option:" mode)
Example of use:
%display extended:mime
MIME-Version:1.0
Content-type: image/gif
Content-Transfer-Encoding: base64
...data...
%display
Error:
5.2.20 language
The "-language" directive is used to set the language mode of the server or
to identify language modes of which the server is capable. If this directive
is sent without arguments, the server will return all available languages.
The International Standards Organization (ISO) language code is used to
identify the language to be used.
Example of use:
-language nl
Response:
The "%language" response is used to inform the client that the data
following this response will be sent in the indicated language. The language
selected will continue to be active until a "%language" response is sent
without any arguments, at which time the server will revert back to English,
the default. The server must send an error message to clients that have been
identified as non-RWhois clients.
Example of use:
%language de
%language
Error:
6. Security Model
7. Tree Management
S %ok
C -cache off
S %ok
C -soa abc.net
S %ok
C -soa no.net
S %soa serial: 45
S %ok
S %ok
C -soa internic.net
S %soa serial: 45
S %ok
S ... all data for domain object in the internic.net authority area
transferred
S%ok
S %ok
C -quit
S close connection
C close connection
7.3 Out-of-Service
Servers that are being taken out of service should automatically refer the
client back into the tree. Of course, this is not possible if the system
that hosts the server is out of service. In this case, the client's
robustness must be relied upon to return to the referrer and notify that
server that the referral was bad. If the system will still be available on
the Internet, the exchange below is recommended.
S %info on
S %referral rs.internic.net:4343
S close connection
C close connection
8. References
[RFC-954] Harrenstien, K., Stahl, M., Feinler, E., "NICNAME/WHOIS", RFC 954,
SRI, October 1985.
[RFC-1714] Williamson, S., Kosters, M., "Referral Whois Protocol", RFC 1714,
Network Solutions, November 1994.
9. Authors' Addresses
Scott Williamson
Herndon, VA 22070
email: scottw@netsol.com
Mark Kosters
Herndon, VA 22070
email: markk@netsol.com
The error code MUST immediately follow the "%error" response from the RWhois
server. The definitions of the error codes are provided below. The error
codes are descriptive so that the client can group the error messages to
determine group action that must be taken before taking error-specific
action. Error codes should remain consistent without variable extensions,
except for messages associated with the registration process. If a client
receives a '6' in the second position of the error code and the client does
not support the extended code received, the client must act on the first
position code. (For example, if a client received "%error 561" and the
client did not support the extended error codes for the server currently
connected, the client would exit based on the '5' in the first position of
the error code.)
X00
0X0
2 - Registration error
00X
Sequential order
Below is an ordered list of RWhois error codes. These codes may be extended
with implementation-specific codes. These extended codes will have a '6' in
the second position of the code.
The format for all attributes for objects in the RWhois server must be
specified using a format specifier. This definition will allow the client
software to interpret the received data correctly. The RWhois format
specifier closely follows the 'C' language scanf syntax with macro
extensions.
<type> This is the only required part of the format specifier. Below are the
allowed format type values. The length of these values are not specified.
These restrictions will be on the left of the [length restriction].
%c Character
%s String
%d Integer
%x Hex Integer
%o Octal Integer
%f Float
%e Scientific
%M Defined Macro
[range restriction] The range restriction will limit the allowed values.
This may specify a number, character, or string range.
Month/Day/Year formats:
%MM=[%-2d[0-12]]
%MD=[%-2d[0-31]]
%MY2=[%-2d[0-99]]
%MY4=[%-4d[0-9999]]
%MMs=[%-3s\ ["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP",\
"OCT","NOV","DEC"]]
Date formats:
%Mdate1=[%MM/%MD/%MY2]
%Mdate2=[%MM/%MD/%MY4]
%Mdate3=[%MD-%MMs-%MY2]
%Mdate4=[%MD-%MMs-%MY4]
%Mdate5=[%MY4%MM%MD]
Hour/Minute/Second formats:
%MTH=[%-2d[0-24]]
%MTM=[%-2d[0-59]]
%MTS=[%-2d[0-59]]
Time formats:
%Mtime1=[%MTH:%MTM:%MTS]
%Mtime2=[%MTH%MTM%MTS]
Miscellaneous formats:
%Mserver=[%s:%16Bd]
%Mipnumber=[%8Bd.%8Bd.%8Bd.%8Bd]
%Memail=[%s@%s]
%Mserial=[%Mdate5%Mtime2]
%Mstype=[RWHOIS/WHOIS/WHOIS++/LDAP/OTHER]
%Murl=[%s://%s]
Macro definitions may be obtained by sending the "-define" directive to the
server. For client efficiency, definitions can be remembered. If the
definition of a macro changes, the serial number of all schemas using that
macro must change, allowing the client to reacquire the schema and format
specifier macros.
Appendix C: Capabilities ID
The server and client must send their capabilities to each other during the
initial handshaking after connection. The server indicates which optional
directives it can accept. The client responds with the server responses that
it can understand. Below is the capabilities list.
load 1h
limit 2h
schema 4h
xfer 8h
quit 10h
status 20h
cache 40h
holdconnect 80h
forward 100h
soa 200h
notify 400h
register 800h
object 1000h
define 2000h
private 4000h
X- 8000h
directive 10000h
display 20000h
language 40000h
see-also 1h
load 2h
soa 4h
status 8h
xfer 10h
schema 20h
define 40h
object 80h
directive 100h
info 200h
display 400h
X- 800h
language 1000h
Mime 1h
URL 2h
<directives>:<display>:<???>{%6x:%2x%2x}
<responses>:<display>:<???>{%6x:%2x%2x}