Available:*
Library | Item Barcode | Call Number | Material Type | Item Category 1 | Status |
---|---|---|---|---|---|
Searching... | 30000010114874 | TK5105.5 C654 2005 | Open Access Book | Book | Searching... |
Searching... | 30000010069456 | TK5105.5 C654 2004 | Open Access Book | Book | Searching... |
On Order
Summary
Summary
Acclaimed author Douglas E. Comer's book, Hands-On Networking with Internet Technologies, upholds the assertion that the best way to learn is by doing. Through laboratory experimentation, students and professionals gain a better understanding of how computer networks and Internet technologies operate in practice. Organised into sections that focus on the hardware and software platforms of different lab facilities, this book systematically constructs and augments a practical knowledge of networking. From single computer applications to advanced network systems engineering, a broad spectrum of hands-on experiments addresses a variety of difficulty levels, and guides the user to a deeper comprehension of the functionality and subtleties of networking in action.
Author Notes
Douglas E. Comer is a professor at Purdue University, where he develops and teaches courses in computer networking and internetworking
Excerpts
Excerpts
Network engineers, managers, programmers, professors and students have all asked how they can gain a deeper understanding of computer networks and internets. This book answers the question. It asserts that the best way to learn is by doing--there is no good substitute for hands-on experience with a real network. Interconnecting hardware, configuring network systems, measuring performance, observing protocols in action, and creating client-server programs that communicate over a network all help sharpen one's understanding and appreciation. What hardware and software facilities are required for hands-on experimentation? Instead of specifying an exact platform, this book is organized into six sections that each consider a hardware platform and outline experiments that can be carried out using the hardware. The first section begins by considering the smallest possible facility, a single stand-alone computer. Successive sections describe increasingly more powerful (and more expensive) facilities and the experiments they support. The last sections document advanced hardware and software facilities used for protocol development and network systems engineering. The point is that experimentation is always possible--although the facilities at hand determine the types of experiments that can be performed, even low-cost, general-purpose facilities offer opportunities. The broadest distinction among facilities concerns isolation. Early sections of the book describe experiments that can be carried out on conventional, general-purpose computers connected to a production network. Later sections describe experiments such as packet capture, intranet configuration, and protocol development that require a special, dedicated facility. Industry often uses the terms testbed or testnet to describe a separate dedicated facility; academia usually uses the term laboratory. An industrial testbed can serve two purposes. Like an academic laboratory, a testbed provides an environment that supports training. In addition the testbed provides a safe environment in which new or upgraded network systems can be configured, measured, and tested before being installed in the company's production network. Although we use the academic term laboratory throughout the book, many of the experiments are designed with industrial testbeds in mind. In the section on configuration, for example, experiments specify using an isolated facility to configure hosts, routers, and a firewall to form an intranet. In addition to a wide variety of topics, the experiments in this book cover a wide range of difficulty. Some experiments, especially those near the beginning of each chapter, are straightforward and may require less than a half hour to perform. Other experiments are both difficult and lengthy. For example, the IP router experiment described in Chapter 20 is taken from a second-year graduate class that I teach at Purdue. Students work in teams and require most of a semester to build a working IP router. Most experiments list optional extensions that suggest ways to go beyond the basics. The best students in my classes work through all the options, and sometimes invent options of their own. Networking professionals who are working alone can pick and choose among experiments in various chapters. Programmers will focus on the client-server experiments in Parts I and II; system administrators will focus on the configuration experiments in Part IV. Engineers who implement and optimize network systems and protocol stacks will focus on the performance measurements in Part III or protocol development experiments in Parts V and VI. Professors teaching networking courses can choose experiments appropriate to the class. Most colleges and universities cram all of networking and internetworking into a single one-semester overview course. In such a course, students should see a wide range of experiments to acquaint them with all aspects of the subject, especially network programming, network measurement, and protocol analysis. For example, students in my undergraduate class begin the first week using Internet applications and writing programs as described in Part II. When the lectures cover Local Area Networks, the students are assigned measurement experiments from Part III. The weeks that the lectures cover IP and TCP, students perform packet capture and protocol analysis experiments from Part III. Finally, students are ready to tackle a more advanced (socket) programming experiment from Part III. Colleges and universities fortunate enough to have multiple courses in networking can divide the experiments in this book among the courses and go into more depth in each. In a one-semester network programming course students concentrate on the programming experiments in Part III. Students in such a course also enjoy building the internet emulation gateway from Chapter 8 and constructing a library for the simplified API. If students do not have any previous experience, they can begin by using the simplified API in Part II, which allows them to start programming before they learn the details of sockets. I usually encourage students in a network programming course to incorporate the optional extensions and to think about ways the software can be parameterized. In a one-semester network administration course, students can focus on the configuration experiments in Part IV. Students enjoy creating their own version of an intranet, and are especially pleased when they can configure unconventional domain names. As an interesting challenge, I ask students to establish two apparently unrelated domain hierarchies for the same set of computers. Finally, in any course that discusses protocol design, students should begin by building the Internet emulation gateway described in Chapter 8. The gateway project requires students to extend their knowledge of socket programming to include UDP, allows them to see an application gateway, and causes them to consider the possible errors with which protocols must contend (i.e., packet loss, duplication, corruption, and delay). Excerpted from Hands-On Networking with Internet Technologies by Douglas E. Comer All rights reserved by the original copyright owners. Excerpts are provided for display purposes only and may not be reproduced, reprinted or distributed without the written permission of the publisher.Table of Contents
Preface | p. xv |
Chapter 1 Introduction And Overview | p. 1 |
1.1 The Fundamental Need For A Laboratory | p. 1 |
1.2 The Spectrum Of Possible Lab Facilities | p. 1 |
1.3 A Word About Simulation | p. 3 |
1.4 Organization Of The Book | p. 3 |
Part I A Single Computer | |
Chapter 2 Hardware And Software On A Single Computer | p. 7 |
2.1 The Two Types Of Support And Their Uses | p. 7 |
2.2 Support For Network Access | p. 7 |
2.3 Support For Network Programming | p. 7 |
2.4 Recommendations | p. 8 |
2.5 Summary | p. 8 |
Chapter 3 Using A Single Computer For Probing And Testing | p. 9 |
3.1 Using A Single Computer To Probe The Internet | p. 9 |
3.2 Using A Single Computer To Develop And Test Network Applications | p. 9 |
3.3 Stress Testing Applications With An Emulated Internet | p. 10 |
3.4 Transport Protocol Development On A Single Computer | p. 11 |
3.5 Summary | p. 12 |
Part II Network Programming On A Set Of Shared Workstations | |
Chapter 4 Hardware And Software For A Shared Workstation Lab | p. 15 |
4.1 Consequences Of Sharing | p. 15 |
4.2 Example Shared Lab Technologies | p. 15 |
4.3 Architecture Of A Shared Lab | p. 16 |
4.4 Using A Shared Lab In A Networking Course | p. 16 |
4.5 Broadcast Domain Assumption | p. 16 |
4.6 Summary | p. 17 |
Chapter 5 Network Programming Experiments Using A Simplified API | p. 19 |
5.1 Introduction | p. 19 |
5.2 Obtaining Software For The API | p. 20 |
Experiment 5.1 Compile, test, and extend example Echo software | p. 21 |
Experiment 5.2 Compile, test, and extend example Chat software | p. 23 |
Experiment 5.3 Build a simple file transfer service | p. 25 |
Chapter 6 Network Programming Experiments Using The Socket API | p. 27 |
6.1 Introduction | p. 27 |
6.2 Information About Sockets | p. 27 |
6.3 A Note About The Difficulty Of Socket Programming | p. 28 |
6.4 Summary | p. 28 |
Experiment 6.1 Compile, link, and run a socket program | p. 29 |
Experiment 6.2 Write an echo client and server using sockets | p. 31 |
Experiment 6.3 Build a web server using sockets | p. 33 |
Experiment 6.4 Build a library for a network API | p. 35 |
Chapter 7 Concurrent Network Programming Experiments | p. 37 |
7.1 Introduction | p. 37 |
Experiment 7.1 Build a concurrent server (threads) | p. 39 |
Experiment 7.2 Build a concurrent file transfer server (processes) | p. 41 |
Experiment 7.3 Build a multiservice server | p. 43 |
Chapter 8 Protocol Design Experiments | p. 45 |
8.1 Introduction | p. 45 |
8.2 Stress Testing Protocols | p. 45 |
8.3 Internet Emulation With A Gateway | p. 45 |
8.4 Emulation Behavior | p. 46 |
8.5 Gateway Details | p. 46 |
8.6 Gateway Registration Message | p. 47 |
8.7 Packet Exchange | p. 48 |
8.8 Error Processing | p. 49 |
8.9 Gateway Semantics And Defaults | p. 49 |
8.10 Possible Extensions | p. 50 |
8.11 Summary | p. 50 |
Experiment 8.1 Build an internet emulation gateway | p. 51 |
Experiment 8.2 Design a clock synchronization protocol | p. 53 |
Experiment 8.3 Design a reliable data transfer protocol | p. 55 |
Experiment 8.4 Design a sliding window protocol | p. 57 |
Chapter 9 Experiments With Protocols From The TCP/IP Suite | p. 59 |
9.1 Introduction | p. 59 |
9.2 Difficulties And Rewards | p. 59 |
9.3 Summary | p. 60 |
Experiment 9.1 Build a client for the Time protocol | p. 61 |
Experiment 9.2 Build a domain name system client program | p. 63 |
Experiment 9.3 Build a DHCP client | p. 65 |
Part III Measurement And Packet Analysis On Augmented Workstations | |
Chapter 10 Hardware And Software For An Augmented Shared Lab | p. 69 |
10.1 The Ideal Measurement Lab | p. 69 |
10.2 Alternatives To An Isolated Network | p. 69 |
10.3 Augmentation | p. 70 |
10.4 Protecting The Production Network | p. 70 |
10.5 Computers On A Private Network | p. 70 |
10.6 Summary | p. 71 |
Chapter 11 Network Measurement Experiments | p. 73 |
11.1 Introduction | p. 73 |
11.2 Measuring Throughput | p. 73 |
11.3 Summary | p. 73 |
Experiment 11.1 Compile and test ttcp | p. 75 |
Experiment 11.2 Measure 10 and 100 Mbps network throughput | p. 77 |
Experiment 11.3 Compare throughput of a switch and a hub | p. 79 |
Chapter 12 Packet Capture And Analysis Experiments | p. 81 |
12.1 Introduction | p. 81 |
12.2 Promiscuous Mode And Hubs | p. 81 |
12.3 Manual Packet Inspection | p. 81 |
12.4 Summary | p. 82 |
Experiment 12.1 Capture and decode ethernet frames | p. 83 |
Experiment 12.2 Decode an IP header | p. 85 |
Experiment 12.3 Decode TCP segment headers | p. 87 |
Experiment 12.4 Build a packet analyzer | p. 89 |
Chapter 13 Protocol Observation Experiments | p. 91 |
13.1 Introduction | p. 91 |
13.2 Protocol Sequences At Each Layer | p. 91 |
13.3 Summary | p. 91 |
Experiment 13.1 Capture and reassemble IP fragments | p. 93 |
Experiment 13.2 Extract data from a TCP stream | p. 95 |
Experiment 13.3 Observe concurrent TCP connections | p. 97 |
Part IV Configuration Experiments In A Dedicated Intranet Lab | |
Chapter 14 Hardware And Software For A Dedicated Intranet Lab | p. 101 |
14.1 Dedicated Vs. Production Facilities | p. 101 |
14.2 Characteristics Of A Dedicated Intranet Lab | p. 101 |
14.3 Example Equipment In A Dedicated Lab | p. 102 |
14.4 Summary | p. 102 |
Chapter 15 Internet Address Configuration Experiments | p. 103 |
15.1 Introduction | p. 103 |
15.2 Organization Of Chapters | p. 103 |
15.3 Summary | p. 103 |
Experiment 15.1 Configure IP addresses | p. 105 |
Experiment 15.2 Assign fixed-length IP subnet addresses | p. 107 |
Experiment 15.3 Assign IP addresses using CIDR | p. 109 |
Chapter 16 Web Technology Configuration Experiments | p. 111 |
16.1 Introduction | p. 111 |
16.2 Web Technologies | p. 111 |
16.3 Summary | p. 112 |
Experiment 16.1 Configure an Apache web server | p. 113 |
Experiment 16.2 Download and configure a Squid cache | p. 115 |
Experiment 16.3 Configure and test a web load balancer | p. 117 |
Chapter 17 IP Routing And IP Forwarding Experiments | p. 119 |
17.1 Introduction | p. 119 |
17.2 Indirect Vs. Direct Observation | p. 119 |
17.3 Summary | p. 119 |
Experiment 17.1 Use netstat to examine a routing table | p. 121 |
Experiment 17.2 Use SNMP to probe a routing table | p. 123 |
Experiment 17.3 Configure and run rip software | p. 125 |
Experiment 17.4 Configure and run OSPF software | p. 127 |
Chapter 18 Virtual And Protected Internet Environment Experiments | p. 129 |
18.1 Introduction | p. 129 |
18.2 Flexible Abstractions | p. 129 |
18.3 Summary | p. 129 |
Experiment 18.1 Configure a DNS server | p. 131 |
Experiment 18.2 Install and configure a NAT box | p. 133 |
Experiment 18.3 Install and configure a VPN | p. 135 |
Part V Protocol Stack Implementation In A Special-Purpose Lab | |
Chapter 19 Hardware And Software For A Special-Purpose Protocol Development Lab | p. 139 |
19.1 Introduction | p. 139 |
19.2 The Need For Two Computers | p. 139 |
19.3 Front-End and Back-End Computers In A Lab | p. 140 |
19.4 Functional Requirements | p. 140 |
19.5 An Example Architecture | p. 141 |
19.6 Operation Of the Author's Lab | p. 142 |
19.7 Automated Recovery | p. 143 |
19.8 Organization Of The Lab Software | p. 144 |
19.9 Reset Controller Hardware | p. 145 |
19.10 Scaling The Architecture | p. 146 |
19.11 Virtual Lab | p. 147 |
19.12 Summary | p. 148 |
19.13 Further Details | p. 148 |
Chapter 20 Protocol Stack Development Experiments | p. 149 |
20.1 Introduction | p. 149 |
20.2 The Value Of Building A Stack | p. 149 |
20.3 Summary | p. 150 |
Experiment 20.1 Interface with a network device driver | p. 151 |
Experiment 20.2 Build an IP forwarding mechanism | p. 153 |
Experiment 20.3 Implement an IP router | p. 155 |
Part VI System Design In A Network System Engineering Lab | |
Chapter 21 Hardware And Software For A Network System Engineering Lab | p. 159 |
21.1 Network Processors | p. 159 |
21.2 Facilities Needed | p. 160 |
21.3 Hardware For An Example Lab | p. 160 |
21.4 A Network Processor Testbed | p. 160 |
21.5 Software For The Example Lab | p. 161 |
21.6 Relationship To Previous Lab Architectures | p. 162 |
21.7 Summary | p. 162 |
Chapter 22 Network Systems Engineering Experiments | p. 163 |
22.1 Introduction | p. 163 |
Experiment 22.1 Compile and dowhload network processor code | p. 165 |
Experiment 22.2 Implement packet classification with a network processor | p. 167 |
Index | p. 169 |