How to design network protocols
- by dandroid
As a programmer, you work on your software design skills. You learn about things such as modularity and reusability and how you can achieve them in code. There's plenty of literature on the subject and engineers talk about it all the time.
What about if you want to design network protocols?
How do you judge that protocol X is badly designed while Y is well designed? (eg. in programming you are often pointed out to a well-written piece of code in order to learn from it - what is the equivalent for network protocols?)
For example, suppose I want to design a P2P protocol similar to BitTorrent or I want to make a better version of the Socks protocol. How would I go about doing a good job on this?
Thanks!