The Pliant implementation is based on RFC 1035 specifications.

What's special about Pliant DNS server is that it does not contain a resolver.
It may look strange at first, but it's a win in all areas:

On the other hand, there is no need to implement a real resolver, except to avoid recursive queries between servers, but this is provided in Pliant DNS server with the much simpler notion of local/external queries beeing answered differently.

common.pli Defines the various data types used in DNS protocol, and the names encoding and decoding (in the DNS protocol, names are 'compressed').
It also contains the caching code.
client.pli The Pliant DNS client.
Contains the code that builds a request, then submit it to the caching system, then parses the answer.
server.pli The Pliant DNS server.
It's main task is parsing and forwarding or building answers received on TCP or UDP port 53.
It relies on common.pli for caching forwarded queries.
name.pli Defines the various tables involved in the DNS database. The dynamic page that will allow you to configure the DNS database using your browser.

The current status of the DNS client and server is described in the DNS section of the Pliant overall project.