Any protocol is essentially a software that runs on a specific computer and manages all the "talking" with other computers in the "protocol language". In order for the same software to run on different machines there is a need to initialize the protocol with parameters specific to that machine and to the local network before starting proper operation. Initialization can be done during booting (if the protocol is embedded in the operating system) or it can be triggered by a specific application (if the protocol is embedded into the application).
Take for example the TCP/IP protocol stack: first of all, the IP protocol needs to know the IP address of the computer. Moreover, it needs to know the network subnet-mask, IP-addresses of the default router, the printer, the DNS and perhaps some other servers etc.
Those parameters can be configured manually and locally for each and every computer. Using a mechanism like that introduces some problems:
All those reasons lead to the need in an automated mechanism for
TCP/IP protocols' configuration and DHCP is the currently most advanced mechanism for
doing so.
The next section gives an overview of some other mechanism and the
evolvement from them into the current DHCP.