I've been trying to gather requirements for an UDP network protocol with virtual connections in a client-server scenario.
This is what I got so far
- Glenn Fiedler's series: Use a protocol prefix to filter packets without the prefix (no real motivation given)
- Quake 3: Handle the case where the player's port may randomly change due to NAT behaviour. I asked on serverfault.com and heard that this may happen in other cases than with old NATs. I notice this is in Enet as well.
- Packet sequencing (obvious)
- Acks (implicit or explicit), some protocols use timeouts as well.
- Some sort of bandwidth / congestion handling (most implementations have this)
- Fragment large packets