If you want to hide a port from being probed then give it a GUID as a name. No more port scans.
If you want to hide a port from being probed then give it a GUID as a name. No more port scans.
(If there wasn't a need to distinguish multiple clients on the same machine, we might have only had 255 ports!)
A standard port for HTTP servers is needed, as most HTTP clients don't support DNS SRV records.
That said, in the IPv6 world there's no technical reason you can't just let every service bind a different IP address.
I'm not a networking expert, but is that true that you can create multiple ip's for a single device using ipv6? Sounds like it would end up very messy.
Seems like an odd thing to do, create bizarre (unnecessary?) complexities simply as an opportunity for OSes to get better.
Are there any advantages to doing it that way?
C# (.NET) could be the forerunner if only they had not gone with UTF16, but then it's only with hindsight that we can point out UTF8.
But if you're fine with fixed-length strings, you could just as well use all those bits to represent a number instead.
However, it sort of requires your service to be started by inetd. It doesn't work for services that want to manage their own listen queues.
It also complicates firewalls. It makes it much harder to have rules that vary per service.
Of course, current TCP has 16-bit ports hard coded. But IPv6 has almost unlimited addresses.
For some reason, SRV records are not in wide spread use.
No legacy tooling supports it. Poor support on the products already there. Huge numbers of firewalls are hard coded to 80:443 so alternate ports would be blocked.
When you make a poor choice on the internet, it lasts forever.
This is what /etc/services is for:
telnet localhost http ...
But unfortunately very few applications do resolve "port name to port number" as they resolve "hostname to ip address".
See Meredith L. Patterson's "On Port 80" https://medium.com/@maradydd/on-port-80-d8d6d3443d9a