For one/two-semester undergraduate courses in Computer Networking and Network Programming in Engineering and Computer Science. This clearly written and logically organized text allows students to gain a deeper understanding of computer networks and internets by asserting that the best way to learn is by doing: it allows for hands-on experience with a real network. Through experiments, students learn that interconnecting hardware, configuring software, measuring performance, observing protocols in action, and creating client-server programs over a network all help sharpen understanding. The text is organized into six sections that each consider a hardware platform, from the most basic to the most advanced, and outlines experiments that can be carried out using these platforms. This lab manual can be used with any computer networks textbook.