[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ADTPro beta - protocol change



schmidtd wrote:
While doing destructive testing on ADTPro 0.1.5, I noticed that
dropping an acknowledgment packet (entirely possible via UDP or Audio
transports) can result in corrupt image transfers.  The problem is
that the host, sensing a timeout, resends the packet.  If the Apple
had already acknowledged it but that ack got lost, the resent packet
was written as the next one in line.  Definitely bad.  I added block
numbers to the protocol so now we know _which_ blocks are getting
acknowledged or sent.

Sounds like a very good change.

Because this changes the protocol, could I suggest another?

Since, once communication is established, it tends to be pretty
solid, and since missing packets can now be detected by block
number discontinuity, how about replacing ACKs of correctly received
blocks with NAKs of missing or incorrectly received blocks?

This would reduce the reverse traffic to practically nil without
damaging reliability.

Of course, a protocol-completing ACK at the end of a transfer would
still be needed.

The only downside to this protocol is that if the reverse
communication link is broken during a transfer, the sender will
not detect it until the entire image has been sent, when it times
out on the end-of-transfer ACK, but I think that is a minor issue,
considering the low probability of occurrence and the relatively
short time to transfer an image.

This change, starting with the just-released version 0.2.1, makes the
protocol incompatible with the 0.1.x line.  There is a checkbox in the
server GUI to revert to the old protocol to help get the new client
moved to the destination using an existing, older client.  DOS ADT
compatibility is unaffected by this change.

A couple of other fixes are included, too: a crash on a max-length
ProDOS volume name (thanks to James Putnam for going the extra mile to
snail-mail me a physical floppy exhibiting the problem as we tried to
figure out what went wrong), and the rxtx serial library is now
optional to install (if you plan to use UDP or Audio instead).

See documentation and download information here:
http://adtpro.sourceforge.net



--

-michael

NadaNet networking for Apple II computers!
Home page:  http://members.aol.com/MJMahon/

"The wastebasket is our most important design
tool--and it's seriously underused."