As per Relevance of the word successful, we have this rfc below:
Network Working Group T.
Request for Comments: 1756
Category: Experimental January 1995
REMOTE WRITE PROTOCOL - VERSION 1.0
Status of this
This memo defines an Experimental Protocol for the
community. This memo does not specify an Internet standard of
kind. Discussion and suggestions for improvement are requested
Distribution of this memo is unlimited
1.
It is often convenient to use electronic communication
lighter than electronic mail. Sometimes even the use of the talk(1)
*) program seems like overkill. We like to offer to user
like UNIX **) command write(1) ***) except that it can also
messages through the network instead of the single host
There have been few programs offering this kind of service, but
have either based on SUN-RPC protocol or used a strictly
protocol
This document describes a simple Remote Write Protocol (RWP)
should have been documented at least 10 years ago. But late
better than never. Version number of the RWP protocol in
document is 1.0.
2.
RWP is a simple protocol that can be used to relay short
through the network to other users. RWP looks pretty much
Simple Mail Transfer Protocol (SMTP) ****) though it is a bit
complicated due to the interactive nature of the RWP session
The idea behind the RWP session is that client program that
relaying message to the host in which the target user is logged
opens the tcp or udp connection to the server program running in
target machine Then the client gives the sender's and recipient'
identification (usually login ids), actual message body and tells
server to deliver a message to the user. On tcp-connection
returns a status from each action taken. On udp-connection
responses are sent. RWP sessions through udp are implemented
support message broadcasting
Rinne [Page 1]
RFC 1756 Remote Write Protocol January 1995
Message delivering methods are not defined within this document,
the basic method could be a simple write to users terminal. This
basically what UNIX command write(1) does. Depending on
implementation, the delivery method could be configurable
by each user
3.
Server program answers to each command submitted by a response.
responses have two parts: three number unique response code and
short textual explanation of the response. Also whenever the
is ready to accept new commands a notification is submitted to
client
There are three kinds of commands in RWP. The first group is
querying a status of the server. The second group is actual
handling commands and the last set of commands are for RWP
control
When the server is ready to receive a command from the client,
sends a message code 100 to the client. This message is for
as follows
100 Ready
Server commands are as follows
Status
HELP Gives a short help message that contains
RWP commands. Help lines have code 510. Example
implementation *****) gives a following response
HELP command
510 Valid commands are
510 BYE, DATA, HELP, HELO
510 RSET, SEND, PROT, QUIT
510 VRFY,
510 FROM
510 FHST
510 TO recipentlogin [tty
510 FWDS current_hop_
HELO Says hello to the server. Server response to
command has code 500. For example
500 Hello remote.host. This is local.host speaking
Rinne [Page 2]
RFC 1756 Remote Write Protocol January 1995
PROT Asks the RWP protocol version from the server
Response code to PROT command is 502.
version described in this document is RWP 1.0 and
response is as follows
502 RWP version 1.0.
VRFY After the recipient of the message is set by to
described later, the possibility of message
can be queried by VRFY command. If message can
delivered the response code is 108. If message
about to be forwarded the response code is 110
message is either form
110 Recipient ok to forward
or if the server can tell the destination of
forwarding
110 Recipient ok to forward .
Other possible response codes are 669, 670, 671, 674
and 677 and they all indicate that message delivery
by one way or another currently impossible
Description of the codes is later in this document
After the SEND command the server may also
autoreply from the remote user before the
response code. Autoreply lines are ones of code 300.
VER Asks the version of the server program. Response
to VER command is 501 and the textual part of
response is the name and the version number of the
server, for example
501 Rwrited version 1.0.
Message Handling
FROM
Tells the server the identification information of
sender of the message. Usually this id information
user's login id. Response code to successful
command is 105, for example
105 Sender ok
Rinne [Page 3]
RFC 1756 Remote Write Protocol January 1995
TO recipentlogin [tty
Tells the server the identification information of
intended recipient of the message. Usually this
information is user's login id. If tty is submitted
the message is delivered to that tty. If tty
submitted between brackets '[]' the tty given
treated as a hint only. Response code to
TO command is 106.
FHST original.host [forwarder1.host forwarder2.host ...]
Tells the server the host name that the
originates to and the path of the hosts that
forwarded the message. The host name of the
that is currently submitting the message to the
should not be in the path list
This information is relevant if message is
and it is not originally coming from the host that
forwarding it. Response code to successful
command is 111.
DATA Tells the server to start receive the body of
message. Response code to DATA command is 200,
example
200 Enter message. Single dot '.' on line terminates
After response 200 the message lines are submitted
the server one after another. Message is
by the line that contains a single dot '.'.
termination of the message is acknowledged by
server with the response code 107. Server does
notify client about receiving the single
lines. If empty message is submitted (i.e. single
is on the first line) the response code is 672
DATA command only cancels possible previous
command. Because of this all dots or at least
that are standing alone in the line have to be quoted
SEND Sends the message. If commands FROM, TO and DATA
successfully given before SEND command, the message
delivered to the target user. If delivery
successful the response code is 103. If message
not delivered directly to the target user but
forwarded to another host the response code is 104.
Response codes 669, 670 and 671, 677 indicate an
on message delivery and codes 673, 674, 675
that either command FROM, TO or DATA has not
Rinne [Page 4]
RFC 1756 Remote Write Protocol January 1995
successfully given before SEND command. After
SEND command the server may also give autoreply
the remote user before the actual response code
Autoreply lines are ones of code 300.
FWDS n Tells the server that message has been forwarded
times. If the server forwards the message to
another server, it increments the counter and
the remote server the current count of forwards
Response code to the FWDS command is 110 if n is
than the server specific forward limit. If this
is exceeded the response code is 676. If the
code is 676 the client can either quit the session
fail the message or it can give the message to
server despite the fact that the forward limit
exceeded. If the message is given when forward
is exceeded, the server tries to deliver it, but
not forward it to another server. If forward count
given as -1, the message is considered as a
and never forwarded
Session Control
RSET Resets the RWP session. FROM, TO and DATA -
that are given before are canceled and they have
be given again before SEND command can be used.
possible FWDS and FHST commands are canceled
BYE Terminates the RWP session. Server gives a
code 101 and closes the connection
QUIT Is the synonym to bye, but it's a lot more impolite
Response code is however 101 as in bye
Server specific command
QUOTE
Relay a command to the server. If the QUOTE
is successfully completed response code 112
returned. If QUOTE command is failed the
code is 678. If RWP server doesn't recognize
given QUOTE command the response code is 679.
Currently reserved QUOTE commands are AGENT, CHARSET
IDENT, KEY and KEYID
Rinne [Page 5]
RFC 1756 Remote Write Protocol January 1995
4. Response
Here are all legal response codes of RWP server followed by
textual explanation. Only the numeral codes are important and
can contain practically anything, however in response code 110
is possibly useful information between '<' and '>' characters.
characters '<' or '>' should be present in other responses.
response 502 has possibly interesting information about the
protocol version the server supports
100 Ready
The RWP server is ready to accept next command
101 Goodbye
The RWP server is closing connection
103 Message delivered
The SEND command is successfully completed and the message
delivered directly to its destination
104 Message forwarded
The SEND command is completed and message is forwarded to
user
105 Sender ok
The FROM command successful
106 Recipient ok
The TO command successful
107 Message ok
The DATA command successful
108 Recipient ok to send
The VRFY command successful and direct message delivery
possible
109 RSET ok
The RWP server has received the RSET command and reset itself
Rinne [Page 6]
RFC 1756 Remote Write Protocol January 1995
110 Ok to forward
110 Ok to forward .
The VRFY command successful and direct message delivery
forwarding is possible. If response has also
address the client can either forward the message itself
give it to server for forwarding
111 Original sender host ok
The FHST command successful and original sender host is set
given by the client
200 Enter message. Single dot '.' on line terminates
The RWP server is ready to receive the message. Single dot
message line terminates the message
300 |I'm not in right now but I'll be back
300 |at 8 o'clock a.m
Automatical response to the delivered message. Every line
this user defined reply message is delivered in its own 300
line. Response code 300 lines may appear only after
command before response code 103 (message delivered).
receiving autoreply 300 should show the text of the
to the user. Actual autoreply line begins after the '|'
-character in the line
500 Hello remote.host. This is local.host speaking
Response to the HELO command. This message can also occur
the beginning of the conversation without the VER command
it can be ignored
501 Rwrited version X.X
Response to the VER command. This message can also occur
the beginning of the conversation without the VER command
it can be ignored
Rinne [Page 7]
RFC 1756 Remote Write Protocol January 1995
502 RWP version 1.0.
Response to the VER command. This message can also occur
the beginning of the conversation without the VER command
it can be ignored
510 Valid commands are
510 BYE, DATA, HELP, HELO
510 RSET, SEND, PROT, QUIT
510 VRFY,
510 FROM
510 FHST
510 TO
510 FWDS current_hop_
Response to the HELP command
511 Information to the user
Server specific informational response. These responses
occur anytime during the conversation. The client can
them
512 Debug information to the user
Server specific informational response. Reserved for
debugging. These messages may occur anytime during
conversation. The client can ignore them
666 FATAL ERROR
The RWP server got into the fatal error situation and is
to exit immediately. Client programs are strongly
to close the connection
668 Syntax error
The RWP server has received an invalid command
669 Permission denied
The RWP server is unable to deliver the message because
target user has denied the send permission
670 User not logged in
The RWP server is unable to deliver the message because
target user is not logged in
Rinne [Page 8]
RFC 1756 Remote Write Protocol January 1995
671 No such user
The RWP server is unable to deliver the message because
target user does not exist. Error code 670 can be used
replace this message
672 No message
The DATA command is terminated with empty message body.
SEND command can be executed before a new DATA command
given
673 FROM command required
Tried to give the SEND command before FROM
674 TO command required
Tried to give the SEND command before TO
675 DATA command required
Tried to give the SEND command before DATA
676 Forward limit exceeded
Response to the FWDS command that had an argument
exceeded the server specific limit of message
steps
677 Unable to forward message
677 Unable to forward message to .
Response to the SEND or VRFY command if message forwarding
attempted and the server specific limit of message
steps has been exceeded or if message forwarding has
failed. If message forwarding fails with message 669, 670
671, server will not use response 667 but gives response
instead it gives the response analogous with the
occured. If message 677 includes address the message was
be forwarded, the client may try to deliver it itself
698 Unknown error
RWP server has faced an internal error that is not fatal
Rinne [Page 9]
RFC 1756 Remote Write Protocol January 1995
699 Unknown error
RWP server has faced an unknown error that is not fatal
5. RWP Compliant
Simple RWP 1.0 compliant server and client software RWrite-1.1
be available during the fall 1994.
6. Security of
RWP version 1.0 does not offer any mean to verify the identity of
user connecting the RWP server program. It's possible to
the sender using ident-service, but not all hosts currently
that. This vulnerability is analogous with the weakness of the
protocol. Cryptographic user verification and message hiding
is under development and is to be defined in RWP version 2.0
the year 1995.
RWP server also may offer a way to the intruder to get to know
ids within the target host by trying the TO and VRFY commands.
vulnerability is also present in SMTP. It is however possible
build servers so that they never give message 671 (no such user)
use response 670 (user not logged in) instead
Another way to increase security even within RWP-1.0 described in
document is to design RWP servers so that they do not
messages directly to user but instead connect to some kind of
agent process that is executed by each user willing to receive
messages. This user configurable message agent could then
whether to deliver the message to the user and which way of
to use. Message agent is the best way to prevent hostile user
sending uncontrolled message flood to the user's terminal
Sample implementation (RWrite-1.0) of the RWP server includes
support for user configuration files in which each user can
allow or deny messages from some user(s), host(s) or
domains(s). Support for message agents is currently
development
The user that is receiving the message should be able to
characters to be stripped from the incoming messages to
terminal mess-up
Rinne [Page 10]
RFC 1756 Remote Write Protocol January 1995
7. RWP Connection
It is suggested that tcp (and udp) port 18 should be allocated
rwp in future versions of RFCs listing the reserved tcp/udp/
ports. Currently port 18 is assigned to the service called
Send Protocol (msp) that is not known to be implemented.
port 18 is not currently defined at all in the /etc/services -file
the any common UNIX-like system. Entry for /etc/services -file is
rwrite 18/udp # RWP
rwrite 18/tcp # RWP
Given that RWP compliant daemon program is /usr/sbin/rwrited
entry for /etc/inetd.conf -file would be
rwrite stream tcp nowait nobody /usr/sbin/rwrited
8. Character
To offer a safe method to transfer various character sets RWP
a method to quote characters in both message and autoreply. RWP
quotation similar to MIME `quoted-printable' encoding.
character is presented as a '=' -sign followed by a two character
code. This means also that all '='-signs have to be quoted
Quotation is also needed when message contains a line with only
single dot '.' in it
For example
'.' -> =2
'=' -> =3
'\a' -> =07
'\t' -> =09
9. Security
Security issues are not discussed in this memo
10. Author's
Timo J.
Helsinki University of Technology
Cirion
PO-BOX 250
FIN-00121
Helsinki,
EMail: Timo.Rinne@hut.
Rinne [Page 11]
if you see any problems within the linking, don't worry be happy,
this is version 0.1 of the Relevance System and you gotta expect some crappy subroutines sometimes,
just be content we did not write this in Java, which would have made this "bigger and better" HAHAHHA.
RFC documents can be found at I.E.T.F.
Relevance System Copyright © 2002 Spectrum WorldResearch
other technical nosh by ServerMasters Corporation
collaboration of BobX