How can we manage (relatively) reliable transmission over UDP?

Application will have the flexibility, it can control how reliable the transmission is.

Things the application can do:

  • Error detection
  • Recovery mechanisms