but those that are working in low level programming often don't know what DNS, FTP or SQL is
That's a very baffling statement that doesn't reflect any of my experiences (I don't think you realize just how big FTP is/was). How are you defining "low-level programmer" here?
Your definition is completely worthless, then. Someone writing Java EE apps is then a "low-level programmer", which is totally wrong.
In fact, ATMs these days more often than not have full operating systems like Windows CE with the software being a Java app that communicates over some standardized XML-based middleware to access ATM system and transaction mechanisms.
Kernel hacking, drivers, virtualization, FPGAs/ASICs, compilers/linkers/toolchains, bootloaders, firmware, debuggers, databases, shells, process managers, etc. etc.
There's plenty. Generally if you don't have to worry too intimately about VMM semantics, you probably aren't doing low-level.
That's a very baffling statement that doesn't reflect any of my experiences (I don't think you realize just how big FTP is/was). How are you defining "low-level programmer" here?