Readit News logoReadit News
longwave · 11 years ago
This reminded me of the best TCP timeout story I've ever heard, the case of the 500-mile email: http://www.ibiblio.org/harris/500milemail.html
michaelx386 · 11 years ago
Great story with the added bonus of showing me the GNU Units command. What a fantastic program, no more Googling when I need to convert stuff.
rdc12 · 11 years ago
Or were you using GNU Units the whole time?

http://revealingerrors.com/google_miscalculator

mamcx · 11 years ago
MrBuddyCasino · 11 years ago
Indeed, I just checked OSX - sadly, units doesn't know about millilightseconds ("586 units, 56 prefixes").
marcosdumay · 11 years ago
Take a look at qalculator. You won't even remember about Units after it.
viraptor · 11 years ago
And since we're adding random related things, lcamtuf's museum of broken packets is an old, but always interesting read: http://lcamtuf.coredump.cx/mobp/
MrBuddyCasino · 11 years ago
Good read. I guess now we'd be interested in hearing your 2nd best TCP timeout story.
longwave · 11 years ago
I realise you're trying to be facetious, but probably this one: http://mina.naguib.ca/blog/2012/10/22/the-little-ssh-that-so...
rdc12 · 11 years ago
That may be the most well researched bug report I have ever heard of.... and from a user too
nabla9 · 11 years ago
What is the general lesson we should learn from this?

Postel's law aka robustness principle [1] can easily lead into accumulating complexity when implementations adapt to the bugs in other implementations. How could protocol designers mitigate this problem beforehand?

[1]: https://en.wikipedia.org/wiki/Robustness_principle

cesarb · 11 years ago
The lesson is "be strict in what you accept, since the beginning".

For instance, a lesson learned by the Linux kernel developers: when adding a new system call to an operating system, if you have a flags parameter (and you should, which is another lesson they learned), if any unknown flag is set, fail with -EINVAL (or equivalent). Otherwise, buggy programs will depend on these flags being ignored, and you won't be able to use them later for new features.

But it has to be since the beginning; once the protocol is "in the field", you can't increase the strictness without pain.

sillysaurus3 · 11 years ago
Otherwise, buggy programs will depend on these flags being ignored, and you won't be able to use them later for new features.

I don't understand why that's true. Just add the new flag and use it for your new feature. Aren't buggy programs who were already sending the flag responsible for their own bugs?

AshleysBrain · 11 years ago
I'd say one of the lessons is that even a supposedly well-standardised system sees hundreds of implementations (or more!) then the accumulated bug baggage can still make it hacky with per-platform code. For comparison consider web browsers, which although are far better these days than they used to be, between just Chrome, Firefox, IE and Safari there's a bunch of quirks and platform-specifics, so I can imagine worldwide TCP deployments are "interesting".

Where possible hacks should be applied only where necessary, e.g. the specific software versions affected only, and exclude fixed versions. Then hopefully in the long run the old buggy versions die out and the hack can be removed... but as the article says, over a network it's not always possible to identify when to apply a hack.

jmount · 11 years ago
I agree (one of my articles in the same direction): http://www.win-vector.com/blog/2010/02/postels-law-not-sure-... ).
leonardinius · 11 years ago
I've to confess I've quite limited knowledge with TCP/IP stack internals, e.g. the way stack extensions work et cetera.

Does anyone know of any available online visual materials/tutorials? I'm particularly searching for tools capable of recording and replaying TCP/IP stack packets with visual representation, references to RFCs and specifications.

mahmud · 11 years ago
Doug Comer's "Internetworking with TCP IP" volumes 1&2. Walks you through the protocol suite along with the implementation of a simple stack in C.

https://www.cs.purdue.edu/homes/comer/netbooks.html

Richard Steven's "TCP/IP Illustrated" books are the original works, Unix network programming at its finest. More advanced than Comer's book, and much more applicable. Get used, older editions if cheaper, you will be fine.

agumonkey · 11 years ago
Coursera and stanford mooc helped me understand networking deeper, you might try to apply.
signa11 · 11 years ago
which ones if you could point them out please ?
jfuhrman · 11 years ago
Pretty much everything in technology is harder than it looks. Took me a day to configure Apache Solr for the first time the other day while my estimate was just one hour.
ay · 11 years ago
SYN-ACK which does not get retransmitted, advertises a zero window and does not have options looks like some implementation of SYN cookies. A nice (and useful in some cases) hack but a violation of the TCP spec, which is why it is disabled by default in most places that implement it.
known · 11 years ago
Jabbles · 11 years ago
Is there a history of these compatibility workarounds being the source of security bugs(e.g. DoS)?
markb139 · 11 years ago
Electricity doesn't conduct at the speed of light. Its about 2/3 the speed of light.