==========================================================================
Overview of files for the smDnsClnt (Simple-minded DNS Client) Version 1.1
==========================================================================

CS515 UNIX NETWORK PROGRAMMING
Instructor: Mr. Bin Zhang
Project   : Simple-minded DNS Client (smDnsClnt)
Students  : Huang, Hao  (2860A)
            Kyong Sun, Sung (4768A)
Due date  : Apr. 9, 2002

Program Title: Simple-minded DNS Client (smDnsClnt)

Objective: 
  - Practice socket programming
      . Learn to implement a real Application Layer protocol
      . Interact with a real server
  - Gain understanding of DNS and DNS implementation

Command syntax:
  - smDnsClnt [-d] [hostname|IP_address]
      . -d: debug option(print many debug messages)

Required features:
  - Work as a DNS client (similar to a small set of nslookup or host)
      . Find the IP address of a host
      . Find the hostname of an IP address
  - Build DNS request (question) and parse DNS response (reply)
  - Find the server and the default domain in /etc/resolv.conf
  - Recover from server error (add a retry mechanism to your client
    because you are using UDP!)
  - Not to use the resolve library (i.e., must not call gethostbyname or
    gethostbyaddr)

Optional features:
  - Recursive query (send the request to other servers if the server rejects 
    to do the recursive search for you and returns a list of the server names 
    instead of the answer)
  - Truncated response (send a TCP request to the server if the UDP reply from
    the server is truncated)

Survey:
  - Purpose: improve research skill
  - Topic: one aspect of DNS
      . A description of a DNS-related web site
      . A description of a DNS-related software or service
      . A study on a DNS feature
      . A study of DNS implementation at NPU
  - You must write the report yourself!
      . copying large amount of materials (e.g., an entire paragraph) from
        other resources is not acceptable
      . Downloaded code is acceptable only if the code has been built and
        tested and is used to accompany the report

Deliverables:
  - All the source files (.c, .h and the makefile)
    Hand in a print copy to me at the time of demonstration
  - Executable smDnsClnt.huanghao copy to ~bzhang/class/cs515/homework/proj
  - Survey report (a hard copy)

Testing:
  - A sample testing output
      . Notes on the sample testing
        - You need to do more testing!
        - Your program can (and should) have different output content and
          format
      . Test case 1: get IP address from host name
          $>smDnsClnt npu6.npu.edu
      . Test case 2: get host name from IP address
          $>smDnsClnt 216.133.192.36
      . Test case 3: get IP address from host name with -d
          $>smDnsClnt -d npu6.npu.edu

References:
    see the man page of nslookup

Files 
    readme          : outline for the Project smDnsClnt
    makefile        : makefile for the smDnsClnt programs
    smDnsClnt.h     : general header file
    smDnsClnt.c     : main function for smDnsCLnt and network functions
    smDnsBuild.c    : build DNS request functions
    smDnsParse.c    : parse DNS response functions
    smDnsError.c    : errors handle utility functions

