The assignment is due Friday, March 27, 5 pm EDT, to be submitted via CourseWorks.
Some of the questions below are research questions, where you are asked to find information about a particular issue. You may use the Engineering Library, any text books you have, one of the paper from the class readings, or the web to come up with answers. Be sure to cite your sources. Generally, a paragraph or two should be sufficient to answer the question. There is no need to write a tutorial.
Programming problem (DNS): Some of the protocols that we will be discussing will use specialized DNS records. To allow you to become more familiar with those newer uses of DNS, you are asked to program a simple "stub resolver", in either C/C++, Java, or Python.
For C/C++, you can use adns and the GNU web site. RULI is another option; a synchronous library supporting SRV is a modified version of resparse.
Java libraries include dnsjava and the Java Naming and Directory Interface (JNDI).
You should build an application that allows to retrieve DNS records
from a commandline tool, specified as adns type domain
,
where type is the resource record (RR) type and domain is
the domain name to be resolved. You only need to support A, CNAME and
SRV (RFC 2782) records, but can support any additional types. You can
use the _sip._udp.columbia.edu
DNS SRV and
www.cs.columbia.edu
CNAME records for testing.
Capture the DNS exchange using Ethereal or tcpdump. You can use an output format similar to host, but feel free to create your own layout.
Include any libraries; provide a Makefile.