Hi!
I'am a professional server programmer and have expertise with networking protocols.
I would implement in C++ a TCP congestion algorithm with an emulated environment as your first task, and a reliable UDP protocol for the second.
Both have an easy to understand concept so documentation shouldn't be so rough. Do you need that to be created as well?