Why so many servers?

j3s j3s at c3f.net
Wed May 6 20:54:56 UTC 2020

Very late to this conversation, but I have some cents to add.

On 5/1/20 11:29 PM, Joe Nelson wrote:
> Why don't our computers talk directly to one
> another instead?

This, broadly speaking, was never supposed to be a problem until NAT 
rolled around and screwed everything up as Joe pointed out. NAT altered 
how we think about networks forever. Notably, one thing that hasn't been 
brought up is IPv6.

IPv6 alleviates routing concerns by giving every device on the globe a 
publicly route-able address, with no NAT involved. The internet we were 
promised! But so far adoption has been slow, thus it's not very useful. 
But more and more carriers are leaning into IPv6, which will maybe, 
perhaps, lead to IPv4's deprecation in our lifetime.

> Same thing for screen sharing. A shared tmux session on the frostbyte
> server still requires the server

 > Maybe the root problem is that many people operate in a local area
 > network that doesn't have NAT configured to expose a listening port 
from a machine to the outside world.

I do not think the root problem is NAT.

I think an important and understated benefit of using a server is 
consistency - in terms of latency, throughput, and access.

Let's pretend that IPv6 is universal and everyone has direct 
peer-to-peer access. Yaas! This should help alleviate our access 
problem. Or does it?

- most ISPs block certain ports to prevent spam abuse
- corpo inspection systems may still block "suspicious p2p" traffic
- how do you know who to trust in a p2p network?
- certificate injections may make authentic p2p certs "invalid looking"

Therefore, some users can connect and some cannot. Those users may blame 
the software. Besides access, numerous complications are now introduced:

- security becomes much more complex to enforce (who decides who is 
violating rules?)
- proper sequencing requires some authority, which eliminates some 
benefit of p2p-centric scaling
- latency is likely higher for everyone

tl;dr: client/server models are typically more consistent, simple, 
accessible, stable, and low-latency than their p2p counterparts.

This makes the lives of both developers and users simpler.

Admittedly though, I am a fan of servers. :D


More information about the Friends mailing list