[Docs] [txt|pdf] [Tracker] [Email] [Nits]

Versions: 00

Network Working Group                                       D. Bernstein
INTERNET DRAFT                                                        IR
                                             June 1991, revised May 1992

                                  TAP


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. Internet Drafts may be updated, replaced, or obsoleted by
   other documents at any time. It is not appropriate to use Internet
   Drafts as reference material or to cite them other than as a "working
   draft" or "work in progress."

   Please check the I-D abstract listing contained in each Internet
   Draft directory to learn the current status of this or any other
   Internet Draft.

   Document Expiration Date: November 15, 1992.


1. Introduction

   It is common for Internet hosts to associate a relatively long-lived
   identifier, commonly a "username" or "owner name," to each TCP
   connection. TAP announces the identifier associated with a particular
   TCP connection to the host on the other end of the connection. TAP
   may be used on any host which associates a relatively long-lived
   identifier to each connection.


2. Overview

   This is a connection-based application which runs over TCP. The TAP
   server listens for TCP connections on port 113 (decimal). After a
   connection is established, the server reads one line of data which
   specifies the connection of interest. If that connection exists and
   is associated with a system-dependent identifier, the server sends
   the identifier. Otherwise it sends an error line. After sending the
   identifier or error line, the server closes its connection.

   The server will give information about TCP connections between the
   server's host and host H only to host H itself. The two hosts (i.e.,
   IP addresses) involved are not transmitted explicitly by the
   protocol; they are implicit in the connection made to the server.


3. Request format

   The server accepts simple text query requests of the form

      <localport> , <foreignport>

   where <localport> is the TCP port on the server's host and
   <foreignport> is the TCP port on the client's host. All numbers are
   expressed in decimal without a sign, and all text is ASCII. If the
   request is not in this format, the server may immediately drop the
   connection.

   For example, say user joe@rose connects to the standard TELNET port
   on host tulip, through TCP ports 6191 on rose and 23 on tulip. (In
   other words, let's say this connection exists, and rose associates
   the identifier joe to it. Note that rose and tulip are simply names
   used in this document to identify two IP-connected machines. They are
   not fully qualified domain names.) tulip connects to the TAP server
   at port 113 on rose. It sends this line:

      6191 , 23

   Here 6191 is the TCP port on the server's host (rose) and 23 is the
   TCP port on the client's host (tulip). This uniquely specifies the
   given TELNET connection.

   The precise format of the request line is as follows: <localport>,
   followed by any amount of whitespace, followed by a comma and any
   amount of whitespace, followed by <foreignport>, followed by carriage
   return and line feed. Whitespace means space or tab; "any amount"
   means zero or more, though a client should not print excessively many
   spaces. The client should not send anything after the line feed; the
   server should ignore everything after the line feed. The client should
   not add initial zeros to its decimal numbers, but the server must
   accept such numbers. Future revisions of this standard may assign
   additional meaning to decimals with a leading 0.


4. Response format

   The server sends a response line in one of these two formats:

      <localport> , <foreignport> : USERID : <systemtype> : <identifier>
   or
      <localport> , <foreignport> : ERROR : <errortype>

   Here <localport> and <foreignport> are the same numbers as in the
   query. (If the client uses initial zeros, the server may do so as
   well, but otherwise it should not use initial zeros.) <systemtype> is
   an operating system name for the server's host as described in
   Assigned Numbers, RFC 1060 or its successors. <identifier> is a
   system-dependent identifier. <errortype> is text describing an error
   as outlined below.

   <systemtype> may also be OTHER to specify any other operating system
   not yet listed in Assigned Numbers. Even if the server's system is
   listed in Assigned Numbers, the server may use OTHER for any reason,
   including operating system type privacy.

   <identifier> is in some format defined by the system. This standard
   does not define the format or meaning of <identifier>. <identifier>
   is typically in the same format as a system-dependent mailbox name,
   which is typically in the same format as a system-dependent username,
   but these equivalences are not required.

   For example, some possible responses to the 6191 , 23 query might be
   the following:

      6191 , 23 : USERID : UNIX : joe
      6191 , 23 : USERID : MULTICS : StJohns.DODCSC.a
      6191 , 23 : USERID : OTHER : StJohns.DODCSC.a
      6191 , 23 : USERID : TAC : MCSJ-MITMUL
      6191,23     :USERID:OTHER:wewishyouamerrychristmasandahappynewyear
      6191 , 23 : ERROR : NO-USER

   An ERROR line means that the server could not determine the
   identifier associated to the TCP connection. <errortype> tells why.
   <errortype> may be any of the following:

      INVALID-PORT

         <localport> or <foreignport> was improperly specified---out of
         the range 0 to 65535, for example---or the request was
         otherwise nonstandard. In this case the server may drop the
         connection without replying.

      NO-USER

         The connection specified by the port pair is not currently in
         use.

      UNKNOWN-ERROR

         Cannot determine the identifier associated to the connection,
         for an unknown reason. The server may give this <errortype> in
         any case and for any reason, including privacy, whether or not
         another <errortype> applies.

   Other <errortype> values may be specified as necessary. The server
   may also report an <errortype> beginning with the letter X; all such
   <errortype>s are reserved for experimental or nonstandard use.

   The precise format of the response line is as follows: <localport>,
   followed by any amount of whitespace, followed by a comma and any
   amount of whitespace, followed by <foreignport>, followed by any
   amount of whitespace, followed by a colon and any amount of
   whitespace. In the USERID case, it is then followed by USERID and any
   amount of whitespace, a colon and any amount of whitespace,
   <systemtype> and any amount of whitespace, one or more characters
   giving <identifier>, and finally carriage return and line feed. In
   the ERROR case, it is followed by ERROR and any amount of whitespace,
   a colon and any amount of whitespace, one or more characters giving
   <errortype>, and finally carriage return and line feed.

   Note that this format is ambiguous if <systemtype> contains colons or
   whitespace. Assigned Numbers does not currently list any <systemtype>
   with colons or whitespace, but if it ever does, the TAP server must
   use OTHER for the <systemtype> on such a machine. The server should
   also not use a <systemtype> containing carriage return or line feed.

   Similarly, if <identifier> or <errortype> begins with whitespace or
   contains carriage return-line feed, the response line format is
   ambiguous. The server must never use <errortype> containing
   whitespace, carriage return, or line feed, and future revisions of
   this RFC will never provide for such an <errortype>. The server
   cannot send <identifier> beginning with whitespace or containing
   carriage return-line feed; it should not send <identifier> containing
   whitespace, carriage return, or linefeed. ERROR : UNKNOWN-ERROR is
   preferable.

   Finally, <systemtype>, <identifier>, and <errortype> cannot be empty
   strings, and cannot contain ASCII nul (character 0).

   Later revisions of this protocol specification may further restrict
   the octets which may be transmitted. In light of this, servers
   should, if possible, limit <identifier> to at most ASCII codes 33
   through 126. Clients should, however, be prepared to handle all
   octets.

   Note that there is no limit on line lengths: in particular, on the
   length of <identifier>. The client may drop the connection at any
   time to avoid overflow. The server should, if possible, place the
   most useful information within the first 512 characters of
   <identifier>.


5. Security

   The scope of this document is limited to the definition of TAP.
   Applications are not discussed here. You are advised that this
   document makes no guarantees as to the validity, security,
   authenticity, or usefulness of the data transmitted via TAP. You are
   also advised that there is no a priori reason to believe that a
   server running on port 113 of an Internet host is, in fact, a TAP
   server.


6. Notes

   This section is not part of the TAP description proper. It provides
   historical information and pointers to further information.

   TAP is derived from the protocol defined in RFC 931. It was first
   implemented by this author in early 1990, then again in February
   1991, and distributed via the USENET network under the name authd.
   Later in 1991 two more independent interoperable implementations were
   distributed through the Internet. TAP, as defined in this document,
   is the same as the authd protocol, which has not changed since its
   first implementation in early 1990.

   At the time of publication of this document, there is a non-IETF
   mailing list for people who want to use TAP to solve problems. To
   join, send mail to rfc931-users-request@kramden.acf.nyu.edu. Official
   discussions of the standardization of TAP do not currently have a
   home, as the IESG has refused to create a working group or mailing
   list for TAP.

   The author would like to thank Chris Davis for his helpful
   suggestions.

   Document Expiration Date: November 15, 1992. (See the Status of This
   Memo section for explanation.)


Author's Address

   Daniel J. Bernstein
   5 Brewster Lane
   Bellport, NY 11713

   Email:  brnstnd@nyu.edu


Html markup produced by rfcmarkup 1.108, available from http://tools.ietf.org/tools/rfcmarkup/