summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc1235.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc1235.txt')
-rw-r--r--doc/rfc/rfc1235.txt675
1 files changed, 675 insertions, 0 deletions
diff --git a/doc/rfc/rfc1235.txt b/doc/rfc/rfc1235.txt
new file mode 100644
index 0000000..e85025c
--- /dev/null
+++ b/doc/rfc/rfc1235.txt
@@ -0,0 +1,675 @@
+
+
+
+
+
+
+Network Working Group J. Ioannidis
+Request for Comments: 1235 G. Maguire, Jr.
+ Columbia University
+ Department of Computer Science
+ June 1991
+
+
+ The Coherent File Distribution Protocol
+
+Status of this Memo
+
+ This memo describes the Coherent File Distribution Protocol (CFDP).
+ This is 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.
+
+Introduction
+
+ The Coherent File Distribution Protocol (CFDP) has been designed to
+ speed up one-to-many file transfer operations that exhibit traffic
+ coherence on media with broadcast capability. Examples of such
+ coherent file transfers are identical diskless workstations booting
+ simultaneously, software upgrades being distributed to more than one
+ machines at a site, a certain "object" (bitmap, graph, plain text,
+ etc.) that is being discussed in a real-time electronic conference or
+ class being sent to all participants, and so on.
+
+ In all these cases, we have a limited number of servers, usually only
+ one, and <n> clients (where <n> can be large) that are being sent the
+ same file. If these files are sent via multiple one-to-one
+ transfers, the load on both the server and the network is greatly
+ increased, as the same data are sent <n> times.
+
+ We propose a file distribution protocol that takes advantage of the
+ broadcast nature of the communications medium (e.g., fiber, ethernet,
+ packet radio) to drastically reduce the time needed for file transfer
+ and the impact on the file server and the network. While this
+ protocol was developed to allow the simultaneous booting of diskless
+ workstations over our experimental packet-radio network, it can be
+ used in any situation where coherent transfers take place.
+
+ CFDP was originally designed as a back-end protocol; a front-end
+ interface (to convert file names and requests for them to file
+ handles) is still needed, but a number of existing protocols can be
+ adapted to use with CFDP. Two such reference applications have been
+ developed; one is for diskless booting of workstations, a simplified
+
+
+
+Ioannidis & Maguire, Jr. [Page 1]
+
+RFC 1235 CFDP June 1991
+
+
+ BOOTP [3] daemon (which we call sbootpd) and a simple, TFTP-like
+ front end (which we call vtftp). In addition, our CFDP server has
+ been extended to provide this front-end interface. We do not
+ consider this front-end part of the CFDP protocol, however, we
+ present it in this document to provide a complete example.
+
+ The two clients and the CFDP server are available as reference
+ implementations for anonymous ftp from the site CS.COLUMBIA.EDU
+ (128.59.16.20) in directory pub/cfdp/. Also, a companion document
+ ("BOOTP extensions to support CFDP") lists the "vendor extensions"
+ for BOOTP (a-la RFC-1084 [4]) that apply here.
+
+Overview
+
+ CFDP is implemented as a protocol on top of UDP [5], but it can be
+ implemented on top of any protocol that supports broadcast datagrams.
+ Moreover, when IP multicast [6] implementations become more
+ widespread, it would make more sense to use a multicast address to
+ distribute CFDP packets, in order to reduce the overhead of non-
+ participating machines.
+
+ A CFDP client that wants to receive a file first contacts a server to
+ acquire a "ticket" for the file in question. This server could be a
+ suitably modified BOOTP server, the equivalent of the tftpd daemon,
+ etc. The server responds with a 32-bit ticket that will be used in
+ the actual file transfers, the block size sent with each packet
+ (which we shall call "BLKSZ" from now on), and the size (in bytes) of
+ the file being transferred ("FILSZ"). BLKSZ should be a power of
+ two. A good value for BLKSZ is 512. This way the total packet size
+ (IPheader+UDPheader+CFDPheader+data=20+8+12+512=552), is kept well
+ under the magic number 576, the minimum MTU for IP networks [7].
+ Note that this choice of BLKSZ supports transfers of files that are
+ up to 32 Mbytes in size. At this point, the client should allocate
+ enough buffer space (in memory, or on disk) so that received packets
+ can be placed directly where they belong, in a way similar to the
+ NetBLT protocol [8].
+
+ It is assumed that the CFDP server will also be informed about the
+ ticket so that it can respond to requests. This can be done, for
+ example, by having the CFDP server and the ticket server keep the
+ table of ticket-to-filename mappings in shared memory, or having the
+ CFDP server listening on a socket for this information. To reduce
+ overhead, it is recommended that the CFDP server be the same process
+ as the front-end (ticket) server.
+
+ After the client has received the ticket for the file, it starts
+ listening for (broadcast) packets with the same ticket, that may
+ exist due to an in-progress transfer of the same file. If it cannot
+
+
+
+Ioannidis & Maguire, Jr. [Page 2]
+
+RFC 1235 CFDP June 1991
+
+
+ detect any traffic, it sends to the CFDP server a request to start
+ transmitting the whole file. The server then sends the entire file
+ in small, equal-sized packets consisting of the ticket, the packet
+ sequence number, the actual length of data in this packet (equal to
+ BLKSZ, except for the last packet in the transfer), a 32-bit
+ checksum, and the BLKSZ bytes of data. Upon receipt of each packet,
+ the client checksums it, marks the corresponding block as received
+ and places its contents in the appropriate place in the local file.
+ If the client does not receive any packets within a timeout period,
+ it sends to the CFDP server a request indicating which packets it has
+ not yet received, and then goes back to the receiving mode. This
+ process is repeated until the client has received all blocks of the
+ file.
+
+ The CFDP server accepts requests for an entire file ("full" file
+ requests, "FULREQ"s), or requests for a set of BLKSZ blocks
+ ("partial" file requests, "PARREQ"s). In the first case, the server
+ subsequently broadcasts the entire file, whereas in the second it
+ only broadcasts the blocks requested. If a FULREQ or a PARREQ
+ arrives while a transfer (of the same file) is in progress, the
+ requests are ignored. When the server has sent all the requested
+ packets, it returns to its idle state.
+
+ The CFDP server listens for requests on UDP/IP port "cfdpsrv". The
+ clients accept packets on UDP/IP port "cfdpcln" (both to be defined
+ by the site administrator), and this is the destination of the
+ server's broadcasts. Those two port numbers are sent to the client
+ with the initial handshake packet, along with the ticket. If the
+ minimal ticket server is implemented as described later in this
+ document, it is recommended (for interoperability reasons) that it
+ listens for requests on UDP/IP port 120 ("cfdptkt").
+
+ Let us now examine the protocol in more detail.
+
+Protocol Specification
+
+ Initial Handshake (not strictly part of the protocol):
+
+ The client must acquire a ticket for the file it wishes to transfer,
+ and the CFDP server should be informed of the ticket/filename
+ mapping. Again, this can be done inside a BOOTP server, a modified
+ TFTP server, etc., or it can be part of the CFDP server itself. We
+ present here a suggested protocol for this phase.
+
+ The client sends a "Request Ticket" (REQTKT) request to the CFDP
+ Ticket server, using UDP port "cfdptkt". If the address of the
+ server is unknown, the packet can be sent to the local broadcast
+ address. Figure 1 shows the format of this packet.
+
+
+
+Ioannidis & Maguire, Jr. [Page 3]
+
+RFC 1235 CFDP June 1991
+
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 'R' | 'Q' | 'T' | 'K' |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ / /
+ \ Filename, null-terminated, up to 512 octets \
+ / /
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Fig. 1: "ReQuest TicKet" packet.
+
+ The filename is limited to 512 octets. This should not cause a
+ problem in most, if not all, cases.
+
+ The ticket server replies with a "This is Your Ticket" (TIYT) packet
+ containing the ticket. Figure 2 shows the format of this packet.
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 'T' | 'I' | 'Y' | 'T' |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | "ticket" |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | BLKSZ (by default 512) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | FILSZ |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | IP address of CFDP server (network order) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | client UDP port# (cfdpcln) | server UDP port# (cfdpsrv) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Fig. 2: "This Is Your Ticket" packet.
+
+ The reply is sent to the UDP port that the RQTK request came from.
+ The IP address of the CFDP server is provided because the original
+ handshake server is not necessarily on the same machine as the ticket
+ server, let alone the same process. Similarly, the cfdpcln and
+ cfdpsrv port numbers (in network order) are communicated to the
+ client. If the client does not use this ticket server, but rather
+ uses BOOTP or something else, that other server should be responsible
+ for providing the values of cfdpcln and cfdpsrv. The ticket server
+ also communicates this ticket/filename/filesize to the real CFDP
+ server. It is recommended that the ticket requests be handled by the
+
+
+
+Ioannidis & Maguire, Jr. [Page 4]
+
+RFC 1235 CFDP June 1991
+
+
+ regular CFDP server, in which case informing the CFDP server of the
+ ticket/filename binding is trivial (as it is internal to the
+ process).
+
+ Once the client has received the ticket for the filename it has
+ requested, the file distribution can proceed.
+
+ Client Protocol:
+
+ Once the ticket has been established, the client starts listening for
+ broadcast packets on the cfdpcln/udp port that have the same "ticket"
+ as the one it is interested in. In the state diagram below, the
+ client is in the CLSTART state. If the client can detect no packets
+ with that ticket within a specified timeout period, "TOUT-1", it
+ assumes that no transfer is in progress. It then sends a FULREQ
+ packet (see discussion above) to the CFDP server, asking it to start
+ transmitting the file, and goes back to the CLSTART state (so that it
+ can time out again if the FULREQ packet is lost). Figure 3 shows the
+ format of the FULREQ packet.
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | "ticket" |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | checksum |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 'F' | 0 | length == 0 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Fig. 3: FULREQ (FULl file REQuest) packet.
+
+ When the first packet arrives, the client moves to the RXING state
+ and starts processing packets. Figure 4 shows the format of a data
+ packet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Ioannidis & Maguire, Jr. [Page 5]
+
+RFC 1235 CFDP June 1991
+
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | "ticket" |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | checksum |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | block number | data length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ / /
+ \ up to BLKSZ octets of data \
+ / /
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Fig. 4: Data Packet
+
+ The format is self-explanatory. "Block number" the offset (in
+ multiples of BLKSZ) from the beginning of the file, data length is
+ always BLKSZ except for the very last packet, where it can be less
+ than that, and the rest is data.
+
+ As each packet arrives, the client verifies the checksum and places
+ the data in the appropriate position in the file. While the file is
+ incomplete and packets keep arriving, the client stays in the RXING
+ state, processing them. If the client does not receive any packets
+ within a specified period of time, "TOUT-2", it times out and moves
+ to the INCMPLT state. There, it determines which packets have not
+ yet been received and transmits a PARREQ request to the server. This
+ request consists of as many block numbers as will fit in the data
+ area of a data packet. If one such request is not enough to request
+ all missing packets, more will be requested when the server has
+ finished sending this batch and the client times out. Also, if the
+ client has sent a PARREQ and has not received any data packets within
+ a timeout period, "TOUT-3", it retransmits the same PARREQ. Figure 5
+ shows the format of the PARtial REQuest packet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Ioannidis & Maguire, Jr. [Page 6]
+
+RFC 1235 CFDP June 1991
+
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | "ticket" |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | checksum |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 'P' | 0 | data length (2*N) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Block #0 | Block #1 |
+ | Block #2 | Block #3 |
+ / /
+ \ data (block numbers requested) \
+ / /
+ | Block #N-2 | Block #N-1 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Fig. 5: PARREQ (PARtial file REQuest) packet.
+
+ When all packets have been received the client enters the CLEND state
+ and stops listening.
+
+ Figure 6 summarizes the client's operations in a state diagram.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Ioannidis & Maguire, Jr. [Page 7]
+
+RFC 1235 CFDP June 1991
+
+
+ +-----------+
+ | CLSTART |
+ | | <---.
+ | send | | timeout TOUT-1
+ | FULREQ | ----'
+ | |
+ +-----------+
+ |
+ received packet | received packet
+ .-----------------------. |
+ | V V
+ +---------+ +---------+
+ | INCMPLT | | RXING |
+ | | timeout | | <---.
+ | send |<------------| process | | received packet
+ | PARREQ | TOUT-2 | packet | ----'
+ | | | |
+ +---------+ +---------+
+ ^ | |
+ | | |finished
+ `---' |
+ timeout V
+ TOUT-3 +---------+
+ | CLEND |
+ +---------+
+
+ Fig. 6: Client State Transition Diagram
+
+ Server Protocol:
+
+ As described above, the CFDP server accepts two kinds of requests: a
+ request for a full file transfer, "FULREQ", and a request for a
+ partial (some blocks only) file transfer, "PARREQ". For the first,
+ it is instructed to start sending out the contents of a file. For
+ the second, it will only send out the requested blocks. The server
+ should know at all times which files correspond to which "tickets",
+ and handle them appropriately. Note that this may run into
+ implementation limits on some Unix systems (e.g., on older systems, a
+ process could only have 20 files open at any one time), but that
+ should not normally pose a problem.
+
+ The server is initially in the SIDLE state, idling (see diagram
+ below). When it receives a FULREQ packet, it goes to the FULSND
+ state, whence it broadcasts the entire contents of the file whose
+ ticket was specified in the FULREQ packet. When it is done, it goes
+ back to the SIDLE state. When it receives a PARREQ packet, it goes to
+ the PARSND state and broadcasts the blocks specified in the PARREQ
+ packet. When it has finished processing the block request, it goes
+
+
+
+Ioannidis & Maguire, Jr. [Page 8]
+
+RFC 1235 CFDP June 1991
+
+
+ once again back to the SIDLE state.
+
+ receive +-------+ receive
+ .---------------| SIDLE |---------------.
+ | FULREQ +-------+ PARREQ |
+ | ^ ^ |
+ | | | |
+ V | | V
+ +--------+ | | +--------+
+ | FULSND | | | | PARSND |
+ | | done | | done | |
+ | send |------------' `------------| send |
+ | entire | | req'ed |
+ | file | | blocks |
+ +--------+ +--------+
+
+ Fig. 7: Server State Transition Diagram
+
+Packet Formats
+
+ The structure of the packets has been already described. In all
+ packet formats, numbers are assumed to be in network order ("big-
+ endian"), including the ticket and the checksum.
+
+ The checksum is the two's complement of the unsigned 32-bit sum with
+ no end-around-carry (to facilitate implementation) of the rest of the
+ packet. Thus, to compute the checksum, the sender sets that field to
+ zero and adds the contents of the packet including the header. The
+ it takes the two's complement of that sum and uses it as the
+ checksum. Similarly, the receiver just adds the entire contents of
+ the packet, ignoring overflows, and the result should be zero.
+
+Tuneable Parameters: Packet Size, Delays and Timeouts
+
+ It is recommended that the packet size be less than the minimum MTU
+ on the connected network where the file transfers are taking place.
+ We want this so that there be no fragmentation; one UDP packet should
+ correspond to one hardware packet. It is further recommended that
+ the packet size be a power of two, so that offsets into the file can
+ be computed from the block number by a simple logical shift
+ operation. Also, it is usually the case that page-aligned transfers
+ are faster on machines with a paged address space. Small packet
+ sizes are inefficient, since the header will be a larger fraction of
+ the packet, and packets larger than the MTU will be fragmented. A
+ good selection for BLKSZ is 512 or 1024. Using that BLKSZ, one can
+ transfer files up to 32MB or 64MB respectively (since the limit is
+ the 16-bit packet sequence number). This is adequate for all but
+ copying complete disks, and it allows twice as many packets to be
+
+
+
+Ioannidis & Maguire, Jr. [Page 9]
+
+RFC 1235 CFDP June 1991
+
+
+ requested in a PARREQ request than if the sequence number were 32
+ bits. If larger files must be transferred, they could be treated as
+ multiple logical files, each with a size of 32MB (or 64MB).
+
+ Since most UDP/IP implementations do not buffer enough UDP datagrams,
+ the server should not transmit packets faster than its clients can
+ consume them. Since this is a one-to-many transfer, it is not
+ desirable to use flow-control to ensure that the server does not
+ overrun the clients. Rather, we insert a small delay between packets
+ transmitted. A good estimate of the proper delay between two
+ successive packets is twice the amount of time it takes for the
+ interface to transmit a packet. On Unix implementations, the ping
+ program can be used to provide an estimate of this, by specifying the
+ same packet length on the command line as the expected CFDP packet
+ length (usually 524 bytes).
+
+ The timeouts for the client are harder to compute. While there is a
+ provision for the three timeouts (TOUT-1, TOUT-2 and TOUT-3) to be
+ different, there is no compelling reason not to make them the same.
+ Experimentally, we have determined that a timeout of 6-8 times the
+ transfer time for a packet works best. A timeout of less than that
+ runs the risk of mistaking a transient network problem for a timeout,
+ and more than that delays the transfer too much.
+
+Summary
+
+ To summarize, here is the timeline of a sample file distribution
+ using CFDP to three clients. Here we request a file with eight
+ blocks. States are capitalized, requests are preceded with a '<'
+ sign, replies are followed by a '>' sign, block numbers are preceded
+ with a '#' sign, and actions are in parentheses:
+
+SERVER CLIENT1 CLIENT-2 CLIENT-3 comments
+
+IDLE everybody idle
+ CLSTART CL1 wants a file
+ <TKRQ requests ticket
+TIYT> server replies
+ (timeout) listens for traffic
+ <FULREQ full request
+#0 RXING CL1 starts receiving
+ (rx 0)
+#1 (rx 1) CLSTART CL2 decides to join
+ <TKRQ
+#2 (rx 2) SRV still sending
+TIYT> responds to TKRQ
+#3 (rx 3) (listens) CL2 listens
+ RXING found traffic
+
+
+
+Ioannidis & Maguire, Jr. [Page 10]
+
+RFC 1235 CFDP June 1991
+
+
+#4 (rx 4) (rx 4) CLSTART CL3 joins in
+ <TKRQ
+#5 (missed) (rx 5) CL1 missed a packet
+TIYT> (listens)
+#6 (rx 6) (rx 6) RXING CL3 found traffic
+
+#7 (rx 7) (rx 7) (rx 7) Server finished
+IDLE
+ (wait) (wait) (wait) CL1 managed to
+ (timeout) (wait) (wait) timeout
+ <PARREQ[5] (timeout) (timeout) CL1 blockrequests...
+#5 (rx 5) <PARREQ[0123] <PARREQ[0123456] ignored by SRV
+ CLEND CL1 has all packets
+IDLE (wait) (wait) CL2+3 missed #5
+ (timeout) (timeout)
+ <PARREQ[0123] <PARREQ[0123456] CL2's req gets
+#0 (rx 0) (rx 0) through, CL3 ignored
+#1 (rx 1) (rx 1) moving along
+#2 (rx 2) (rx 2)
+#3 (rx 3) (rx 3)
+IDLE CLEND (wait) CL2 finished
+ (timeout)
+ <PARREQ[456]
+#4 (rx 4)
+#5 (rx 5)
+#5 (rx 6)
+IDLE CLEND CL3 finished
+
+References
+
+ [1] Sollins, K., "The TFTP Protocol (Revision 2)", RFC 783, MIT, June
+ 1981.
+
+ [2] Finlayson, R., "Bootstrap Loading Using TFTP", RFC 906, Stanford,
+ June 1984.
+
+ [3] Croft, W., and J. Gilmore, "Bootstrap Protocol", RFC 951,
+ Stanford and SUN Microsystems, September 1985.
+
+ [4] Reynolds, J., "BOOTP Vendor Information Extensions", RFC 1084,
+ USC/Information Sciences Institute, December 1988.
+
+ [5] Postel, J., "User Datagram Protocol", RFC 768, USC/Information
+ Sciences Institute, August 1980.
+
+ [6] Deering, S., "Host Extensions for IP Multicasting", RFC 1112,
+ Stanford University, August 1989.
+
+
+
+
+Ioannidis & Maguire, Jr. [Page 11]
+
+RFC 1235 CFDP June 1991
+
+
+ [7] Postel, J., "Internet Protocol - DARPA Internet Program Protocol
+ Specification", RFC 791, DARPA, September 1981.
+
+ [8] Clark, D., Lambert, M., and L. Zhang, "NETBLT: A Bulk Data
+ Transfer Protocol", RFC 998, MIT, March 1987.
+
+Security Considerations
+
+ Security issues are not discussed in this memo.
+
+Authors' Addresses
+
+ John Ioannidis
+ Columbia University
+ Department of Computer Science
+ 450 Computer Science
+ New York, NY 10027
+
+ EMail: ji@cs.columbia.edu
+
+
+ Gerald Q. Maguire, Jr.
+ Columbia University
+ Department of Computer Science
+ 450 Computer Science
+ New York, NY 10027
+
+ Phone: (212) 854-2736
+
+ EMail: maguire@cs.columbia.edu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Ioannidis & Maguire, Jr. [Page 12]
+ \ No newline at end of file