分享
 
 
 

RFC1312 - Message Send Protocol 2

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

Network Working Group R. Nelson

Request for Comments: 1312 Crynwr Software

Obsoletes: RFC1159 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,

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

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

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:

+--------+---------+---------+---------+

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

"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

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 RFCwill be re-

issued to include references to these RFCs.

Acknowledgements

PostScript is a trademark of Adobe Systems, Inc.

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有