TCP Toddlers and Protocol Evolution

Just the other day, I quipped on Twitter that my children’s behavior reminded me of TCP:

Specifically my 3-year old daughter will just keep “retransmitting” her message until she’s acknowledged, even if her message isn’t a query that requires response. Moreover, both my children, around that 3 year-old range, seemed to practically require a full echo for acknowledgement. For example:

Daughter: “I see an airplane!”

Me:[no response] (After all, I’m a classic introvert and don’t feel that every statement requires explicit response)

Daughter: “I see an airplane!”

Me: “Cool!”

Daughter: “I see an airplane!”

Me: “OK, you see an airplane.”

And finally, that moves us past the airplane incident. She will just keep retransmitting until I acknowledge not only that I received a message from her, but until I confirm that I received the specific message she sent.

This behavior must be common, because in response to my tweet, @Ryan_Frantz linked me to his blog post from last year noting the exact same thing. Additionally, my tweet received some 45 retweets from other network goons (I mean the term “goons” in the nicest possible way).

As both Ryan and I noted, this behavior is very reminiscent of TCP’s reliable transmission mechanism where data is sent by one TCP stack, and must be acknowledged (including an indicator of just which data was received) by the other or else the data will be repeatedly resent until the sender receives acknowledgement from it (or a connection termination which might be equivalent to me barking “HUSH!” at my daughter). TCP doesn’t fully echo the sent data, of course, but you get the idea…

OK, so cute observation, Twitter gets a chuckle, that’s it, right? Maybe not. I got thinking about it. Why does my 3 year-old behave that way, while my 5 year-old no longer does? I think the answer is probably development of the human communications protocols. As children grow, they learn that not every message needs explicit, positive acknowledgment. Sometimes the acknowledgement is more subtle, based on some other response like an “mmmhmm” or a chuckle. These reactions still indicate the message was received and the response, evaluated in context of the original statement, helps us determine whether our original message was correctly received or requires retransmission. Perhaps this can be thought of as providing a periodic checksum of received data rather than a full echo.

When we really expect a response to our statement, we intone it as a question, which we then anticipate the our receiver will correctly understand and provide us our response. Does this sometimes fail? Of course. But if it works 99% of the time, we are saving communications overhead 99% of the time.

I started Googling around to see if I was on to something and the best thing I found was SCTP, a protocol I’d heard of before but knew was not in wide use. It does incorporate the idea of blending reliable, ordered, TCP-like transmission with an option for less-ordered, un-reliable UDP-like transmission. That’s a start, but might it be possible to further extend/enhance protocols like these to actually be able to signal whether or not message confirmation is required on a per-message or per-window basis? Or add predictive capability based on expected responses at the protocol or application layer? Or add the protocol equivalent of inflection to easily frame a message as a query which requires response, a statement for which a acknowledgement is optional or perhaps occasional, aggregated ACK is appreciated, or an exclamation for which quick action is more important than a response (“DUCK!”)?

Elements of all of these ideas exist in currently deployed protocols, but I am interested to see what happens with protocol design over the next decade or two as rapid advancements in artificial intelligence, computer learning, and neural networks might allow computers to think more like humans and even make their conversations more human-like.

Like many highly technical, introverted people, I have always thought tricky interaction with other humans would be a lot less error-prone  if it adhered to rigid rules like a network transmission protocol (and it would be), but this little observation has gotten also me wondering if perhaps computer communication could be made more efficient and ultimately more effective if it were modeled more closely against human communication.

One thought on “TCP Toddlers and Protocol Evolution

  1. chrismarget says:

    Hmm, I find my kids’ TCP implementations somewhat lacking. Specifically I want SACK. Given that RFC1323 predates my kids by almost 2 decades, you’d think I would have a full implementation…

    It goes like this:

    kid: “Daddy, remember the *mumble* that we played with one time?”
    me: “Sorry, the what that we played with one time?”
    kid: “Daddy, remember the *mumble* that we played with one time?”
    me: “Sweetie, I heard everything except for the thing you’re talking about. What did we play with one time?”
    kid: “Daddy, remember the *mumble* that we played with one time?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s


Virtualization, Storage, and other techy stuff

The Stupid Engineer

I ask those questions you're too clever to.

Sunay Tripathi's Blog

Pluribus Networks Founder's Blog on OS, Networking, Virtualization, Cloud Computing, Solaris Architecture, etc

Ed Koehler's Blog

Just another weblog

Data networking, stray thoughts, nerdy fun...

Network Heresy

Tales of the network reformation

The Borg Queen

Jottings on the intersection of tech and humanness

Networking From The Trenches

Ramblings about my thoughts, experiences, and ideas.

Networking 40,000

Attaining my CCIE with the help of Warhammer 40k

Network Shenanigans

Making Packets Do Silly Things

It must be the network...

Ramblings of JD (@subnetwork)

Not Another Network Blog

Musings from yet another IT nerd

rsts11 - Robert Novak on system administration

Resource sharing, time sharing, (20)11 and beyond. A retired sysadmin's blog.

%d bloggers like this: