reliable_data_transfer_2 Refactorization of reliable_data_transfer-1. Also improves functionality to deal with delayed packets.