<story><title>TCP is an underspecified two-node consensus algorithm</title><url>https://morsmachine.dk/tcp-consensus</url></story><parent_chain></parent_chain><comment><author>nh2</author><text>shutdown() and half-closes are not &amp;quot;archaic&amp;quot; features.&lt;p&gt;You need them to get even the basic stuff right (see &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;blog.netherlabs.nl&amp;#x2F;articles&amp;#x2F;2009&amp;#x2F;01&amp;#x2F;18&amp;#x2F;the-ultimate-so_linger-page-or-why-is-my-tcp-not-reliable&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;blog.netherlabs.nl&amp;#x2F;articles&amp;#x2F;2009&amp;#x2F;01&amp;#x2F;18&amp;#x2F;the-ultimate-...&lt;/a&gt;) and you need it even more to implement &amp;quot;modern&amp;quot; application layer protocols like HTTP2 (if you don&amp;#x27;t use it, you get data loss bugs like this: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;trac.nginx.org&amp;#x2F;nginx&amp;#x2F;ticket&amp;#x2F;1250#comment:4&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;trac.nginx.org&amp;#x2F;nginx&amp;#x2F;ticket&amp;#x2F;1250#comment:4&lt;/a&gt;).</text></comment>
<story><title>TCP is an underspecified two-node consensus algorithm</title><url>https://morsmachine.dk/tcp-consensus</url></story><parent_chain></parent_chain><comment><author>teknopaul</author><text>I dont grok this, if tcp&amp;#x27;s model has fundamental problems how come the Internet works. :)&lt;p&gt;The fact that a protocol technically is not perfect and causes jip for isps does not mean the application layer has to get involved.&lt;p&gt;I&amp;#x27;ve been writing tcp based apps for years and the stream abstraction has never failed me. After reading this I dont see why I should change that assumption?  I have to rebuild connections occasionally but its never cost my application so much that an alternative more complicated abstraction layer made sense.
I usually write req&amp;#x2F;response over tcp, an even more inaccurate abstraction. Occasionally nonblocking code. Never have I wanted more complexity than nio in my application layer.&lt;p&gt;Devs do know that &amp;quot;tcp is not a stream of bytes&amp;quot; but deliberately do not want to get app code involved.</text></comment>