Previous editions of
Computer Networks And Internets have generated excitement. In addition to the hundreds of U.S. schools using the text in their networking courses, professionals have written to praise its use in industry, and enthusiastic comments have arrived about the foreign translations. The success is especially satisfying in a market glutted with networking books. This book stands out because of its breadth of coverage, logical organization, explanation of concepts, focus on the Internet, and wealth of supplemental materials for both students and instructors on the CD-ROM and on the Web site:
http://www.netbook.cs.purdue.edu
The new edition has been completely revised and updated, with three new chapters (24, 26, 33) and additional glossary entries. The CD-ROM and Web site have also been expanded.
Each new chapter responds to requests from instructors and readers. Chapter 24 introduces UDP, Chapter 26 explains Network Address Translation, and Chapter 33 covers IP telephony. Chapter 33 is especially relevant; students are likely to use an IP telephone.
The text answers the basic question "how do computer networks and internets operate?" in the broadest sense. It provides a comprehensive, self-contained tour through all of networking that describes low-level details such as data transmission and wiring, network technologies such as LANs and WANs, internetworking protocols, and application software. It shows how protocols use the underlying hardware and how applications use the protocol stack to provide functionality for users.
Much has been written recently about how a study of networking should be organized. There are two extremes: a strict bottom-up approach or a strict top-down approach. In bottom-up, one learns the lowest-level details, and then learns how the next higher levels use the lower-levels to provide expanded functionality. In top-down, one starts with a high-level application and only learns enough of the next lower layer to understand how the application can operate. Each approach has advantages. The traditional bottom-up approach presents the material in a logical manner so a reader understands how higher layers build on lower layers. A top-down approach begins with familiar applications (e.g., email), and provides a less rigorous introduction to the subject. We recommend a new, integrated approach that combines the best of top-down and bottom-up. The integrated approach provides early exposure to using and building network applications while simultaneously delivering the material in a logical order. To implement the integrated approach, the new edition of Computer Networks And Internets has a companion laboratory manual, Hands-On Networking. Computer Networks And Internets explains the concepts, and the exercises in Hands-On Networking show how the concepts apply to real networks.
The text is intended for upper-division undergraduates or beginning graduate students, who have little or no background in networking. It does not use sophisticated mathematics, nor does it assume a knowledge of operating systems. Instead, the text defines concepts clearly, uses examples and drawings to illustrate how the technology operates, and states results of analysis without providing mathematical proofs.
After an introduction that starts readers using and building network applications (Chapters 1-3), the body of the text is organized into four sections. The first section (Chapters 4-6) provides a brief explanation of how the underlying hardware works. The section explains the concept of a carrier signal, discusses modulating a carrier, and shows how a modem encodes data on a carrier wave for transfer. The section also discusses asynchronous, character-oriented data transmission, and defines terms such as bandwidth and baud that arise in later chapters.
The second section (Chapters 7-16) focuses on packet switching. The section introduces the motivation for using packets, and then describes basic network topologies and wiring schemes as well as the characteristics used to categorize networks as LANs, WANs, local loops, public or private, and connection-oriented or connectionless. The section also introduces the concepts of next-hop routing, switching, and protocol layering, with the terminology used for each. Finally, the section uses several common network technologies as examples, including Ethernet, ATM, and DSL.
The third section (Chapters 17-27) focuses on the Internet protocols. After discussing the motivation for internetworking, the section describes internet architecture and routers, internet addressing, address binding, and the TCP/IP protocols. Protocols such as IP, TCP, UDP, ICMP, and ARP are reviewed in more detail, allowing students to understand how the concepts relate to practice. Chapter 25 on TCP covers the important and deep topic of reliability in transport protocols.
The final section (Chapters 28-41) examines network applications. As with other sections of the text, coverage is quite broadthe section includes a discussion of both general principles and specific applications. The section begins by describing the client-server model that network applications use to communicate. The section then describes the socket API, and shows code from an example client and server that use sockets for communication. The section describes name resolution with the Domain Name System and applications such as e-mail, file transfer, IP telephony, and the Web (including an explanation of dynamic and active documents, with examples using CGI, Java, and JavaScript). In each case, the text describes the structure of the software, and explains how a client and server interact to provide the service. Chapter 38 discusses middleware, including both procedural and object oriented middleware technologies. Later chapters in the section discuss network security, and explain how application software can be used for network management. Finally, Chapter 41 considers the interesting problem of initialization. The chapter shows how application-level software can achieve what seems to be impossibleuse of protocol software to obtain the information needed to initialize the protocol software being used.
The text is ideally suited for a one-semester introductory course on networking taught at the senior level. Designed for a comprehensive course, it covers the entire subject from wiring to applications. In the undergraduate course at Purdue, for example, students have weekly lab assignments that cover a wide range of topics: network measurement, packet analysis, and network programming. By the time they finish our course, each student is expected to: know how an IP router uses a routing table to forward IP datagrams; describe how a datagram crosses the Internet; explain the difference between an Ethernet hub and an Ethernet switch; know how TCP identifies a connection and why a concurrent Web server can handle multiple connections to port 80; describe the conceptual differences between a bridge and an IP router; compute the length of a single bit as it travels across a 100BaseT network; explain why TCP is classified as end-to-end; distinguish between the CSMA/CD media access mechanism used by Ethernet and a token passing scheme; and know how DSL can send data over wires that are also being used for an analog telephone call.
The goal of a single course is breadth, not depthto cover the subject, one cannot focus on a few technologies or a few concepts. Thus, the key to a successful course lies in maintaining a quick pace. To cover the fundamental topics in a semester, the lower-layer material in Part 2 can be condensed into a week, and the sections on networks and internetworking can be allocated five weeks each, leaving a few weeks for the section on applications and topics such as network management and security.
Instructors should impress on students the importance of concepts and principles: specific technologies may become obsolete in a few years, but the principles will remain. In addition, instructors should give students a feeling for the excitement that pervades networking.
Although no single topic is challenging, students may find the quantity of material daunting. In particular, students are faced with a plethora of new terms. Networking acronyms and jargon can be especially confusing; students spend much of the time becoming accustomed to using proper terms. To help students master terminology, Appendix 1 contains a glossary of terms and acronyms. To provide additional clarification, definitions in the glossary have been written independently rather than being taken verbatim from the text.
Because programming and experimentation are crucial to helping students learn about networks, laboratory experience is an essential part of any networking course. The lab manual, Hands-On Networking, describes experiments that can be performed on a variety of hardware, including a single computer or a set of computers on a local area network. Our curriculum at Purdue emphasizes packet analysis and socket programming. We begin the semester by having students construct client software to access the Web and extract data (e.g., write a program to print the current temperature). Chapter 3 explains the simple API that we give students; with our API, students can write working code before they learn about protocols, addresses, or sockets. Later in the semester, of course, students learn to use the socket API. Eventually, they write a concurrent Web ' server (support for server-side scripting is optional). In addition to application programming, students also use the lab facilities to capture packets from a live network. They t write programs that decode packet headers (e.g., Ethernet, IP, and TCP), and observe TCP connections.
Giving students access to a network builds enthusiasm and encourages experimentationour experience shows that students who have access to a live network understand and appreciate the subject better. Thus, if a dedicated packet analyzer is not available, an analyzer can be created by installing appropriate shareware software on a standard PC.
The CD-ROM included with the text and the Web site both contain materials that will make teaching easier and help readers understand the material. For students without access to networking facilities, the CD-ROM contains examples of packet traces; students can write programs that read a trace and process packets as if they have been captured from the network. For instructors, the CD-ROM contains course materials, figures from the text that can be used in presentations, and animated figures that help clarify the concepts. The CD-ROM also contains materials not in the text, including photographs of network wiring and equipment as well as files of data that can be used as input to student projects.
To help both professors and students locate information, the CD-ROM includes a keyword search mechanism. When given a term, the search mechanism locates a definition from the online glossary as well as other items related to the term. Finally, the CD-ROM contains links to the Web site, which is updated continuously. Two electronic mailing lists have been established for the text: general information can be obtained from [email protected]; discussions about teaching the material occur on [email protected]. To join one of the mailing lists, send an e-mail message to [email protected] or [email protected] with the word subscribe in the body of the message. To avoid having the mail server send multiple copies of each message over the Internet, instructors are requested to establish a single local alias for all students at their site.
I thank all the people who have contributed to this edition of the book. Dennis Brylow and John Lin proofread chapters throughout the text. Jennifer Seitzer, Abdullah Abonamah, George Varghese, and Jim Griffioen reviewed earlier editions and made valuable comments. Mike Evangelista wrote the client and server application code in Chapter 3 as well as the API; he ported the API to Linux, Solaris, and Windows platforms. Ralph Droms prepared the CD-ROM, manages the Web materials, and reviewed several chapters. David Laverell created and manages the Web site for Hands On Networking. Special thanks go to my wife and partner, Christine, whose careful editing and helpful suggestions made many improvements throughout.
Douglas E. Comer
September, 2003