分享
 
 
 

RFC54 - Official Protocol Proffering

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

Network Working Group Steve Crocker (UCLA)

Request for Comments # 54 Jon Postel (UCLA)

June 18, 1970 John Newkirk (Harvard)

Mike Kraley (Harvard)

An Official Protocol Proffering

I. INTRODUCTION

As advertised in NEW/RFC#53, we are submitting the protocol herein

for criticism, comments, etc. We intend for this protocol to become

the initial official protocol, and will, therefore, be happiest if no

serious objections are raised. Nevertheless, we will entertain all

manner of criticism until July 13, 1970, and such criticism should be

published as a NWG/RFCor directed to the first author.

After July 13, a decision will be made whether to adopt this protocol

(or slight variation) or whether to redesign it and resubmit it for

criticism.

Only the Protocol

In preceding discussions of protocol, no clear distinction has been

made between the network-wide specifications and local strategies.

We state here that the only network-wide issues are message formats

and restrictions on message content. Implementation of a Network

Control Program (NCP) and choice of system calls are strictly local

issues.

This document is constrained to cover only network-wide issues and

thus will not treat system calls or NCP tables; nevertheless, a

protocol is useless without an NCP and a set of system calls, so we

have eXPended a great deal of effort in deriving a protypical NCP.

This effort is reported in NWG/RFC#55, and the reader should

correlate the protocol presented here with the suggestions for using

it presented there. It is important to remember, however, that the

content of NWG/RFC#55 is only suggestive and that competitive

proposals should be examined before choosing an implementation.

Flow Control

In the course of designing this current protocol, we have come to

understand that flow control is more complex than we imagined. We

now believe that flow control techniques will be one of the active

areas of concern as the network traffic increases. We have,

therefore, benefitted from some ideas stimulated by Richard Kaline

and Anatol Holt and have modified the flow control procedure.

(Defects in our scheme are, of course, only our fault). This new

procedure has demonstrable limitations, but has the advantages that

it is more cleanly implementable and will support initial network

use. This is the only substantive change from the protocol already

agreed upon.

The new flow control mechanism requires the receiving host to

allocate buffer space for each connection and to notify the sending

host of how much space in bits is available. The sending host keeps

track of how much room is available and never sends more text than it

believes the receiving host can accept.

To implement this mechanism, the sending host keeps a counter

associated with each connection. The counter is initialized to zero,

increased by control commands sent from the receiving host, and

decremented by the text length of any message sent over the

connection. The sending host is prohibited from sending text longer

than the value of the counter, so the counter never goes below zero.

Ideally, the receiving host will allocate some buffer space as soon

as the connection is established. The amount allocated must never

exceed what the receiver can guarantee to accept. As text arrives,

it occupies the allocated buffer space. When the receiving process

absorbs the waiting text from the buffer, the NCP fires back a new

allocation of space for that connection. The NCP may allocate space

even if the receiving process has not absorbed waiting text if it

believes that extra buffer space is appropriate. Similarly, the NCP

may decide not to reallocate buffer space after the receiving process

makes it available.

The control command which allocates space is

ALL <link> <space>

This command is sent only from the receiving host to the sending

host.

This formulation of flow control obviates the RSM and SPD commands in

NWG/RFC#36, and the Host-to-Imp message type 10 and Imp-to-Host

message types 10 and 11 in the current revision of BBN Report 1822.

The obvious limitation in this scheme is that the receiving host is

not permitted to depend upon average buffer usage -- worse case is

always assumed. If only a few connections are open, it is unlikely

that there would be much savings. However, for more than a few

connections, average buffer usage will be much less than allocated

buffer space. We have looked at extensions of this protocol which

would include adaptive allocation, and we believe this to be

feasible. For the present this limited scheme seems best, and we

look forward to discussing more sophisticated schemes later. The old

scheme of special RFNM's, etc. also remains under discussion.

In order to answer questions and discuss details, we will hold a pair

of network meetings. The first will be on June 29 at Harvard and the

second on July 1 at UCLA. We request that no more than on programmer

per host attend a meeting and that hosts be represented at only one

of these meetings. Two of us (J.N. and S.C.) will be at both

meetings.

To make reservations to attend the Harvard meeting, contact

Mrs. Margi Robison

(617) 495-3989

or 495-3991

To make reservations to attend the UCLA meeting, contact Mrs. Benita

Kirstel (213) 825-2368.

II. THE PROTOCOL

The notion of a connection as explained in NWG/RFC#33 pervades the

protocol. A connection is a simplex communication path, intended to

be between two processes.

The primary function of the protocol is to provide for

(1) establishment of connections,

(2) regulation of flow over connections, and

(3) termination of connections.

In addition, the protocol provides some ancillary functions such as

sending simulated interrupt pulses and echoing test messages.

To provide a path for exchanging information about connections, we

designate specific links, i.e. link one between each pair of hosts to

be control links. Traffic on control links consists only of control

commands, defined below.

Connections are named by a pair of sockets. Sockets are 40 bit names

which are known throughout the network. Each host is assigned a

private subset of these names, and a command which requests a

connection names one socket which is local to the requesting host and

one local to the receiver of the request.

Sockets are polarized; even numbered sockets are receive sockets; odd

numbered ones are send sockets. One of each is required to make a

connection.

To facilitate transmission of information over a connection, a unique

link is assigned to each connection. One of the steps in

establishing a connection, therefore, is the assignment of a link.

Of the non-control links, zero is reserved for intra-network use, and

links 32 to 255 are reserved for experiment and expansion. Thus only

links 2 through 31 are available for regular use. Link assignment

must either always be done by the receiver or always by the sender.

We have (almost) arbitrarily chosen this to be the receiver's

responsibility.

All regular messages consist of a 32 bit leader, marking, text, and

padding. Marking is a (possibly null) sequence of zeroes followed by

a 1; padding is a 1 followed by a (possibly null) sequence of zeroes.

A regular message sent over the control link (link 1) is called a

control message. Its text is an integral (possibly zero) number of

control commands in the form described below, and this text must end

on a command boundary.

The commands used to establish a connection are STR and RTS. The STR

command is sent from a prospective sender to a prospective receiver.

Its <my socket> field contains a send socket local to the prospective

sender; its <your socket> field contains a receive socket local to

the prospective receiver. The RTS command is the dual, but is also

contains a <link> field for link assignment. These two commands are

referred to as requests-for-connection (RFC). A STR and an RTS match

if the <my socket> field of one is identical to the <your socket>

field of the other and vice versa. A connection is established where

a matching pair of RFC's have been exchanged.

Hosts are prohibited from establishing more than one connection to

any local socket. Therefore, a host may not use a socket for the <my

socket> field of an RFCif that socket is mentioned in a previous

RFCand the connection is not yet terminated.

The command used to terminate a connection is CLS. Each side must

send and receive a CLS command before a connection is completely

terminated and the sockets are free to participate in other

connections. It is not necessary that both RFC's be exchanged before

a connection is terminated. More details on termination are given

below.

After a connection is established, the receiving host sends a ALL

command which allocates space for the connection. The sender keeps

track of how much space is available in the receiving host and does

not transmit more text than the receiving host can accept, as

explained above. A sender is also constrained by the local IMP from

sending a message over a connection until the RFNM from the previous

message is received.

After a connection is established, CLS commands sent by the receiver

and sender have slightly different effects. CLS command sent by the

sender indicate that no more messages will be sent over the

connection. This command must not be sent if there is a message in

transit over the connection.

CLS commands sent by the receiver act as demands on the sender to

terminate transmission. However, since there is a delay in getting

the CLS command to the sender, the receiver must expect its buffers

to fill to the limit provided in ALL commands.

While a connection is established, either side may send INR or INS

commands. The interpretation of these commands is a local matter,

but in general they will provide and escape function.

Note that the ALL, INR and INS commands may be sent only after the

connection is established and before a CLS command is sent.

A very simple test facility is provided by the ECO and ERP commands.

Upon receiving a ECO command, a host must change the first eight bits

to ERP and return it. These commands have no relationship to

connections.

A NOP command is included for convenience. It is coded as zero to

facilitate command message construction.

Finally, an ERR command is included for notifying a foreign host it

has (apparently) made an error. At present, no specific list of

errors is defined, and no action is defined for the receipt of ERR

commands. Hosts should log ERR commands upon receipt so that system

programmers can diagnose the trouble. A host may generate an ERR

command at any time and for any reason, but it is advised that each

host publish an exhaustive list of the ERR commands it may sent and

their interpretations.

NETWORK CONTROL COMMANDS

The following is a detailed description of the structure and format

of each of the control commands.

To facilitate and clarify socket descriptions, the following

conventions have been adopted:

<my socket> and <your socket> are used in the command descriptions.

<my socket> is local to the originator of the command.

<your socket> is local to the receiver of the command.

CONTROL COMMAND FORMATS

No Operation

_______

NOP

_______

Request Connection, Receiver to Sender

______________________________________________

RTS my socket your socket link

___________________________________________

Request Connection, Sender to Receiver

_____________________________________

STR my socket your socket

___________________________________

Close

_____________________________________

CLS my socket your socket

___________________________________

Allocate

__________________________

ALL link space

________________________

Interrupt Sent by Receiving Process

_______________

INR link

______________

Interrupt Sent by Sending Process

_______________

INS link

______________

Echo Request

____________________________ _________

\ \

ECO length / / text

___________________________\ \________

Echo Reply

____________________________ _________

\ \

ERP length / / text

___________________________\ \________

Error Detected

____________________________ _________

\ \

ERR length / / text

___________________________\ \________

The host is specified in the leader.

<link> is 8 bits

<space> is 32 bits long and is an unsigned integer.

<length> is an unsigned 16 bit integer.

<text> is as long as the length. The command is therefore 24 bits

longer that the length. Maximum length is one message, to facilitate

command decoding and manipulation.

All control command codes are 8 bit long:

NOP = 0

RTS = 1

STR = 2

CLS = 3

ALL = 4

INR = 5

INS = 6

ECO = 7

ERP = 8

ERR = 9

<my socket> and <your socket> are 32 bits long,

_______________________

User number AEN

______________________

24 bits for user number and 8 bits for AEN.

III. Conclusion

Extensions to the Protocol

Some issues have not been adequately treated in the current protocol.

We have in mind the following topics to consider more thoroughly and

perhaps experiment with.

1. More Sophisticated Flow Control.

As mentioned above, other schemes for flow control are still being

considered. Other than the necessity of providing some form of it,

we are completely unsure of the nature of the problem. It may turn

out that the present scheme is completely adequate; it may also turn

out that we will need a much more complex scheme.

2. Error Detection and Recovery

As we gain some experience with the network, we will develop a better

understanding of what errors can occur and, perhaps more importantly,

what to do about these errors. We expect the protocol to change as

we understand error control.

3. Start Up and Shut Down Procedures

We have not done enough thinking about the problem of the host which

participates part-time in the network, which ceases normal network

operation but remains on the network for special purposes, or which

recovers from a system failure. These issues are critical to robust

network operation and are possibly our highest priority. 4. Query

and Response

A host-to-host status test would be a valuable tool, but it is not

yet clear what is appropriate to provide.

Coming onto the Network

We suggest that hosts come onto the network gingerly. First, each

host should thoroughly exercise connections to itself. Then it

should arrange experiments with some other host who is already

functioning. Finally, it may begin to exercise the facilities of

other hosts. It is not clear at this time which host will be in the

best position to help other hosts first, but UCLA will attempt to

serve this function.

Private Networking

A common ploy is to use the IMP to connect several local computers,

one or more of which is not available to the whole network. For

example, Harvard is connecting its PDP-1 to its PDP-10 via an IMP;

Lincoln Laboratories is connecting its TSP to the 360/67 and the TX2

via an IMP; and UCLA is similarly connecting a XDS 920 to its Sigma-

7. In each of these cases, the small machine will not initially

provide services to the network.

Although there should be no unwanted traffic to any of these extra

hosts, it is desirable that they conform minimally to the network

protocol. Provided that they never initiate a connection or send out

spurious control commands, it is sufficient for a host to respond to

CLS commands with acknowledging CLS commands, and to respond to ECO

commands with ERP commands.

Acknowledgments

The work presented above is only a small portion of the concurrent

effort. Most of the related effort will be reported in immediately

forthcoming RFC's. A number of people provided extremely valuable

aid during the last two weeks. We are particularly grateful to

Professor George Mealy of Harvard for supporting four of his students

to come westward to work on the network, to Robert Uzgalis for

facilitating Access to CCN at UCLA, and to the secretarial staff of

the Computer Science Division of the University of Utah, and

especially Peggy Tueller and Marcella Sanchez, for Excellent help in

preparing these documents.

[ This RFCwas put into machine readable form for entry ]

[ into the online RFCarchives by Eitetsu Baumgardner 3/97 ]

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有