Most developers never have to design a network protocol from scratch. You use HTTP, gRPC, WebSockets, or something else that already exists and has been debugged by thousands of people over many years. That is the right call for most situations.
I did not take that path when building Vaylix, a key-value database engine. I designed a custom binary protocol called VTP2, and the process taught me things about networking that I would not have picked up any other way.
This is not an argument that you should also build a custom protocol. For most things, you should not. This is an honest account of what I ran into.
Why not HTTP
The first question anyone reasonably asks is: why not just use HTTP?






