One subtle assumption that needs to be made is that the receiver knows that the sender's window size is w. 1a) Suppose the receiver receives packet i thinking that it was i-2w and this is the smallest sequence numbered packet for which the receiver makes a mistake. Since packet i was sent, it must have appeared in the sender's window. For i to have appeared in the sender's window, all packets up to i-w must have already been acknowledged and the acknowledgments received by the sender. Since i is the smallest sequence number for which there is a mistake, the receiver would have correctly acknowledged everything up to i-w. If the receiver correctly acknowledged up to i-w, then it must have known that the sender's window had already moved to cover i-w. At the point in time when the sender's window covers i-w, its window has already moved past i-2w. Thus, the sender cannot send i-2w after it sends i-w. So once the receiver received i-w, it would never expect i-2w to follow afterward. 1b) Suppose the receiver receives packet i thinking that it was i+2w and this is the smallest sequence numbered packet for which the receiver makes a mistake. When the sender sent this packet i, the largest sequence-numbered packet in the window could have been i+w-1. If the receiver is expecting the sender to send i+2w, it must think it has already acknowledged all packets up to i+w+1. But the sender cannot send i+w+1 in front of a transmission of packet i. Hence, the receiver must have made a mistake about packet i+w+1. Since s=2w, the mistake must have been for some packet i-w+1, i-3w+1, etc., but all of these are smaller than i, contradicting the fact that i is the smallest sequence numbered packet for which the receiver makes a mistake. 1c) Suppose the receiver receives packet i thinking that it was i-w-1 and this is the smallest sequence numbered packet for which the receiver makes a mistake. Since there is no buffering, let j be the next packet that the receiver is waiting for. Either ji. In any case, since the sender sent i, the receiver must have already ACK'd i-w and done so correctly. j>i: then receiver has already received i, and thought it was i. Then the receiver must have known that the sender's window no longer contained i-w-1, so why would it be sent later? Contradiction j=i: the receiver already received i-1. Then sender's window would have already moved past i-w-1, so why would it be sent later? Again, Contradiction ji. j<=i: the receiver has not yet sent ACK i since it is expecting packet j, and cannot buffer ahead. Hence, j must still be in the sender's window, such that any packet > j+w-1 cannot yet appear in the window. Hence, the receiver should know that i+w+1 > j+w-1 cannot yet have been sent. j>i: When the sender sent i, its window could not yet have covered i+w. Since i+w had not yet been sent, the receiver could not have ACK'd i+w without having made a mistake. In other words, the receiver cannot receive i+w correctly until the sender has stopped sending i. This has not yet happened, so the receiver must ignore the packet it thinks is i+w+1, and send ACK j-1. This is exactly what it would have done had it thought the packet was indeed i.