65 lines
42 KiB
Plaintext
65 lines
42 KiB
Plaintext
Leaf and Sequin ProtocolsJeffrey Mogul [Stanford University/Computer Science Department]July 23, 1982Abstract: Leaf is a Pup-based protocol for remote random access to files. Leaf isimplemented on top of Sequin, a reliable packet protocol. This document describesSequin, Leaf, their interaction, the intended use of Leaf, and some implementationdetails.0. IntroductionLeaf is a protocol which allows clients to access files across networks via servers. It is distinct fromFTP in that, whereas FTP operations involve copying entire files from one place to another, Leafinvolves read and write access to selected parts of a file. Instead of copying the file, it is (possibly)modified in place. The Leaf protocol is intended to provide some amount of security and reliability,and to provide for some sharing of file access.The Leaf protocol uses, as a transport mechanism, the Pup-based Sequin protocol. Sequin is aconnection-based, full-duplex, sequenced, duplicate-free, reliable packet protocol. What this means isthe two parties (a client and a server) communicating via Sequin maintain some state informationnot explicitly contained in the packets to provide a system whereby every packet sent by a user ofSequin is guaranteed to arrive exactly once at its destination. Further, packets arrive in the orderthey are sent. [Note: Leaf requires a bidirectional packet stream, but not a full-duplex one.]Sequin includes a timeout mechanism that handles the problem of crashed hosts.1. SequinSequin is a packet-based protocol; that is, users of Sequin send and receive packets. A Sequinpacket is formatted as a Pup packet, except that the PupID field of the packet is redefined tocontain four bytes of Sequin-specific information [see fig. 1.] The Sequin header bytes are:Send Sequence-This byte starts at 0, and is incremented after every packet sent thatcontains data. Control packets do not increment the sequence number.Receive Sequence-This byte also starts at zero, and is the Send sequence number that youare awaiting. The Send Sequence number of a control packet must match thisnumber in order to be processed.Allocate-specifies the total buffering available at the reciever. This specifies how manyunacknowledged sequence numbers can be sent. To decrease the probability ofsequence errors going undetected because of wrap-around, Allocate should notbe greater than about 30. This may vary over the lifetime of a connection, soeach end should pay attention to its partner's Allocate byte. |