
Designing Network Protocols - tomazmuraus
http://journal.paul.querna.org/articles/2012/02/22/designing-network-protocols/
======
trout
As someone who troubleshoots networks for living, it can't be overstated what
value easily understood information has. Normal factors such as lack of
understanding of a system, miscommunication, false assumptions, false
information, all types of bugs, and operator error already plague
troubleshooting. Anything you can do to simplify is extremely important.
Little things like being able to read debugs directly out of wireshark can
make the difference between solving something between minutes and hours, days
and weeks.

Unfortunately serviceability is not normally high in the initial product
requirements, but I've seen a direct correlation between customer satisfaction
in support and products/protocols/designs with good serviceability.

------
jacques_chester
I think the short version is: in the past 5 years, simple wire-oriented
serialisation formats have become much more common. At the time you had your
pick of ASN (humongous) or Thrift (brand new).

~~~
tptacek
Not particularly fair. You also had XDR (ubiquitous on Unix systems), IIOP,
TLV, ICE... not to mention what ever protocol designer for the past 20 years
has used: network byte order integers and ASCII/UTF8 strings.

Some people just like ASCII, human readable protocols. There's nothing wrong
with that, but it's a little silly to suggest that the options for a packed
binary encoding in _2007_ were limited because Thrift and Protocol Buffers
were too new.

~~~
pquerna
I mentioned ASN.1 DER, but I honestly didn't think I should go into a history
of XDR or other encodings. I guess I can't skip any history in a blog post....

~~~
tptacek
I was responding to a comment, not your post. I don't think you really need to
justify using an ASCII protocol (though, again, I think HTTP query arguments
are a poor choice).

------
alfiejohn_
There's a complete chapter in The Art of Unx Programming about the importance
of being textual:

    
    
      http://catb.org/~esr/writings/taoup/html/textualitychapter.html

------
tptacek
HTTP-style query strings are a horrible format, whether you like ASCII or not.

------
alexchamberlain
I would accept the ease of debugging argument if these messages weren't so
small and so common. 1000 servers constructing strings and sending them over
the network once a second is a nontrivial waste of resources.

