4 ms·
I dont grok this, if tcp's model has fundamental problems how come the Internet works. :) The fact that a protocol technically is not perfect and causes jip fo
by teknopaul 9y ago
I dont grok this, if tcp's model has fundamental problems how come the Internet works. :)
The fact that a protocol technically is not perfect and causes jip for isps does not mean the application layer has to get involved.
I'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/response over tcp, an even more inaccurate abstraction. Occasionally nonblocking code. Never have I wanted more complexity than nio in my application layer.
Devs do know that "tcp is not a stream of bytes" but deliberately do not want to get app code involved.
- nvarsj 9y ago> I dont grok this, if tcp's model has fundamental problems how come the Internet works. :) Depends on your definition of "works"! Just ask any gamer what happens when someone starts using netflix while they're playing a game... For a lot of people the internet doesn't work very well. TFA is describing, I think, the issue of stale / dead connections - which can be notoriously difficult to detect. Imagine you are building black boxes that sit in peoples' homes, with a long running TCP connection to push notifications to. With the state of the internet, it's very likely some percentage of those connections will die without either side realizing it. That's where the complexity comes in.
- bringtheaction 9y agoOff-topic on my part here but I think it is so weird that people say “TFA” when referring to the article in the way you are doing. I see this a lot on HN. IMO it would be natural to use “TFA” in the same way you would use “RTFM” — when you are scolding someone for not having read what they should — but using “TFA” as just a synonym for “the article”... that always throws me off.
- steveklabnik 9y agoYou’re both right and wrong. That is, the... anger? you’re picking up isn’t incorrect, but instead lost in translation. Back in the /. days, which, as far as I know, is where this comes from, people would use it in this way. “Read TFA.” “Have you read TFA?” “Seems like you haven’t read TFA.” Eventually, that morphed into the usage you see on HN and everything else, as kind of a different version of OP. One useage grows, another dies off.
- xargon7 9y agoIn a nice tone, it's "The Featured Article."
- bringtheaction 9y agoAh, clever, I like that :) Thanks!
- deleted 9y ago[deleted]
- jonathanstrange 9y agoI remember that back in the 90s it was very hard for me on MacOS to debug network applications when the connection was interrupted or lost due to a crash or a test. It took minutes until the same port could be used again, even when another local port was chosen. To detect a lost connection people used ping-pong signals in their application protocol. Since then network stacks seem to have improved tremendously but I thought it's still customary to ping the other side from time to time. Is that not enough to solve the problem?
- ianai 9y agoAs a lover of the ICMP ping, hosts which do not respond to ping are increasingly prevalent. I’m sure it’s enough to wreck that usage.
- zaarn 9y agoOn IPv4, blocking ICMP has sadly become the norm since some people abused it for ICMP storms. On IPv6 it is strongly recommended not to block ICMPv6 since it routes highly important information back to the sender or forwards to the receiver (like when MTU is reached)
- zrm 9y ago> On IPv6 it is strongly recommended not to block ICMPv6 since it routes highly important information back to the sender or forwards to the receiver (like when MTU is reached) The same is true for IPv4. Path MTU discovery is not new for IPv6. Most systems set the DF (don't fragment) bit by default.
- zaarn 9y agoOn IPv4 it's a bit of a problem because of the number of legacy middleboxes that block things they don't know, some olders routers have problems with DF (always fun to debug). IPv6 makes ICMP path MTU discovery part of the protocol and disabling ICMP can (and will) wreak havoc on reliable connections (though TCP can compensate)
- bb88 9y ago> Just ask any gamer what happens when someone starts using netflix while they're playing a game. Every cable modem I have had suffered from some form of bufferbloat. In short it's not TCP's fault that your head shot packet sat in a cable modem's buffer for 5 seconds before being sent to the server. Edited to add: > TFA is describing, I think, the issue of stale / dead connections - which can be notoriously difficult to detect. Normally all long lived connections have some kind of TCP keep alive to them. When the TCP keep alive fails, the connection dies, and it's up to the application to restart the TCP connection. The proxy can send these out as well.
- teknopaul 9y agoOK now it makes sense. If you presume everything must go over https and sometimes you have little to no activity and want to back push events on a stream started by a client, tcp seems horrible! :) Its hard trying to push in the wrong direction, not having udp when its needed. And not having stable unNATed IPs because addresses have run out. Not sure that is TCPs fault tho. Arguably that is www + ip problem. More and more HTTPS is the only Internet allowed. This is bad IMHO and leads to stupid hacks like websockets. Gamers used to open port in their routers in my day and would receive a performance penalty if rhey did not.
- anon9823675 9y ago> Just ask any gamer what happens when someone starts using netflix while they're playing a game... Enable fq_codel on the bottleneck device.
- bb88 9y ago> I dont grok this, if tcp's model has fundamental problems how come the Internet works. :) So he's arguing about using a proxy to "shield" the server from knowing about all the ins and outs of the myriad of TCP clients out there. And then he laments that an HTTP proxy might very well be the root of all evil on the internet because the true client to server end-to-end connection is lost when a proxy is put in the middle, which is pretty standard practice these days. So one thing that he's incorrect on is that a proxy can know the state of connections, because that's in the TCP packet, but not in the data section [1]. The SYN/SYNACK/ACK hand shake and data retry happens outside of the data section of the TCP packet. [1] https://en.wikipedia.org/wiki/Transmission_Control_Protocol https://en.wikipedia.org/wiki/Transmission_Control_Protocol
- est 9y agoThe internet largely doesn't work anymore. Only port 80/443 traffic works. You can't even send to random SMTP port 25 these days. You will get blocked pretty fast.
- dorfsmay 9y agoOnly mail servers should be talking on port 25. Clients should be using 587 to talk to servers. I've never had an issue with any ISP nor VPS provider with port 25. You can't expect hotels and inflight internet providers to allow you to run a mail server inside their perimeter, they do block 25, but I have never had a problem with 587.
- zaarn 9y agoProblems with 587 usually come from Snakeoil^w AntiVirus software that wants to intercept your email traffic to scan for potential malware. Obviously it doesn't have the certificate so some bruteforce it by only allowing plaintext. On 587.
- 0xffff2 9y agoEvery home ISP I've had in the last 10 years also blocks 25. Why shouldn't I be allowed to run a mail server from my home?
- anon9823675 9y agoMy irc bnc, dns, ssh and bittorrent servers are humming along just fine.