RPM
dnf handles dependency solving, finding files on the network, repository management, and so on. RPM handles the lower-level part of actually putting the files on your system. In most cases as an end user, DNF is all you need to interact with.
Redhat Package Manager
rpm is a powerful Package Manager, which can be used to build, install,query, verify, update, and erase individual software packages. A pack-age consists of an archive of files and meta-data used to install and erase the archive files. The meta-data includes helper scripts, file attributes, and descriptive information about the package. Packages come in two varieties: binary packages, used to encapsulate software to be installed, and source packages, containing the source code and recipe necessary to produce binary packages.