Reliable transport
Implement a TCP-like reliable transport layer over the UDP protocol.
Handle dropped, corrupted, and out of order packets.
Successfully send a message one character at a time on the unreliable network.
Implement one-way communication only.