What Are Name Servers
Name servers are the actual programs that provide the domain-to-IP mapping information on the Internet. We mentioned that DNS provides a distributed database service that supports dynamic retrieval of information contained in the name space. Web browsers, and other Internet client applications, will normally use the DNS to obtain the IP a target host before making contact with a server.

There are three elements to the DNS: the name space, the name servers, and the resolvers.

Name servers: Information in the distributed DNS are divided into zones and each zone is supported by one or more name servers running on different hosts. A zone is associated with a node on the domain tree and covers all or part of the subtree at that node. A name server that has complete information for a particular zone is said to be an authority for that zone. Authoritative information is automatically distributed to other name servers which provide redundant service for the same zone.

A server relies on lower-level servers for other information within its subdomain and on external servers for other zones in the domain tree. A server associated with the root node of the domain tree is a root server and can lead to information anywhere in the DNS. An authoritative server uses local files to store information, to locate key servers within and without its domain, and to cache query results from other servers. A boot file, usually /etc/named.boot, configures a name server and its data files.

The management of each zone is also free to designate the hosts that run the name servers and to make changes in its authoritative database. For example, the host ns.nic.ddn.mil may run a root name server. The host condor.mcs.kent.edu may run a name server for the domain mcs.kent.edu.
A server answers queries from resolvers and provides either definitive answers or refer- rals to other name servers. The DNS database is set up to handle network address, mail exchange, host configuration, and other types of queries, some yet to be implemented.

Resolvers: A DNS resolver is a program that sends queries to name servers and obtains replies from them. On UNIX systems, a resolver usually takes the form of a C library function. A resolver can access at least one name server and use that name server’s information to answer a query directly, or pursue the query using referrals to other name servers.

Resolvers, in the form of networking library routines, are used to translate domain names into actual IP addresses. These library routines, in turn, ask prescribed name servers to resolve the domain names. The name servers to use for any particular host are normally specified in the file /etc/resolv.conf or /usr/etc/resolv.conf.

The ICANN maintains root name servers associated with the root node of the DNS tree. Domain name registrars, corporations, organizations, Web hosting companies, and other Internet Service Providers (ISP) run name servers for their zones to associate IPs to domain names in their particular zones. All name servers on the Internet cooperate to perform domain-to-IP mappings on-the-fly.

Looking up Host Information
On UNIX and MS/Windows systems, the host, dig and nslookup commands provide direct user access to the DNS. These commands are similar but dig is intended to be replacing nslooup. You may find one or all three work on your system. We’ll see how nslookup works, because it provides simpler output. The form nslookup host submits a name server query and obtains domain name, IP address, and alias information for the given host. The name server used is specified in the resolv.conf file. To check on the gopher server (host) at UICU, for instance, you would enter the command nslookup www.kent.edu which gives the desired information together with the identity of the name server (from RoadRunner in Columbus Ohio) that provided the data is displayed. As this example shows, typically the name www is an DNS alias for a host whose real domain name is something else.

Nslookup is very handy for verifying the existence of hosts and finding the IP address or domain name aliases for hosts. Once the name of a host is known, you can also test if the host is up and running, as far as networking is concerned, with the ping command.

This sends a message to the given remote host requesting it to respond with an echo if it is alive and well. If this command is not on your command search path, try the command /etc/ping or /usr/etc/ping instead.

The Web Development Process
With enough background information, we now turn to our main subject Web Design and Programming (WDP). WDP involves conceptualizing, architecting, designing, organizing, implementing, maintaining, and improving websites for functionally effective and esthetically attractive information delivery and exchange.
The Web is a new mass communication medium. To create a well designed and effective website is not easy. It takes expertise in information architecture, visual communication de- sign, mass communication, computer programming, business administration, and consumer psychology, just to name some areas. It usually takes teamwork to get it done.

The heart of the enterprise is a combination of artistic design and computer programming.

To create a website, there are many tasks involved. The overall website development process can be summarized here. Subsequent chapters provide in-depth coverage of these tasks.
Requirement Analysis and Development Plan—What are the requirements for the finished site? What exactly will your finished website achieve for the client? What problems does your client want you to solve? Who are the target audiences of the website? Can you realistically help the client? What is the scope and nature of work? What are the design and programming tasks involved? What resources and information will be needed and what problems you foresee? Who will provide content information for the site, in what formats? What resources are needed or available: textual content, photos, imagery, audio, video, logos, corporate identity standards, copyrights, credits, footers, and insignia?

Answer the preceding questions and make a plan, create and group content, functional, and look and feel requirements, and set clear goals and milestones for building and developing the site.
Site Architecture—Decide on an appropriate architecture for the site. The site architec- ture is influenced by the nature of the information being served and the means of delivery. Ordinary sites involve static pages with text and images and online forms. Specialized sites may involve audio, video, steaming media, and dynamically generated information, or access to databases.
Website information architecture (IA) deals with the structuring, the relationship, the connectivity, the logical organization, and the dynamic interactions among the constituent parts of a website.
Within each Web page, consider the placement, layout, visual effect, font and text style, etc. These are also important but may be more “interior decoration” rather than architecture. However, architecture and interior/exterior decoration are intimately related.

The site architecture phase produces a blueprint for building the website. The blueprint is a specification of the components and their contents, functionalities, relations, con- nectivity, and interactions. Website implementation will follow the architecture closely.
An important aspect of site architecture is the navigation system for visitors to travel in your site. The goal is to establish site-wide (primary), intra-section (secondary), and intra-page (tertiary) navigation schemes that are easy and clear.

Text-only Site Framework—Follow these steps to prepare a skeletal site as a foundation for making adjustments and for further work to complete the site.

• Content: create content list or inventory; prepare content files ready to be included in Web pages.
• Site Map: draw a relationship diagram of all pages to be created for the site, give each page appropriate titles, show page grouping, on-site and off-site links, distinguish static or dynamic pages, identify forms and server-side support. Major subsections of the site can have there own submaps.
• Skeletal site: entry page, homepage, typical subpages and sub-subpages, textual contents (can be in summary form), HTML forms with textual layout and descrip- tions of server-side support, structure of the file hierarchy for the site, well-defined HTML coding standards for pages.
• Navigation: follow the site architecture and site map to link the pages, use textual navigation links with rough placements (top, left, right, or bottom), avoid dead- end pages and avoid confusing the end-user.
Visual Communication and Artistic Design:

• Design concepts: features, characteristics and look and feel of the site. The design
must reflect client identity and site purpose.

Page layout: (for pages at all levels) content hierarchy and grouping; grids, align- ments, constants and variables on the page; placement and size of charts, graphs, illustrations, and photos; creative use of space and variations of font, grid, and color; style options and variations.
Homepage/entry page: Visuals to support the unique function and purpose of entry to the site and homepage as required by site architecture.
Site Production:

• Page Templates: Create templates for typical pages at all levels. Templates are skeleton files used to make finished pages by inserting text, graphics, and other content at marked places in the templates. In other words, a template is a page frame with the desired design, layout and graphics, ready to receive text, links, photos, and other content. A template page may provide HTML, style sheets, Javascript, head, body, meta, link, and script tags as well as marked places for page content. Templates enable everyone on the project team to complete pages for the site. Advanced templates may involve dynamic server-side features.

• Prototype pages: Use the templates to complete typical pages in prototype form, test and examine page prototypes, present prototype pages to the client and obtain feedback and approval. Make sure that the layout system has been designed versatile and flexible enough to accommodate potential changes in content.

• Client-side programming: Write scripts for browsers and possibly other Web clients that will be delivered together with Web pages to the client side. Such scripts may include style sheets and Javascripts. Client side programs can make Web pages more interactive and responsive.
• Server-side programming: Write programs for form processing, dynamic page generation, database access, e-business, and e-commerce features.

• Finished pages: Following page prototypes, add text, graphics, photos, anima- tions, audio and video to templates to produce all pages needed; make final ad- justments and fine tuning.
Error checking and validation—Apply page checking tools or services on finished pages to remove spelling errors, broken links, and HTML coding problems. Check page loading times.
Testing—Put the site through its paces, try different browsers from different access loca- tions, debug, fine tune, and check against architecture and requirements.