# Homework 4 (FCN)
## 1
No, the UDP receiver cannot be sure that no bit errors have occured even if the checksum does not return an error. This is because there is a possibility that although the data has the correct checksum, the sequence of data has been modified and does not have the original data.
## 2
RDT 2.2 --> Sending NAK-free acknowledgements [Only acknowledges with ACK-0 or ACK-1]
RDT 3.0 --> Dealing with losses from messages by using timeouts.
To move from RDT 2.2 to RDT 3.0, the necessary addition to be added is the use of a timeout mechanism that checks whether the packets have been lost or not. This addition allows for the packets to be resent after a certain amount of time, if no acknowledgement has been received by the sender side. Timeout mechanism would be implemented by giving a delay [at minimum the length of RTT], to check whether the packet has successfully been sent and received by the receiver.
## 3
Negative acknowledgement : an acknowledgement message sent when the data is corrupted or the sequence is out of order.
Now a NAK only acknowledgement would not be preferable as it would only realise that packet x is lost the next time a new packet (x+1) is received. If there is a long delay betwene them, x can only be recovered after a long time.
On the other hand, if the transmission is frequent, then the recovery can be done more quickly. Moreover, if errors are infrequent, then NAKs are only occasionally sent (when needed), and ACK are never sent – a significant reduction in feedback in the NAK-only case over the ACK-only case.