What is reliable data transfer protocol (rdt)?

Reliable protocols form an abstraction over unreliable channels, to provide a reliable channel.

Under the hood they use:

udt_send()
deliver_data()

They then provide a safe interface for consumers:

rdt_send()
rdt_rcv()