11.22 Summary
The set of functions that an application calls
to convert a hostname into an IP address and vice versa is called
the resolver. The two functions gethostbyname and
gethostbyaddr are the historical entry points. With the
move to IPv6 and threaded programming models, the
getaddrinfo and getnameinfo functions are more
useful, with the ability to resolve IPv6 addresses and their
thread-safe calling conventions.
The commonly used function dealing with service
names and port numbers is getservbyname, which takes a
service name and returns a structure containing the port number.
This mapping is normally contained in a text file. Additional
functions exist to map protocol names into protocol numbers and
network names into network numbers, but these are rarely used.
Another alternative that we have not mentioned
is calling the resolver functions directly, instead of using
gethostbyname and gethostbyaddr. One program that
invokes the DNS this way is sendmail, which searches for
an MX record, something that the gethostby XXX functions cannot do. The resolver
functions have names that begin with res_; the
res_init function is an example. A description of these
functions and an example program that calls them can be found in
Chapter 15 of [Albitz and Liu 2001] and typing man
resolver should display the man pages for these functions.
|