You really need to re-think re-read how nmap works and it's capabilities.
nmap will tell you better than 90% in most cases. It will tell you services given that a service is running and it responds to the probes sent out by nmap.
If the server responds to probes of any sort then one is going to be able to find out what is being offered on a given port.



