分享
 
 
 

RFC203 - Achieving reliable communication

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

Network Working Group R. Kalin

Request for Comments: 203 MIT Lincoln Lab

NIC: 7168 10 August 1971

Achieving Reliable Communication

'This material has not been reviewed for public release and is

intended only for use with the ARPA network. It should not be quoted

or cited in any publication not related to the ARPA network.'

ABSTRACT

A non-standard protocol, suitable for either second or third level

use, is proposed with the intent of providing error resistant and

highly reliable communication channels. Errors introdUCed by message

garbling, message loss, and message pickup are considered. Measures

for increasing throughput are also discussed.

AIMS AND LIMITATIONS

It is not our intent to propose the design of a perfect communication

channel, rather it is our contention that in the real world there can

be no perfect channels and that no amount of protocol can insure the

error free transfer of information. Our goal is to eXPlicate the

various types of errors that are possible and to provide for each

techniques of detection and recovery that, at a cost, can be made

arbitrarily good. In this way the mean time between undetected

errors can be made as large as necessary.

ERROR TYPES AND DETECTION

Over a message switching facility, such as the ARPA network, all

transmission errors can be divided into two classes -- those that

result in the loss of an expected message, and those that result in

the picking up of an unexpected message. A single bit inversion can

cause errors of both types. Error detection can therefore be divided

into two components -- one which attempts to determine if the message

just received is appropriate at that time, and another which attempts

to determine if a message has been lost.

The detection of garbled input messages has been adequately covered

by classical coding ( elsewhere, mistakenly termed 'communication' )

theory. Internal message consistency can be determined through the

use parity bits, checksum fields, or any of the various coding

techniques available for adding some measure of redundancy. With

relative simplicity, the likelyhood of an undetected error of this

type can be made small enough so as to become inconsequential.

Because it is adequately covered elsewhere, no further discussion

shall be given here.

The detection of a message's external consistency, whether or not it

can possibly follow the message that arrived just before it, can also

be straight forward. Sequence numbers, if used, can be easily

checked. A modulo N sequence field will allow detection of up to N-1

successive message losses. If several concurrent links are in use

then sequencing can be maintained for each link. Multi-link single

sequence schemes are more complicated and, although used between IMPs

for transmission of message packets, they shall be ignored here.

The detection by a receiving host of a lost message can not be

determined directly, but rather must be inferred from other

observations. Any automatic correction scheme must be prepared to

handle the possibility of faulty inference. Message loss would

normally be inferred upon the arrival of a message that should follow

the one expected. It might also be inferred by the fact that the

message expected is long overdue.

ERROR CORRECTION

If a BCH or other error correcting code is used for transmission,

errors detected in a message's internal consistency can sometimes be

corrected by the receiving host. In the event that this is not

possible, the content of the message is of little use because it can

not be relied upon. The only reasonable solution is that of

discarding the message and relying upon the recovery procedures

implemented for lost messages.

Errors of external consistency can also be treated in the same way.

The message can be thrown away and the techniques for recovering lost

messages relied upon. Over a critical channel, a slightly fancier

technique can at times save some retransmissions. If message N is

expected, but message N+1 arrives, there is no need to throw away

message N+1 and then recover two messages, it could be saved, and

only message N retransmitted.

On noisy channels the technique of saving out of sequence messages

can be used to some advantage, especially if recovering from a lost

message requires several messages of overhead. On the ARPA network,

the measured error rate is so low that its advantages are outweighed

by the increase in resident coding.

RECOVERING LOST MESSAGES

The simplest technique I know of for recovering lost can be defined

by the following rules:

1) All undiscarded messages have reply messages.

2) Messages with coding errors that can not be corrected are

discarded.

3) The receiver can determine if a message is in sequence.

4) Messages received that are out of sequence are discarded.

5) If no reply message is received in N time units since the last

transmission, the last message sent is retransmitted ( space need

not be isochronic ).

6) A new message is not sent until the reply for the last one has

been received.

The above protocol, if run, is highly effective for continuous

communication. Since by rule 6) only one message can be in transit

at a time, the necessary sequencing information can be contained in a

single bit. Unmodified, it is not suitable for finite communication,

since rules 1) and 5) guarantee that there will be no 'last message'.

The protocol also does not make very effective use of a pipelined

channel, since there is only one message being sent at a time.

Channel throughput can be increased by several techniques, the first

of which would be to disassemble the data stream into several ( eg.

four or eight ) streams, transmit each using the above protocol, and

then reassemble the streams at the far end. Another technique is to

modify rules 5) and 6).

5a) If no reply has been received to message M in N time units

since the last transmission, then messages M, M+1,... are

retransmitted.

6a) There must be no more than L outstanding unreplied messages.

With L equal to one, this protocol degenerates into the first

protocol. Increasing L increases throughput until the gain is

outweighed by the time spent in error recovery. The larger L, the

costlier error recovery. The value of N should be adjusted so that

the reply time for a message is usually less than N plus the time to

send L-1 messages. Increasing N too much will have the effect of

lowering the response time to errors. Decreasing N increases the

probability initiating unnecessary retransmissions.

A CRITICAL RACE

The above protocols leave unresolved the the particulars of starting

and stopping a finite transmission. In opening a communication

channel, what is the sequence number of the first message sent? What

will be the first sequence number of the first message sent? What

will be the first sequence number of the first reply received? At

the end of transmission, how does one signal the 'last message'? The

following two rules are introduced:

7) If the same message has been received K times ( eg. 50 ), then it

should be accepted as being 'in sequence'. The expected

sequencing should be adjusted accordingly. K identical reply

messages are then sent.

8) If no reply has been received in J seconds, then the

retransmission of the last unreplied message should cease.

With these additional rules a finite transmission is started by

repeatedly transmitting the first message until K identical reply

messages are received. Sequencing is adjusted accordingly and then

subsequent messages can be sent. A conversation is broken by

quitting transmission after the reply to the last message you care

about has been received. Eventually the other end will stop

resending the reply. To avoid ambiguity, the variable J should be

less than N times K. Problems will arise if the network crashes for

J seconds, for there is a race condition over whether or not the lack

of a reply is the result of a channel failure or the end of a

conversation.

[ This RFCwas put into machine readable form for entry ]

[ into the online RFCarchives by Ryan Kato 6/01]

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