diff options
Diffstat (limited to 'doc/rfc/rfc1312.txt')
-rw-r--r-- | doc/rfc/rfc1312.txt | 451 |
1 files changed, 451 insertions, 0 deletions
diff --git a/doc/rfc/rfc1312.txt b/doc/rfc/rfc1312.txt new file mode 100644 index 0000000..445079c --- /dev/null +++ b/doc/rfc/rfc1312.txt @@ -0,0 +1,451 @@ + + + + + + +Network Working Group R. Nelson +Request for Comments: 1312 Crynwr Software +Obsoletes: RFC 1159 G. Arnold + Sun Microsystems, Inc. + April 1992 + + + Message Send Protocol 2 + +Status of this Memo + + This memo defines an Experimental Protocol for the Internet + community. Discussion and suggestions for improvement are requested. + Please refer to the current edition of the "IAB Official Protocol + Standards" for the standardization state and status of this protocol. + Distribution of this memo is unlimited. + +Discussion + + The Message Send Protocol is used to send a short message to a given + user on a given terminal on a given host. Unix's write command + offers a limited form of this service through its host-local write + command. This service is also known on some hosts as "SEND". + + As the Internet grows, more and more people are using hosts that do + not run Internet protocols at all times. These hosts may be able to + use a simple protocol that can be implemented using UDP and IP. The + Message Send Protocol is one such protocol. + + Note that a message sending protocol is already defined using TCP. + The SMTP protocol includes a "SEND" command that will direct mail to + a user's terminal. SMTP's SEND is not useful in this instance + because SMTP's SEND is not implemented by the majority of vendors at + this time, and is difficult to use by unskilled users. For the + purposes of standardization, we will include a TCP based Message Send + Service. + +Message Syntax + + The message consists of several parts, all of which must be present + The first part is a single octet indicating the protocol revision, + currently decimal 66, 'B'. The remaining parts are null-terminated + sequences of eight-bit characters in the ISO 8859/1 alphabet. Some + parts may be empty. All comparisons of parts (e.g., recipient, + + + + + + + +Nelson & Arnold [Page 1] + +RFC 1312 Message Send Protocol 2 April 1992 + + + cookie, etc.) are case-insensitive. The parts are as follows: + + RECIPIENT The name of the user that the message is directed to. + If this part is empty, the message may be delivered to + any user of the destination system. + + RECIP-TERM The name of the terminal to which the message is to be + delivered. The syntax and semantics of terminal names + are outside the scope of this specification. If this + part is empty, the "right" terminal is chosen. This is + a system-dependent function. If this part consists of + the string "*", all terminals on the destination + system are implied. If the RECIPIENT part is empty + but the RECIP-TERM is not, the message is written on + the specified terminal. If both the RECIPIENT and + RECIP-TERM parts are empty, the message should be + written on the "console", which is defined as some + place where the message is most likely to be seen by a + human operator or administrator. + + MESSAGE The actual message. The server need not preserve the + formatting and white-space content of the message if + this is necessary to display it. New lines should be + represented using the usual Netascii CR + LF. + (Following the Internet tradition, a server should + probably be prepared to accept a message in which some + other end-of-line convention is followed, but a + conforming client must use CR + LF.) + + The message text may only contain printable characters + from the ISO 8859/1 set, which is upward compatible + from USASCII, plus CR, LF and TAB. No other control + codes or escape sequences may be included: the client + should strip them from the message before it is + transmitted, and the server must check each incoming + message for illegal codes. (A server may choose to + display the message after stripping out such codes, or + may reject the entire message.) If the MESSAGE part is + empty, the message may be discarded by the server. + + SENDER The username of the sender. (This and subsequent parts + were not present in version 1 of the Message Send + Protocol.) This part should not be empty. A server may + choose to accept, reject or ignore messages in which + the SENDER part is empty. + + SENDER-TERM The name of the sending user's terminal. This part may + be empty. The intention is that a recipient may reply + + + +Nelson & Arnold [Page 2] + +RFC 1312 Message Send Protocol 2 April 1992 + + + to a message by sending the reply to the user SENDER + at terminal SENDER-TERM on the originating system. + (The sender's hostname should be retrieved from the + transport software.) + + COOKIE A magic cookie. This part must be present in all + messages, but is only of significance for the UDP + service. The combination of the sender's UDP port + number and this cookie should be unique. A client may + elect to transmit a particular message several times + to increase the chances of its reception; a server may + use the cookie and port to identify duplicate messages + and discard them. A reasonable cookie is the time of + day represented in a readable format. The maximum + length of a cookie is 32 octets, excluding the + terminating null. + + SIGNATURE A token which, if present, may be used by the server + to verify the identity of the sender. The use of the + SIGNATURE part is discussed further in the section on + Security, below. + + + The total length of the message shall be less than 512 octets. This + includes all eight parts, and any terminating nulls. UDP packets are + limited to 512 octets. + + If this protocol is changed, the revision number will be changed. + + TCP Based Message Send Service + + One Message Send Service is defined as a connection based application + on TCP. A server listens for TCP connections on TCP port 18. Once a + connection is established a message is sent by the client over the + connection. + + The server replies with a single character indicating positive ("+") + or negative ("-") acknowledgment, immediately followed by an optional + message of explanation, terminated with a null. The positive + acknowledgement means that the message was successfully delivered to + some user/terminal, and that the negative acknowledgement means that + the message was NOT delivered to any terminal. + + The positive acknowledgement message can contain information about + what user and terminal the message was delivered to in the case of + incomplete user/terminal fields in the message. The negative + acknowledgement can contain information about WHY the message was not + delivered (no such user/terminal, system failure, user doesn't accept + + + +Nelson & Arnold [Page 3] + +RFC 1312 Message Send Protocol 2 April 1992 + + + messages, etc). + + Multiple messages can be sent over the same channel. The client + should close first (the server may/should not close directly after + the acknowledgement is sent) and the server may close after some + timeout on the order of minutes. If the sever is unable to decode a + message, or no message is received within a suitable timeout, it may + close the channel (on the assumption that the sender may have + formatted the data incorrectly). + + UDP Based Message Send Service + + Another Message Send Service is defined as a datagram based + application on UDP. A server listens for UDP datagrams on UDP port + 18. When a datagram is received by the server, an answering datagram + may be sent back to the client. If the message was addressed to a + particular user (i.e., the RECIPIENT part was non-empty) and was + successfully delivered to that user, a positive acknowledgement + should be sent (as described above). If the message was directed at + any user (i.e., the RECIPIENT part is empty), or if the message could + not be delivered for some reason, no reply is sent. + + The reason for this policy is that the UDP service may be used to + broadcast messages addressed to a particular user on an unknown + system or all users on all systems. In either case, it is + inappropriate for all servers to send replies. An alternative + approach might have been to require that a server only send a reply + if a message was addressed explicitly to that system and was not + broadcast. Unfortunately, the most popular network programming API + does not provide an easy way for an application to determine this; + furthermore such a policy would provide no feedback to the sender of + a broadcast message to a particular recipient. The approach adopted + here provides a reasonable compromise. + + Example of Message Encoding + + Consider a situation in which the user "sandy" is logged into the + console of system "alpha", and wishes to send a message to the user + "chris". "chris" is known to be logged in on the system "beta" but + the exact terminal is unknown. The message consists of two lines of + text, "Hi" followed by "How about lunch?". + + The message would be encoded as follows: + + + + + + + + +Nelson & Arnold [Page 4] + +RFC 1312 Message Send Protocol 2 April 1992 + + + + + +--------+---------+---------+---------+ + 0 | B | c | h | r | + +--------+---------+---------+---------+ + 4 | i | s | <NULL> | <NULL> | + +--------+---------+---------+---------+ + 8 | H | i | <CR> | <LF> | + +--------+---------+---------+---------+ + 12 | H | o | w | | + +--------+---------+---------+---------+ + 16 | a | b | o | u | + +--------+---------+---------+---------+ + 20 | t | | l | u | + +--------+---------+---------+---------+ + 24 | n | c | h | ? | + +--------+---------+---------+---------+ + 28 | <NULL>| s | a | n | + +--------+---------+---------+---------+ + 32 | d | y | <NULL> | c | + +--------+---------+---------+---------+ + 36 | o | n | s | o | + +--------+---------+---------+---------+ + 40 | l | e | <NULL> | 9 | + +--------+---------+---------+---------+ + 44 | 1 | 0 | 8 | 0 | + +--------+---------+---------+---------+ + 48 | 6 | 1 | 2 | 1 | + +--------+---------+---------+---------+ + 52 | 3 | 2 | 5 | <NULL> | + +--------+---------+---------+---------+ + 56 | <NULL> | + +--------+ + + + Note that the RECIP-TERM and SIGNATURE parts are empty. The COOKIE + is the string "910806121325", which in this implementation indicates + that the message was sent at 12:13:25 on the 6th of August, 1991. + The identity if the sending and receiving systems is not included in + the message; the server must obtain this information from the + transport service. + + Advisories + + Client and server implementations must follow the character set + restrictions noted in the MESSAGE part description. Failure to do so + may have undesirable effects on the operation of the receiver's + terminal; more seriously, it may open up a significant security + + + +Nelson & Arnold [Page 5] + +RFC 1312 Message Send Protocol 2 April 1992 + + + "hole". The checks must be made on any part of the message which may + be displayed, including the sender's name and terminal. This is one + case where the admonition to "be liberal in what you accept" is not + applicable. A server may chose to apply additional checks to an + incoming message, and to reject any message which may pose a security + risk. For example, a system using a PostScript-based display may + reject a message which might be interpreted as an executable + PostScript program. + + The underlying transport, whether TCP or UDP, is expected to provide + checksums for the message and any response. + + The semantics of the various RECIPIENT and RECIP-TERM combinations + may be confusing. The introduction of the "*" wildcard designation in + the RECIP-TERM part makes it possible to send a message to all + terminals on the designated system (if RECIPIENT is empty), or to all + terminals at which a particular recipient has logged in. + + A positive acknowledgement may indicate only that the Message Send + server was able to successfully invoke a local message delivery + service. It may not be possible for true end-to-end semantics to be + inferred. + + For example, a Message Send server may employ a local delivery + mechanism which calls upon the services of a window system to display + the message in a pop-up window. This process may take some + significant time to complete, and it is unclear whether it is useful + for the server to wait for an indeterminate period before returning + an acknowledgement. Therefore, this specification does not prescribe + whether the acknowledgement is associated with delivery of the + message to the local service, the display of the message, or + confirmation by the user that the message has been read by, e.g., + dismissing the pop-up window. + +Security Considerations + + Those who plan to implement this service must ensure that the + following issues are reflected in the documentation of their + products, and that their implementations include sufficient + configuration controls to allow systems and network administrators to + achieve the appropriate levels of usability and security. + + First, this service may allow someone to write on a user's terminal + without the user giving his or her permission. Where possible, users + should be provided with a mechanism for disabling this. + + Second, it is extremely important for implementors to observe the + rules for filtering message text as discussed under Message Syntax + + + +Nelson & Arnold [Page 6] + +RFC 1312 Message Send Protocol 2 April 1992 + + + above. Failure to do this may introduce major security holes. + + The third issue concerns the verification of the sender's identity. + If the recipient is fooled into believing that a message is from a + particular user, various security issues may arise. For example, the + recipient may send a reply containing confidential material. + + This service is primarily intended for "open" environments: + controlled local area networks used by reasonably trusted + participants, in which security considerations may be relaxed in the + interests of ease of use and administration. In such an environment + it is appropriate to trust the user name and source IP address as + identifying the actual sender of the message. + + Within more security-conscious environments, this assumption is + probably unacceptable. As has been widely noted, there is no way + within the current Internet architecture to ensure that the source + address of an IP datagram is correct. Hence it is entirely possible + for someone to spoof the IP address. + + The obvious, and simplest, answer is to disallow the use of this + protocol in such situations. However a more constructive approach is + to incorporate within the protocol some mechanism by which a server + can reliably identify the sender. + + In this version of the protocol specification, we define a SIGNATURE + part within a message. If this part is empty, the identity of the + sender cannot be verified, and the server implementation may elect to + reject all such requests. If the part is not empty, it is treated as + a case-insensitive text encoding of some security token. This RFC + does not define the encoding or interpretation of this token. We + expect that such matters will form part of future RFCs on security + and privacy issues; at an appropriate time, this RFC will be re- + issued to include references to these RFCs. + +Acknowledgements + + PostScript is a trademark of Adobe Systems, Inc. + + + + + + + + + + + + + +Nelson & Arnold [Page 7] + +RFC 1312 Message Send Protocol 2 April 1992 + + +Authors' Addresses + + Russell Nelson + Crynwr Software + 11 Grant St. + Potsdam, NY 13676 + + Phone: (315) 268-1925 + EMail: nelson@crynwr.com + + + Geoff Arnold + Sun Microsystems, Inc. + 2 Federal Street + Billerica, MA 01821 + + Phone: (508) 671-0317 + EMail: geoff@east.sun.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Nelson & Arnold [Page 8] +
\ No newline at end of file |