home *** CD-ROM | disk | FTP | other *** search
/ Handbook of Infosec Terms 2.0 / Handbook_of_Infosec_Terms_Version_2.0_ISSO.iso / text / rfcs / rfc1756.txt < prev    next >
Text File  |  1996-05-07  |  23KB  |  361 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                          T. Rinne Request for Comments: 1756                                          HUT Category: Experimental                                     January 1995 
  8.  
  9.                    REMOTE WRITE PROTOCOL - VERSION 1.0 
  10.  
  11. Status of this Memo 
  12.  
  13.    This memo defines an Experimental Protocol for the Internet    community.  This memo does not specify an Internet standard of any    kind.  Discussion and suggestions for improvement are requested.    Distribution of this memo is unlimited. 
  14.  
  15. 1. Background 
  16.  
  17.    It is often convenient to use electronic communication somewhat    lighter than electronic mail.  Sometimes even the use of the talk(1)    *) program seems like overkill.  We like to offer to user something    like UNIX **) command write(1) ***) except that it can also pass    messages through the network instead of the single host. 
  18.  
  19.    There have been few programs offering this kind of service, but they    have either based on SUN-RPC protocol or used a strictly undocumented    protocol. 
  20.  
  21.    This document describes a simple Remote Write Protocol (RWP) that    should have been documented at least 10 years ago.  But late is    better than never.  Version number of the RWP protocol in this    document is 1.0. 
  22.  
  23. 2. Overview 
  24.  
  25.    RWP is a simple protocol that can be used to relay short messages    through the network to other users.  RWP looks pretty much like    Simple Mail Transfer Protocol (SMTP) ****) though it is a bit more    complicated due to the interactive nature of the RWP session. 
  26.  
  27.    The idea behind the RWP session is that client program that is    relaying message to the host in which the target user is logged in    opens the tcp or udp connection to the server program running in the    target machine  Then the client gives the sender's and recipient's    identification (usually login ids), actual message body and tells the    server to deliver a message to the user.  On tcp-connection server    returns a status from each action taken.  On udp-connection no    responses are sent.  RWP sessions through udp are implemented to    support message broadcasting. 
  28.  
  29.  
  30.  
  31.  Rinne                                                           [Page 1] 
  32.  RFC 1756                 Remote Write Protocol              January 1995 
  33.  
  34.     Message delivering methods are not defined within this document, but    the basic method could be a simple write to users terminal.  This is    basically what UNIX command write(1) does.  Depending on server    implementation, the delivery method could be configurable personally    by each user. 
  35.  
  36. 3. Description 
  37.  
  38.    Server program answers to each command submitted by a response.  All    responses have two parts: three number unique response code and a    short textual explanation of the response.  Also whenever the server    is ready to accept new commands a notification is submitted to the    client. 
  39.  
  40.    There are three kinds of commands in RWP.  The first group is for    querying a status of the server.  The second group is actual message    handling commands and the last set of commands are for RWP session    control. 
  41.  
  42.    When the server is ready to receive a command from the client, it    sends a message code 100 to the client.  This message is for example    as follows: 
  43.  
  44.                     100 Ready. 
  45.  
  46.     Server commands are as follows: 
  47.  
  48.     Status Query 
  49.  
  50.         HELP    Gives a short help message that contains legal                 RWP commands.  Help lines have code 510.  Example RWP                 implementation *****) gives a following response to                 HELP command: 
  51.  
  52.                     510 Valid commands are:                     510     BYE,    DATA,   HELP,   HELO,                     510     RSET,   SEND,   PROT,   QUIT,                     510     VRFY,   VER                     510     FROM senderlogin                     510     FHST senderhost                     510     TO   recipentlogin [tty]                     510     FWDS current_hop_count 
  53.  
  54.         HELO    Says hello to the server.  Server response to HELO                 command has code 500.  For example: 
  55.  
  56.                     500 Hello remote.host.  This is local.host speaking. 
  57.  
  58.  
  59.  
  60.  Rinne                                                           [Page 2] 
  61.  RFC 1756                 Remote Write Protocol              January 1995 
  62.  
  63.          PROT    Asks the RWP protocol version from the server.                 Response code to PROT command is 502.  Protocol                 version described in this document is RWP 1.0 and the                 response is as follows: 
  64.  
  65.                     502 RWP version 1.0. 
  66.  
  67.         VRFY    After the recipient of the message is set by to command                 described later, the possibility of message delivery                 can be queried by VRFY command.  If message can be                 delivered the response code is 108.  If message is                 about to be forwarded the response code is 110 and                 message is either form: 
  68.  
  69.                     110 Recipient ok to forward. 
  70.  
  71.                 or if the server can tell the destination of the                 forwarding: 
  72.  
  73.                     110 Recipient ok to forward <user@host.domain>. 
  74.  
  75.                 Other possible response codes are 669, 670, 671, 674                 and 677 and they all indicate that message delivery is                 by one way or another currently impossible.                 Description of the codes is later in this document. 
  76.  
  77.                 After the SEND command the server may also give                 autoreply from the remote user before the actual                 response code.  Autoreply lines are ones of code 300. 
  78.  
  79.         VER     Asks the version of the server program.  Response code                 to VER command is 501 and the textual part of the                 response is the name and the version number of the RWP                 server, for example: 
  80.  
  81.                     501 Rwrited version 1.0. 
  82.  
  83.     Message Handling: 
  84.  
  85.         FROM senderlogin                 Tells the server the identification information of the                 sender of the message.  Usually this id information is                 user's login id.  Response code to successful FROM                 command is 105, for example: 
  86.  
  87.                     105 Sender ok. 
  88.  
  89.  
  90.  
  91.  
  92.  
  93. Rinne                                                           [Page 3] 
  94.  RFC 1756                 Remote Write Protocol              January 1995 
  95.  
  96.          TO recipentlogin [tty]                 Tells the server the identification information of the                 intended recipient of the message.  Usually this id                 information is user's login id.  If tty is submitted,                 the message is delivered to that tty.  If tty is                 submitted between brackets '[]' the tty given is                 treated as a hint only.  Response code to successful                 TO command is 106. 
  97.  
  98.         FHST original.host [forwarder1.host forwarder2.host ...]                 Tells the server the host name that the message                 originates to and the path of the hosts that has                 forwarded the message.  The host name of the machine                 that is currently submitting the message to the server                 should not be in the path list. 
  99.  
  100.                 This information is relevant if message is forwarded                 and it is not originally coming from the host that is                 forwarding it.  Response code to successful FHST                 command is 111. 
  101.  
  102.         DATA    Tells the server to start receive the body of the                 message.  Response code to DATA command is 200, for                 example: 
  103.  
  104.                 200 Enter message.  Single dot '.' on line terminates. 
  105.  
  106.                 After response 200 the message lines are submitted to                 the server one after another.  Message is terminated                 by the line that contains a single dot '.'.  The                 termination of the message is acknowledged by the                 server with the response code 107.  Server does not                 notify client about receiving the single message                 lines.  If empty message is submitted (i.e. single dot                 is on the first line) the response code is 672 and                 DATA command only cancels possible previous DATA                 command.  Because of this all dots or at least dots                 that are standing alone in the line have to be quoted. 
  107.  
  108.         SEND    Sends the message.  If commands FROM, TO and DATA are                 successfully given before SEND command, the message is                 delivered to the target user.  If delivery is                 successful the response code is 103.  If message is                 not delivered directly to the target user but instead                 forwarded to another host the response code is 104.                 Response codes 669, 670 and 671, 677 indicate an error                 on message delivery and codes 673, 674, 675 indicate                 that either command FROM, TO or DATA has not been 
  109.  
  110.  
  111.  
  112. Rinne                                                           [Page 4] 
  113.  RFC 1756                 Remote Write Protocol              January 1995 
  114.  
  115.                  successfully given before SEND command.  After the                 SEND command the server may also give autoreply from                 the remote user before the actual response code.                 Autoreply lines are ones of code 300. 
  116.  
  117.         FWDS n  Tells the server that message has been forwarded n                 times.  If the server forwards the message to the                 another server, it increments the counter and tells                 the remote server the current count of forwards.                 Response code to the FWDS command is 110 if n is less                 than the server specific forward limit.  If this limit                 is exceeded the response code is 676.  If the response                 code is 676 the client can either quit the session and                 fail the message or it can give the message to the                 server despite the fact that the forward limit is                 exceeded.  If the message is given when forward limit                 is exceeded, the server tries to deliver it, but does                 not forward it to another server.  If forward count is                 given as -1, the message is considered as a autoreply                 and never forwarded. 
  118.  
  119.     Session Control: 
  120.  
  121.         RSET    Resets the RWP session.  FROM, TO and DATA -commands                 that are given before are canceled and they have to                 be given again before SEND command can be used.  Also                 possible FWDS and FHST commands are canceled. 
  122.  
  123.         BYE     Terminates the RWP session.  Server gives a response                 code 101 and closes the connection. 
  124.  
  125.         QUIT    Is the synonym to bye, but it's a lot more impolite.                 Response code is however 101 as in bye. 
  126.  
  127.     Server specific command: 
  128.  
  129.         QUOTE command 
  130.  
  131.                 Relay a command to the server.  If the QUOTE command                 is successfully completed response code 112 is                 returned.  If QUOTE command is failed the response                 code is 678.  If RWP server doesn't recognize the                 given QUOTE command the response code is 679. 
  132.  
  133.                 Currently reserved QUOTE commands are AGENT, CHARSET,                 IDENT, KEY and KEYID. 
  134.  
  135.  
  136.  
  137.  
  138.  
  139. Rinne                                                           [Page 5] 
  140.  RFC 1756                 Remote Write Protocol              January 1995 
  141.  
  142.  4. Response Codes 
  143.  
  144.    Here are all legal response codes of RWP server followed by short    textual explanation.  Only the numeral codes are important and texts    can contain practically anything, however in response code 110 there    is possibly useful information between '<' and '>' characters.  No    characters '<' or '>' should be present in other responses.  Also    response 502 has possibly interesting information about the RWP    protocol version the server supports. 
  145.  
  146.     100 Ready. 
  147.  
  148.         The RWP server is ready to accept next command. 
  149.  
  150.     101 Goodbye. 
  151.  
  152.         The RWP server is closing connection. 
  153.  
  154.     103 Message delivered. 
  155.  
  156.         The SEND command is successfully completed and the message is         delivered directly to its destination. 
  157.  
  158.     104 Message forwarded. 
  159.  
  160.         The SEND command is completed and message is forwarded to the         user. 
  161.  
  162.     105 Sender ok. 
  163.  
  164.         The FROM command successful. 
  165.  
  166.     106 Recipient ok. 
  167.  
  168.         The TO command successful. 
  169.  
  170.     107 Message ok. 
  171.  
  172.         The DATA command successful. 
  173.  
  174.     108 Recipient ok to send. 
  175.  
  176.         The VRFY command successful and direct message delivery is         possible. 
  177.  
  178.     109 RSET ok. 
  179.  
  180.         The RWP server has received the RSET command and reset itself. 
  181.  
  182.  
  183.  
  184. Rinne                                                           [Page 6] 
  185.  RFC 1756                 Remote Write Protocol              January 1995 
  186.  
  187.      110 Ok to forward. 
  188.  
  189.         or 
  190.  
  191.     110 Ok to forward <user@host.domain>. 
  192.  
  193.         The VRFY command successful and direct message delivery by         forwarding is possible.  If response has also forwarding         address the client can either forward the message itself or         give it to server for forwarding. 
  194.  
  195.     111 Original sender host ok. 
  196.  
  197.         The FHST command successful and original sender host is set as         given by the client. 
  198.  
  199.     200 Enter message.  Single dot '.' on line terminates. 
  200.  
  201.         The RWP server is ready to receive the message. Single dot on         message line terminates the message. 
  202.  
  203.      300 |I'm not in right now but I'll be back tomorrow     300 |at 8 o'clock a.m. 
  204.  
  205.         Automatical response to the delivered message.  Every line of         this user defined reply message is delivered in its own 300         line.  Response code 300 lines may appear only after SEND         command before response code 103 (message delivered).  Client         receiving autoreply 300 should show the text of the autoreply         to the user.  Actual autoreply line begins after the '|'         -character in the line. 
  206.  
  207.     500 Hello remote.host.  This is local.host speaking. 
  208.  
  209.         Response to the HELO command.  This message can also occur in         the beginning of the conversation without the VER command and         it can be ignored. 
  210.  
  211.     501 Rwrited version X.X. 
  212.  
  213.         Response to the VER command.  This message can also occur in         the beginning of the conversation without the VER command and         it can be ignored. 
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221. Rinne                                                           [Page 7] 
  222.  RFC 1756                 Remote Write Protocol              January 1995 
  223.  
  224.      502 RWP version 1.0. 
  225.  
  226.         Response to the VER command.  This message can also occur in         the beginning of the conversation without the VER command and         it can be ignored. 
  227.  
  228.     510 Valid commands are:     510     BYE,    DATA,   HELP,   HELO,     510     RSET,   SEND,   PROT,   QUIT,     510     VRFY,   VER     510     FROM senderlogin     510     FHST senderhost     510     TO   recipentlogin     510     FWDS current_hop_count 
  229.  
  230.         Response to the HELP command. 
  231.  
  232.     511 Information to the user. 
  233.  
  234.         Server specific informational response.  These responses may         occur anytime during the conversation.  The client can ignore         them. 
  235.  
  236.     512 Debug information to the user. 
  237.  
  238.         Server specific informational response.  Reserved for server         debugging.  These messages may occur anytime during the         conversation.  The client can ignore them. 
  239.  
  240.     666 FATAL ERROR! 
  241.  
  242.         The RWP server got into the fatal error situation and is about         to exit immediately.  Client programs are strongly encouraged         to close the connection. 
  243.  
  244.     668 Syntax error. 
  245.  
  246.         The RWP server has received an invalid command. 
  247.  
  248.     669 Permission denied. 
  249.  
  250.         The RWP server is unable to deliver the message because the         target user has denied the send permission. 
  251.  
  252.     670 User not logged in. 
  253.  
  254.         The RWP server is unable to deliver the message because the         target user is not logged in. 
  255.  
  256.  
  257.  
  258. Rinne                                                           [Page 8] 
  259.  RFC 1756                 Remote Write Protocol              January 1995 
  260.  
  261.      671 No such user. 
  262.  
  263.         The RWP server is unable to deliver the message because the         target user does not exist.  Error code 670 can be used to         replace this message. 
  264.  
  265.     672 No message. 
  266.  
  267.         The DATA command is terminated with empty message body.  No         SEND command can be executed before a new DATA command is         given. 
  268.  
  269.     673 FROM command required. 
  270.  
  271.         Tried to give the SEND command before FROM. 
  272.  
  273.     674 TO command required. 
  274.  
  275.         Tried to give the SEND command before TO. 
  276.  
  277.     675 DATA command required. 
  278.  
  279.         Tried to give the SEND command before DATA. 
  280.  
  281.     676 Forward limit exceeded. 
  282.  
  283.         Response to the FWDS command that had an argument that         exceeded the server specific limit of message forwarding         steps. 
  284.  
  285.     677 Unable to forward message. 
  286.  
  287.         or 
  288.  
  289.     677 Unable to forward message to <user@host.domain>. 
  290.  
  291.         Response to the SEND or VRFY command if message forwarding is         attempted and the server specific limit of message forwarding         steps has been exceeded or if message forwarding has otherwise         failed.  If message forwarding fails with message 669, 670 or         671, server will not use response 667 but gives response but         instead it gives the response analogous with the error         occured.  If message 677 includes address the message was to         be forwarded, the client may try to deliver it itself. 
  292.  
  293.     698 Unknown error. 
  294.  
  295.         RWP server has faced an internal error that is not fatal. 
  296.  
  297.  
  298.  
  299. Rinne                                                           [Page 9] 
  300.  RFC 1756                 Remote Write Protocol              January 1995 
  301.  
  302.      699 Unknown error. 
  303.  
  304.         RWP server has faced an unknown error that is not fatal. 
  305.  
  306. 5. RWP Compliant Software 
  307.  
  308.    Simple RWP 1.0 compliant server and client software RWrite-1.1 will    be available during the fall 1994. 
  309.  
  310. 6. Security of RWP 
  311.  
  312.    RWP version 1.0 does not offer any mean to verify the identity of the    user connecting the RWP server program.  It's possible to identify    the sender using ident-service, but not all hosts currently support    that.  This vulnerability is analogous with the weakness of the SMTP    protocol.  Cryptographic user verification and message hiding method    is under development and is to be defined in RWP version 2.0 during    the year 1995. 
  313.  
  314.    RWP server also may offer a way to the intruder to get to know user    ids within the target host by trying the TO and VRFY commands.  This    vulnerability is also present in SMTP.  It is however possible to    build servers so that they never give message 671 (no such user) but    use response 670 (user not logged in) instead. 
  315.  
  316.    Another way to increase security even within RWP-1.0 described in the    document is to design RWP servers so that they do not deliver    messages directly to user but instead connect to some kind of RWP    agent process that is executed by each user willing to receive RWP    messages.  This user configurable message agent could then decide    whether to deliver the message to the user and which way of delivery    to use.  Message agent is the best way to prevent hostile user from    sending uncontrolled message flood to the user's terminal. 
  317.  
  318.    Sample implementation (RWrite-1.0) of the RWP server includes the    support for user configuration files in which each user can either    allow or deny messages from some user(s), host(s) or network    domains(s).  Support for message agents is currently under    development. 
  319.  
  320.    The user that is receiving the message should be able to define    characters to be stripped from the incoming messages to prevent    terminal mess-up. 
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  Rinne                                                          [Page 10] 
  329.  RFC 1756                 Remote Write Protocol              January 1995 
  330.  
  331.  7. RWP Connection Type 
  332.  
  333.    It is suggested that tcp (and udp) port 18 should be allocated for    rwp in future versions of RFCs listing the reserved tcp/udp/rpc    ports.  Currently port 18 is assigned to the service called Message    Send Protocol (msp) that is not known to be implemented.  Actually    port 18 is not currently defined at all in the /etc/services -file of    the any common UNIX-like system.  Entry for /etc/services -file is as    follows 
  334.  
  335.        rwrite    18/udp       # RWP rwrite        rwrite    18/tcp       # RWP rwrite 
  336.  
  337.    Given that RWP compliant daemon program is /usr/sbin/rwrited the    entry for /etc/inetd.conf -file would be: 
  338.  
  339.        rwrite  stream  tcp  nowait  nobody  /usr/sbin/rwrited rwrited 
  340.  
  341. 8. Character quotation 
  342.  
  343.    To offer a safe method to transfer various character sets RWP defines    a method to quote characters in both message and autoreply.  RWP uses    quotation similar to MIME `quoted-printable' encoding.  Quoted    character is presented as a '=' -sign followed by a two character hex    code.  This means also that all '='-signs have to be quoted.    Quotation is also needed when message contains a line with only a    single dot '.' in it. 
  344.  
  345.     For example:                     '.'  ->  =2E                     '='  ->  =3D                     '\a' ->  =07                     '\t' ->  =09 
  346.  
  347. 9. Security Considerations 
  348.  
  349.    Security issues are not discussed in this memo. 
  350.  
  351. 10. Author's Address 
  352.  
  353.    Timo J. Rinne    Helsinki University of Technology.    Cirion oy    PO-BOX 250    FIN-00121    Helsinki, Finland 
  354.  
  355.    EMail: Timo.Rinne@hut.fi 
  356.  
  357.  
  358.  
  359. Rinne                                                          [Page 11] 
  360.  
  361.