Expectational acknowledgement is a simple way for two
computers to keep track of what needs to be sent when exchanging
packets. Since most transfers are of files which consist of many packets, the recieving computer needs to be able to reassemble the file after all of it has been sent. When a packet is sent, one of it's fields is a
sequence number. This number tells the recieving computer where in the file the packet goes after it has been recieved. A simple transfer with expectational acknowledgement goes something like this:
Computer 1: send seq 1 (I'm sending packet 1)
Computer 2: recieve seq 1 (I just got packet 1)
Computer 2: send ack 2 (Ok, I got 1, send 2)
Computer 1: recieve ack 2 (Ok, looks like he needs packet 2)
Computer 1: send seq 2 (I'm sending packet 2)
.
.
.
etc.
This method allows for
dropped packets to be
retransmitted without unneccesary difficulty. The sender simply waits a certain amount of time, and resends if it doesn't get an
ACK.