📄 rfc442.txt
字号:
where 13P(2) is interpreted to mean message #13, priority number(2). Note that there are only 2 classes of messages, priority and non- priority, and that the priority numbers simply allow ordering at the destination of multiple outstanding priority transmissions from the same site. If HOSTs use link numbers to de-multiplex messages to processes, then it would be a mistake to arbitrarily assign short messages priority. If a file transmission were carried out such that the last short message had priority, the file might not enter the receiving HOST in the same order it was sent!ACK Mechanism IMPs treat their physical channels (phone lines) as if they were pairs of simplex communications paths. Each IMPSYS has a sender and receiver module for each full duplex channel. Each module has an "ODD/EVEN" bit which is used to keep track of the state of the last packet on the line. The object is for the sender module to "block" a channel until the corresponding receiver has received a packet indicating that the send packet was received on the other end (i.e. an acknowledgment).Cerf [Page 4]RFC 442 The Current Flow-Control Scheme for IMPSYS January 1973 In the present system, acknowledgments are separate IMP-IMP packets. In the new system, they are a single bit in a packet flowing in the opposite direction on the reverse path of a full duplex channel. Every packet sent between IMPs has an ACK bit and an OE bit, as shown below. P A O C E K +-------+-----+------------------------+-----+----------+typical packet | | | | | | | | | | | | +-------+-----+------------------------+-----+----------+ We need some terminology: Let POE be the packet OE bit, and SOE, ROE be the send module OE bit and Receive module OE bit respectively. For two IMPs, A and B, we distinguish SOE/A and SOE/B as the two send module OE bits at IMPs A and B respectively. The rules of operation are as follow: Sender ------ if ACK != SOE then do nothing -- else SOE <- !SOE (i.e. flip SOE bit) and free channel. ---- Receiver -------- if POE = ROE then packet is a duplicate so throw it away. -- else ROE <- !ROE ---- Whenever a packet is sent by the sent module, its two bits, POE and ACK are set up by: POE <- SOE ACK <- ROE The mechanism is designed to use real traffic to accomplish the acknowledgment protocol by piggy-backing the ACK bits in the header of real packets. If there is no real packet waiting for transmission in the opposite direction, a fake packet is assembled which carries the ACK, but which is not acknowledged by the receiving side.Cerf [Page 5]RFC 442 The Current Flow-Control Scheme for IMPSYS January 1973 We give an example of the operation of this mechanism between two IMPs. IMP A IMP B ----- ----- ROE | SOE ROE | SOE | POE ACK | | +-----------+ |IMP A blocks send 1 | 0 (1)| 0 1 |-> 1 | 0 IMP B NOPS,channel. | +-----------+ | flips ROE | | | POE ACK | | +-----------+ |IMP A frees send 0 | 1 <-| 0 0 |(2) 0 | 0 IMP B blockschannel, | +-----------+ | channel forFlips SOE | | new traffic | POE ACK |IMP A blocks send | +-----------+ crashes|channel | (3)| 1 0 |->or gets| | +-----------+ lost | | | | POE ACK |IMP A detects packet | +-----------+ |duplicate (POE=ROE) 0 | 1 <-| 0 0 |(2) 0 | 0 IMP Bso does not change | +-----------+ | retransmits noSOE bit. | | ACK received | POE ACK |IMP A retransmits | +-----------+ | IMP B flipspacket 3 | (3)| 1 0 |-> 1 | 1 SOE, unblocks | +-----------+ | channel, and | | flips ROE. | POE ACK |IMP A flips ROE, | +-----------+ | flips SOE 1 | 0 <-| 1 1 |(4) | | +-----------+ | | | In fact each send/receive module has 8 OE bits, so up to 8 packets can be outstanding in either direction.How things really work Actually, a single send module is responsible for trying to transmit packets out on the 8 pseudo-channels. Each channel has a two-bit state (in addition to an OE bit). Each channel is either FREE or IN USE and if IN USE, it may be sending OLD or NEW packet.Cerf [Page 6]RFC 442 The Current Flow-Control Scheme for IMPSYS January 1973 start state F = free | I = in use V X = don_t care +-----+ +------+ N = new packet | FX | --------------> | I, N | O = old packet +-----+ +------+ ^ | | | | | | | ACK | | received | | | V | +------+ +-------------------| I, O |---+ +------+ | ^ | re-transmissions +------+ Between IMPs, packets are sent repeatedly, until they are acknowledged. However, the choice of what to send is ordered by priority as follows: 1. Priority Packets (as marked by HOST) 2. Non-Priority Packet 3. Unacknowledged packets (on I,O state channels) 4. Others It was pointed out that a heavy load of type (1) and (2) traffic might prevent retransmissions from occurring at all, and W. Crowther responded that the bug would be fixed by a 125 ms time-out which forces retransmission of old packets in class (3). Note that each packet must carry a "pseudo-channel" number to identify the POE-to-channel association, and 8 ACK bits (which are positionally associated with the pseudo-channels). Thus a single packet can ACK up to 8 packets at once. [This RFC was put into machine readable form for entry] [into the online RFC archives by Helene Morin, Via Genie, 12/99]Cerf [Page 7]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -