Computer Networking: A Top-Down Approach (7th Edition) - Pearson, 2017 - PDF
Document Details
Uploaded by Deleted User
2017
James F. Kurose, Keith W. Ross
Tags
Summary
This is a Computer Networking textbook by Kurose and Ross, 7th edition. It provides a comprehensive look at computer networking concepts, suitable for undergraduate study. It includes digital access codes for accompanying online resources.
Full Transcript
Global Global edition edition For these...
Global Global edition edition For these Global Editions, the editorial team at Pearson has Computer Networking Computer Networking collaborated with educators across the world to address a wide range of subjects and requirements, equipping students A top-down approach A top-down approach with the best possible learning tools. This Global Edition seventh edition preserves the cutting-edge approach and pedagogy of the original, but also features alterations, customization, and adaptation from the North American version. seventh Ross edition Kurose This is a special edition of an established title widely used by colleges and universities throughout the world. Pearson published this exclusive edition for the benefit of students outside the United States and Canada. If you purchased this book within the United States Kurose Ross edition or Canada, you should be aware that it has GLOBal been imported without the approval of the Publisher or Author. Pearson Global Edition Kurose_07_1292153598_Final.indd 1 30/08/16 1:43 PM Digital Resources for Students Your new textbook provides 12-month access to digital resources that may include VideoNotes, interactive exercises, programming assignments, Wireshark labs, additional technical material, and more. Refer to the preface in the textbook for a detailed list of resources. Follow the instructions below to register for the Companion Website for Computer Networking: A Top-Down Approach, Seventh Edition. 1. Go to www.pearsonglobaleditions.com/kurose 2. Find the title of your textbook. 3. Click Companion Website 4. Click Register and follow the on-screen instructions to create a login name and password. Use a coin to scratch off the coating and reveal your access code. Do not use a sharp knife or other sharp object as it may damage the code. Use the login name and password you created during registration to start using the digital resources that accompany your textbook. IMPORTANT: This access code can only be used once. This subscription is valid for 12 months upon activation and is not transferrable. If the access code has already been revealed it may no longer be valid. For technical support go to https://support.pearson.com/getsupport Kurose_07_1292153598_IFC_Final.indd 1 30/08/16 1:47 PM COMPUTER SEVENTH EDITION Global Edition NETWORKING A Top-Down Approach J ames F. K urose University of Massachusetts, Amherst K eith W. R oss NYU and NYU Shanghai Boston Columbus Indianapolis New York San Francisco Hoboken Amsterdam Cape Town Dubai London Madrid Milan Munich Paris Montréal Toronto Delhi Mexico City São Paulo Sydney Hong Kong Seoul Singapore Taipei Tokyo A01_KURO3599_07_GE_FM.indd 1 22/08/16 5:11 PM Vice President, Editorial Director, ECS: Project Editor, Global Editions: K.K. Neelakantan Marcia Horton Senior Manufacturing Controller, Global Acquisitions Editor: Matt Goldstein Editions: Kay Holman Editorial Assistant: Kristy Alaura Senior Specialist, Program Planning and Support: Acquisitions Editor, Global Editions: Aditee Agarwal Maura Zaldivar-Garcia Vice President of Marketing: Christy Lesko Cover Designer: Lumina Datamatics Director of Field Marketing: Tim Galligan Manager, Rights and Permissions: Ben Ferrini Product Marketing Manager: Bram Van Kempen Project Manager, Rights and Permissions: Field Marketing Manager: Demetrius Hall Jenny Hoffman, Aptara Corporation Marketing Assistant: Jon Bryant Inventory Manager: Ann Lam Director of Product Management: Erin Gregg Cover Image: ISebyI/Shutterstock.com Team Lead, Program and Project Management: Media Project Manager: Steve Wright Scott Disanno Media Production Manager, Global Editions: Program Manager: Joanne Manning and Carole Snyder Vikram Kumar Project Manager: Katrina Ostler, Ostler Editorial, Inc. Credits and acknowledgments borrowed from other sources and reproduced, with permission, in this textbook appear on appropriate page within text. Pearson Education Limited Edinburgh Gate Harlow Essex CM20 2JE England and Associated Companies throughout the world Visit us on the World Wide Web at: www.pearsonglobaleditions.com © Pearson Education Limited 2017 The rights of James F. Kurose and Keith W. Ross to be identified as the authors of this work have been asserted by them in accordance with the Copyright, Designs and Patents Act 1988. Authorized adaptation from the United States edition, entitled Computer Networking: A Top-Down Approach, Seventh Edition, ISBN 978-0-13-359414-0, by James F. Kurose and Keith W. Ross published by Pearson Education © 2017. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, without either the prior written permission of the publisher or a license permitting restricted copying in the United Kingdom issued by the Copyright Licensing Agency Ltd, Saffron House, 6–10 Kirby Street, London EC1N 8TS. All trademarks used herein are the property of their respective owners. The use of any trademark in this text does not vest in the author or publisher any trademark ownership rights in such trademarks, nor does the use of such trademarks imply any affiliation with or endorsement of this book by such owners. British Library Cataloguing-in-Publication Data A catalogue record for this book is available from the British Library 10 9 8 7 6 5 4 3 2 1 ISBN 10: 1-292-15359-8 ISBN 13: 978-1-292-15359-9 Typeset by Cenveo Publisher Services Printed and bound in Malaysia. A01_KURO3599_07_GE_FM.indd 2 22/08/16 1:06 PM About the Authors Jim Kurose Jim Kurose is a Distinguished University Professor of Computer Science at the University of Massachusetts, Amherst. He is currently on leave from the University of Massachusetts, serving as an Assistant Director at the US National Science Foundation, where he leads the Directorate of Computer and Information Science and Engineering. Dr. Kurose has received a number of recognitions for his educational activ- ities including Outstanding Teacher Awards from the National Technological University (eight times), the University of Massachusetts, and the Northeast Association of Graduate Schools. He received the IEEE Taylor Booth Education Medal and was recognized for his leadership of Massachusetts’ Commonwealth Information Technology Initiative. He has won several confer- ence best paper awards and received the IEEE Infocom Achievement Award and the ACM Sigcomm Test of Time Award. Dr. Kurose is a former Editor-in-Chief of IEEE Transactions on Communications and of IEEE/ACM Transactions on Networking. He has served as Technical Program co-Chair for IEEE Infocom, ACM SIGCOMM, ACM Internet Measurement Conference, and ACM SIGMETRICS. He is a Fellow of the IEEE and the ACM. His research interests include network proto- cols and architecture, network measurement, multimedia communication, and modeling and performance evaluation. He holds a PhD in Computer Science from Columbia University. Keith Ross Keith Ross is the Dean of Engineering and Computer Science at NYU Shanghai and the Leonard J. Shustek Chair Professor in the Computer Science and Engineering Department at NYU. Previously he was at University of Pennsylvania (13 years), Eurecom Institute (5 years) and Polytechnic University (10 years). He received a B.S.E.E from Tufts University, a M.S.E.E. from Columbia University, and a Ph.D. in Computer and Control Engineering from The University of Michigan. Keith Ross is also the co-founder and original CEO of Wimba, which develops online multimedia applications for e-learning and was acquired by Blackboard in 2010. Professor Ross’s research interests are in privacy, social networks, peer-to-peer networking, Internet measurement, content distribution networks, and stochastic modeling. He is an ACM Fellow, an IEEE Fellow, recipient 3 A01_KURO3599_07_GE_FM.indd 3 10/08/16 1:16 PM 4 About the Authors of the Infocom 2009 Best Paper Award, and recipient of 2011 and 2008 Best Paper Awards for Multimedia Communications (awarded by IEEE Communications Society). He has served on numerous journal editorial boards and conference program committees, including IEEE/ACM Transactions on Networking, ACM SIGCOMM, ACM CoNext, and ACM Internet Measurement Conference. He also has served as an advisor to the Federal Trade Commission on P2P file sharing. A01_KURO3599_07_GE_FM.indd 4 10/08/16 1:16 PM To Julie and our three precious ones—Chris, Charlie, and Nina JFK A big THANKS to my professors, colleagues, and students all over the world. KWR A01_KURO3599_07_GE_FM.indd 5 10/08/16 1:16 PM This page intentionally left blank A01_HANL4898_08_SE_FM.indd 2 24/12/14 12:49 PM Preface Welcome to the seventh edition of Computer Networking: A Top-Down Approach. Since the publication of the first edition 16 years ago, our book has been adopted for use at many hundreds of colleges and universities, translated into 14 languages, and used by over 100,000 students and practitioners worldwide. We’ve heard from many of these readers and have been overwhelmed by the positive r esponse. What’s New in the Seventh Edition? We think one important reason for this success has been that our book continues to offer a fresh and timely approach to computer networking instruction. We’ve made changes in this seventh edition, but we’ve also kept unchanged what we believe (and the instructors and students who have used our book have confirmed) to be the most important aspects of this book: its top-down approach, its focus on the Internet and a modern treatment of computer networking, its attention to both principles and prac- tice, and its accessible style and approach toward learning about computer network- ing. Nevertheless, the seventh edition has been revised and updated substantially. Long-time readers of our book will notice that for the first time since this text was published, we’ve changed the organization of the chapters themselves. The net- work layer, which had been previously covered in a single chapter, is now covered in Chapter 4 (which focuses on the so-called “data plane” component of the net- work layer) and Chapter 5 (which focuses on the network layer’s “control plane”). This expanded coverage of the network layer reflects the swift rise in importance of software-defined networking (SDN), arguably the most important and exciting advance in networking in decades. Although a relatively recent innovation, SDN has been rapidly adopted in practice—so much so that it’s already hard to imagine an introduction to modern computer networking that doesn’t cover SDN. The topic of network management, previously covered in Chapter 9, has now been folded into the new Chapter 5. As always, we’ve also updated many other sections of the text to reflect recent changes in the dynamic field of networking since the sixth edition. As always, material that has been retired from the printed text can always be found on this book’s Companion Website. The most important updates are the following: Chapter 1 has been updated to reflect the ever-growing reach and use of the Internet. Chapter 2, which covers the application layer, has been significantly updated. We’ve removed the material on the FTP protocol and distributed hash tables to 7 A01_KURO3599_07_GE_FM.indd 7 17/08/16 1:51 PM 8 Preface make room for a new section on application-level video streaming and c ontent distribution networks, together with Netflix and YouTube case studies. The socket programming sections have been updated from Python 2 to Python 3. Chapter 3, which covers the transport layer, has been modestly updated. The material on asynchronous transport mode (ATM) networks has been replaced by more modern material on the Internet’s explicit congestion notification (ECN), which teaches the same principles. Chapter 4 covers the “data plane” component of the network layer—the per-router forwarding function that determine how a packet arriving on one of a router’s input links is forwarded to one of that router’s output links. We updated the mate- rial on traditional Internet forwarding found in all previous editions, and added material on packet scheduling. We’ve also added a new section on generalized forwarding, as practiced in SDN. There are also numerous updates throughout the chapter. Material on multicast and broadcast communication has been removed to make way for the new material. In Chapter 5, we cover the control plane functions of the network layer—the network-wide logic that controls how a datagram is routed along an end-to-end path of routers from the source host to the destination host. As in previous editions, we cover routing algorithms, as well as routing protocols (with an updated treat- ment of BGP) used in today’s Internet. We’ve added a significant new section on the SDN control plane, where routing and other functions are implemented in so-called SDN controllers. Chapter 6, which now covers the link layer, has an updated treatment of Ethernet, and of data center networking. Chapter 7, which covers wireless and mobile networking, contains updated material on 802.11 (so-called “WiFi) networks and cellular networks, including 4G and LTE. Chapter 8, which covers network security and was extensively updated in the sixth edition, has only modest updates in this seventh edition. Chapter 9, on multimedia networking, is now slightly “thinner” than in the sixth edi- tion, as material on video streaming and content distribution networks has been moved to Chapter 2, and material on packet scheduling has been incorporated into Chapter 4. Significant new material involving end-of-chapter problems has been added. As with all previous editions, homework problems have been revised, added, and removed. As always, our aim in creating this new edition of our book is to continue to provide a focused and modern treatment of computer networking, emphasizing both principles and practice. A01_KURO3599_07_GE_FM.indd 8 10/08/16 1:16 PM Preface 9 Audience This textbook is for a first course on computer networking. It can be used in both computer science and electrical engineering departments. In terms of programming languages, the book assumes only that the student has experience with C, C++, Java, or Python (and even then only in a few places). Although this book is more precise and analytical than many other introductory computer networking texts, it rarely uses any mathematical concepts that are not taught in high school. We have made a delib- erate effort to avoid using any advanced calculus, probability, or stochastic process concepts (although we’ve included some homework problems for students with this advanced background). The book is therefore appropriate for undergraduate courses and for first-year graduate courses. It should also be useful to practitioners in the telecommunications industry. What Is Unique About This Textbook? The subject of computer networking is enormously complex, involving many con- cepts, protocols, and technologies that are woven together in an intricate manner. To cope with this scope and complexity, many computer networking texts are often organized around the “layers” of a network architecture. With a layered organization, students can see through the complexity of computer networking—they learn about the distinct concepts and protocols in one part of the architecture while seeing the big picture of how all parts fit together. From a pedagogical perspective, our personal experience has been that such a layered approach indeed works well. Nevertheless, we have found that the traditional approach of teaching—bottom up; that is, from the physical layer towards the application layer—is not the best approach for a modern course on computer networking. A Top-Down Approach Our book broke new ground 16 years ago by treating networking in a top-down manner—that is, by beginning at the application layer and working its way down toward the physical layer. The feedback we received from teachers and students alike have confirmed that this top-down approach has many advantages and does indeed work well pedagogically. First, it places emphasis on the application layer (a “high growth area” in networking). Indeed, many of the recent revolutions in computer networking—including the Web, peer-to-peer file sharing, and media streaming— have taken place at the application layer. An early emphasis on application-layer issues differs from the approaches taken in most other texts, which have only a small amount of material on network applications, their requirements, application- layer paradigms (e.g., client-server and peer-to-peer), and application programming A01_KURO3599_07_GE_FM.indd 9 10/08/16 1:16 PM 10 Preface interfaces. Second, our experience as instructors (and that of many instructors who have used this text) has been that teaching networking applications near the begin- ning of the course is a powerful motivational tool. Students are thrilled to learn about how networking applications work—applications such as e-mail and the Web, which most students use on a daily basis. Once a student understands the applications, the student can then understand the network services needed to support these applica- tions. The student can then, in turn, examine the various ways in which such services might be provided and implemented in the lower layers. Covering applications early thus provides motivation for the remainder of the text. Third, a top-down approach enables instructors to introduce network applica- tion development at an early stage. Students not only see how popular applica- tions and protocols work, but also learn how easy it is to create their own network applications and application-level protocols. With the top-down approach, students get early exposure to the notions of socket programming, service models, and protocols—important concepts that resurface in all subsequent layers. By providing socket programming examples in Python, we highlight the central ideas without confusing students with complex code. Undergraduates in electrical engineering and computer science should not have difficulty following the Python code. An Internet Focus Although we dropped the phrase “Featuring the Internet” from the title of this book with the fourth edition, this doesn’t mean that we dropped our focus on the Internet. Indeed, nothing could be further from the case! Instead, since the Internet has become so pervasive, we felt that any networking textbook must have a significant focus on the Internet, and thus this phrase was somewhat unnecessary. We continue to use the Internet’s architecture and protocols as primary vehicles for studying fundamental computer networking concepts. Of course, we also include concepts and protocols from other network architectures. But the spotlight is clearly on the Internet, a fact reflected in our organizing the book around the Internet’s five-layer architecture: the application, transport, network, link, and physical layers. Another benefit of spotlighting the Internet is that most computer science and electrical engineering students are eager to learn about the Internet and its protocols. They know that the Internet has been a revolutionary and disruptive technology and can see that it is profoundly changing our world. Given the enormous relevance of the Internet, students are naturally curious about what is “under the hood.” Thus, it is easy for an instructor to get students excited about basic principles when using the Internet as the guiding focus. Teaching Networking Principles Two of the unique features of the book—its top-down approach and its focus on the Internet—have appeared in the titles of our book. If we could have squeezed a third A01_KURO3599_07_GE_FM.indd 10 10/08/16 1:16 PM Preface 11 phrase into the subtitle, it would have contained the word principles. The field of networking is now mature enough that a number of fundamentally important issues can be identified. For example, in the transport layer, the fundamental issues include reliable communication over an unreliable network layer, connection establishment/ teardown and handshaking, congestion and flow control, and multiplexing. Three fun- damentally important network-layer issues are determining “good” paths between two routers, interconnecting a large number of heterogeneous networks, and managing the complexity of a modern network. In the link layer, a fundamental problem is sharing a multiple access channel. In network security, techniques for providing confidentiality, authentication, and message integrity are all based on cryptographic fundamentals. This text identifies fundamental networking issues and studies approaches towards addressing these issues. The student learning these principles will gain knowledge with a long “shelf life”—long after today’s network standards and protocols have become obsolete, the principles they embody will remain important and relevant. We believe that the combination of using the Internet to get the student’s foot in the door and then emphasizing fundamental issues and solution approaches will allow the stu- dent to quickly understand just about any networking technology. The Website Each new copy of this textbook includes twelve months of access to a Companion Website for all book readers at http://www.pearsonglobaleditions.com/kurose, which includes: Interactive learning material. The book’s Companion Website contains VideoNotes—video presentations of important topics throughout the book done by the authors, as well as walkthroughs of solutions to problems similar to those at the end of the chapter. We’ve seeded the Web site with VideoNotes and online problems for chapters 1 through 5 and will continue to actively add and update this material over time. As in earlier editions, the Web site contains the interactive Java applets that animate many key networking concepts. The site also has interactive quizzes that permit students to check their basic understanding of the subject matter. Professors can integrate these interactive features into their lectures or use them as mini labs. Additional technical material. As we have added new material in each edition of our book, we’ve had to remove coverage of some existing topics to keep the book at manageable length. For example, to make room for the new m aterial in this edition, we’ve removed material on FTP, distributed hash tables, and m ulticasting, Material that appeared in earlier editions of the text is still of i nterest, and thus can be found on the book’s Web site. Programming assignments. The Web site also provides a number of detailed programming assignments, which include building a multithreaded Web s erver, A01_KURO3599_07_GE_FM.indd 11 10/08/16 1:16 PM 12 Preface building an e-mail client with a GUI interface, programming the sender and receiver sides of a reliable data transport protocol, programming a distributed routing algorithm, and more. Wireshark labs. One’s understanding of network protocols can be greatly deepened by seeing them in action. The Web site provides numerous Wireshark assignments that enable students to actually observe the sequence of messages exchanged between two protocol entities. The Web site includes separate Wire- shark labs on HTTP, DNS, TCP, UDP, IP, ICMP, Ethernet, ARP, WiFi, SSL, and on tracing all protocols involved in satisfying a request to fetch a Web page. We’ll continue to add new labs over time. In addition to the Companion Website, the authors maintain a public Web site, http://gaia.cs.umass.edu/kurose_ross/interactive, containing interactive exercises that create (and present solutions for) problems similar to selected end-of-chapter problems. Since students can generate (and view solutions for) an unlimited number of similar problem instances, they can work until the material is truly mastered. Pedagogical Features We have each been teaching computer networking for more than 30 years. Together, we bring more than 60 years of teaching experience to this text, during which time we have taught many thousands of students. We have also been active researchers in computer networking during this time. (In fact, Jim and Keith first met each other as master’s students in a computer networking course taught by Mischa Schwartz in 1979 at Columbia University.) We think all this gives us a good perspective on where networking has been and where it is likely to go in the future. Nevertheless, we have resisted temptations to bias the material in this book towards our own pet research projects. We figure you can visit our personal Web sites if you are interested in our research. Thus, this book is about modern computer networking—it is about contemporary protocols and technologies as well as the underlying principles behind these protocols and technologies. We also believe that learning (and teaching!) about networking can be fun. A sense of humor, use of analogies, and real-world examples in this book will hopefully make this material more fun. Supplements for Instructors We provide a complete supplements package to aid instructors in teaching this course. This material can be accessed from Pearson’s Instructor Resource Center (http://www.pearsonglobaleditions.com/kurose). Visit the Instructor Resource Cen- ter for information about accessing these instructor’s supplements. A01_KURO3599_07_GE_FM.indd 12 10/08/16 1:16 PM Preface 13 PowerPoint® slides. We provide PowerPoint slides for all nine chapters. The slides have been completely updated with this seventh edition. The slides cover each chapter in detail. They use graphics and animations (rather than relying only on monotonous text bullets) to make the slides interesting and visually appealing. We provide the original PowerPoint slides so you can customize them to best suit your own teaching needs. Some of these slides have been contributed by other instructors who have taught from our book. Homework solutions. We provide a solutions manual for the homework prob- lems in the text, programming assignments, and Wireshark labs. As noted earlier, we’ve introduced many new homework problems in the first six chapters of the book. Chapter Dependencies The first chapter of this text presents a self-contained overview of computer net- working. Introducing many key concepts and terminology, this chapter sets the stage for the rest of the book. All of the other chapters directly depend on this first chapter. After completing Chapter 1, we recommend instructors cover Chapters 2 through 6 in sequence, following our top-down philosophy. Each of these five chapters lever- ages material from the preceding chapters. After completing the first six chapters, the instructor has quite a bit of flexibility. There are no interdependencies among the last three chapters, so they can be taught in any order. However, each of the last three chapters depends on the material in the first six chapters. Many instructors first teach the first six chapters and then teach one of the last three chapters for “dessert.” One Final Note: We’d Love to Hear from You We encourage students and instructors to e-mail us with any comments they might have about our book. It’s been wonderful for us to hear from so many instructors and students from around the world about our first five editions. We’ve incorporated many of these suggestions into later editions of the book. We also encourage instruc- tors to send us new homework problems (and solutions) that would complement the current homework problems. We’ll post these on the instructor-only portion of the Web site. We also encourage instructors and students to create new Java applets that illustrate the concepts and protocols in this book. If you have an applet that you think would be appropriate for this text, please submit it to us. If the applet (including nota- tion and terminology) is appropriate, we’ll be happy to include it on the text’s Web site, with an appropriate reference to the applet’s authors. So, as the saying goes, “Keep those cards and letters coming!” Seriously, please do continue to send us interesting URLs, point out typos, disagree with any of our A01_KURO3599_07_GE_FM.indd 13 10/08/16 1:16 PM 14 Preface claims, and tell us what works and what doesn’t work. Tell us what you think should or shouldn’t be included in the next edition. Send your e-mail to [email protected] and [email protected]. Acknowledgments Since we began writing this book in 1996, many people have given us invaluable help and have been influential in shaping our thoughts on how to best organize and teach a networking course. We want to say A BIG THANKS to everyone who has helped us from the earliest first drafts of this book, up to this seventh edition. We are also very thankful to the many hundreds of readers from around the world—students, faculty, practitioners—who have sent us thoughts and comments on earlier editions of the book and suggestions for future editions of the book. Special thanks go out to: Al Aho (Columbia University) Hisham Al-Mubaid (University of Houston-Clear Lake) Pratima Akkunoor (Arizona State University) Paul Amer (University of Delaware) Shamiul Azom (Arizona State University) Lichun Bao (University of California at Irvine) Paul Barford (University of Wisconsin) Bobby Bhattacharjee (University of Maryland) Steven Bellovin (Columbia University) Pravin Bhagwat (Wibhu) Supratik Bhattacharyya (previously at Sprint) Ernst Biersack (Eurécom Institute) Shahid Bokhari (University of Engineering & Technology, Lahore) Jean Bolot (Technicolor Research) Daniel Brushteyn (former University of Pennsylvania student) Ken Calvert (University of Kentucky) Evandro Cantu (Federal University of Santa Catarina) Jeff Case (SNMP Research International) Jeff Chaltas (Sprint) Vinton Cerf (Google) Byung Kyu Choi (Michigan Technological University) Bram Cohen (BitTorrent, Inc.) Constantine Coutras (Pace University) John Daigle (University of Mississippi) Edmundo A. de Souza e Silva (Federal University of Rio de Janeiro) Philippe Decuetos (Eurécom Institute) Christophe Diot (Technicolor Research) Prithula Dhunghel (Akamai) A01_KURO3599_07_GE_FM.indd 14 10/08/16 1:16 PM Preface 15 Deborah Estrin (University of California, Los Angeles) Michalis Faloutsos (University of California at Riverside) Wu-chi Feng (Oregon Graduate Institute) Sally Floyd (ICIR, University of California at Berkeley) Paul Francis (Max Planck Institute) David Fullager (Netflix) Lixin Gao (University of Massachusetts) JJ Garcia-Luna-Aceves (University of California at Santa Cruz) Mario Gerla (University of California at Los Angeles) David Goodman (NYU-Poly) Yang Guo (Alcatel/Lucent Bell Labs) Tim Griffin (Cambridge University) Max Hailperin (Gustavus Adolphus College) Bruce Harvey (Florida A&M University, Florida State University) Carl Hauser (Washington State University) Rachelle Heller (George Washington University) Phillipp Hoschka (INRIA/W3C) Wen Hsin (Park University) Albert Huang (former University of Pennsylvania student) Cheng Huang (Microsoft Research) Esther A. Hughes (Virginia Commonwealth University) Van Jacobson (Xerox PARC) Pinak Jain (former NYU-Poly student) Jobin James (University of California at Riverside) Sugih Jamin (University of Michigan) Shivkumar Kalyanaraman (IBM Research, India) Jussi Kangasharju (University of Helsinki) Sneha Kasera (University of Utah) Parviz Kermani (formerly of IBM Research) Hyojin Kim (former University of Pennsylvania student) Leonard Kleinrock (University of California at Los Angeles) David Kotz (Dartmouth College) Beshan Kulapala (Arizona State University) Rakesh Kumar (Bloomberg) Miguel A. Labrador (University of South Florida) Simon Lam (University of Texas) Steve Lai (Ohio State University) Tom LaPorta (Penn State University) Tim-Berners Lee (World Wide Web Consortium) Arnaud Legout (INRIA) Lee Leitner (Drexel University) Brian Levine (University of Massachusetts) Chunchun Li (former NYU-Poly student) A01_KURO3599_07_GE_FM.indd 15 10/08/16 1:16 PM 16 Preface Yong Liu (NYU-Poly) William Liang (former University of Pennsylvania student) Willis Marti (Texas A&M University) Nick McKeown (Stanford University) Josh McKinzie (Park University) Deep Medhi (University of Missouri, Kansas City) Bob Metcalfe (International Data Group) Sue Moon (KAIST) Jenni Moyer (Comcast) Erich Nahum (IBM Research) Christos Papadopoulos (Colorado Sate University) Craig Partridge (BBN Technologies) Radia Perlman (Intel) Jitendra Padhye (Microsoft Research) Vern Paxson (University of California at Berkeley) Kevin Phillips (Sprint) George Polyzos (Athens University of Economics and Business) Sriram Rajagopalan (Arizona State University) Ramachandran Ramjee (Microsoft Research) Ken Reek (Rochester Institute of Technology) Martin Reisslein (Arizona State University) Jennifer Rexford (Princeton University) Leon Reznik (Rochester Institute of Technology) Pablo Rodrigez (Telefonica) Sumit Roy (University of Washington) Dan Rubenstein (Columbia University) Avi Rubin (Johns Hopkins University) Douglas Salane (John Jay College) Despina Saparilla (Cisco Systems) John Schanz (Comcast) Henning Schulzrinne (Columbia University) Mischa Schwartz (Columbia University) Ardash Sethi (University of Delaware) Harish Sethu (Drexel University) K. Sam Shanmugan (University of Kansas) Prashant Shenoy (University of Massachusetts) Clay Shields (Georgetown University) Subin Shrestra (University of Pennsylvania) Bojie Shu (former NYU-Poly student) Mihail L. Sichitiu (NC State University) Peter Steenkiste (Carnegie Mellon University) Tatsuya Suda (University of California at Irvine) Kin Sun Tam (State University of New York at Albany) A01_KURO3599_07_GE_FM.indd 16 10/08/16 1:16 PM Preface 17 Don Towsley (University of Massachusetts) David Turner (California State University, San Bernardino) Nitin Vaidya (University of Illinois) Michele Weigle (Clemson University) David Wetherall (University of Washington) Ira Winston (University of Pennsylvania) Di Wu (Sun Yat-sen University) Shirley Wynn (NYU-Poly) Raj Yavatkar (Intel) Yechiam Yemini (Columbia University) Dian Yu (NYU Shanghai) Ming Yu (State University of New York at Binghamton) Ellen Zegura (Georgia Institute of Technology) Honggang Zhang (Suffolk University) Hui Zhang (Carnegie Mellon University) Lixia Zhang (University of California at Los Angeles) Meng Zhang (former NYU-Poly student) Shuchun Zhang (former University of Pennsylvania student) Xiaodong Zhang (Ohio State University) ZhiLi Zhang (University of Minnesota) Phil Zimmermann (independent consultant) Mike Zink (University of Massachusetts) Cliff C. Zou (University of Central Florida) We also want to thank the entire Pearson team—in particular, Matt Goldstein and Joanne Manning—who have done an absolutely outstanding job on this seventh edition (and who have put up with two very finicky authors who seem congenitally unable to meet deadlines!). Thanks also to our artists, Janet Theurer and Patrice Rossi Calkin, for their work on the beautiful figures in this and earlier editions of our book, and to Katie Ostler and her team at Cenveo for their wonderful production work on this edition. Finally, a most special thanks go to our previous two editors at Addison-Wesley—Michael Hirsch and Susan Hartman. This book would not be what it is (and may well not have been at all) without their graceful management, constant encouragement, nearly infinite patience, good humor, and perseverance. A01_KURO3599_07_GE_FM.indd 17 10/08/16 1:16 PM 18 Preface Acknowledgments for the Global Edition Pearson would like to thank and acknowledge the following people for their contributions to the Global Edition. Contributors Mario De Francesco (Aalto University) Reviewers Arif Ahmed (National Institute of Technology Silchar) Kaushik Goswami (St. Xavier’s College Kolkata) Moumita Mitra Manna (Bangabasi College) A01_KURO3599_07_GE_FM.indd 18 10/08/16 1:16 PM Table of Contents Chapter 1 Computer Networks and the Internet 29 1.1 What Is the Internet? 30 1.1.1 A Nuts-and-Bolts Description 30 1.1.2 A Services Description 33 1.1.3 What Is a Protocol? 35 1.2 The Network Edge 37 1.2.1 Access Networks 40 1.2.2 Physical Media 46 1.3 The Network Core 49 1.3.1 Packet Switching 51 1.3.2 Circuit Switching 55 1.3.3 A Network of Networks 59 1.4 Delay, Loss, and Throughput in Packet-Switched Networks 63 1.4.1 Overview of Delay in Packet-Switched Networks 63 1.4.2 Queuing Delay and Packet Loss 67 1.4.3 End-to-End Delay 69 1.4.4 Throughput in Computer Networks 71 1.5 Protocol Layers and Their Service Models 75 1.5.1 Layered Architecture 75 1.5.2 Encapsulation 81 1.6 Networks Under Attack 83 1.7 History of Computer Networking and the Internet 87 1.7.1 The Development of Packet Switching: 1961–1972 87 1.7.2 Proprietary Networks and Internetworking: 1972–1980 88 1.7.3 A Proliferation of Networks: 1980–1990 90 1.7.4 The Internet Explosion: The 1990s 91 1.7.5 The New Millennium 92 1.8 Summary 93 Homework Problems and Questions 95 Wireshark Lab 105 Interview: Leonard Kleinrock 107 19 A01_KURO3599_07_GE_FM.indd 19 10/08/16 1:16 PM 20 Table of Contents Chapter 2 Application Layer 111 2.1 Principles of Network Applications 112 2.1.1 Network Application Architectures 114 2.1.2 Processes Communicating 116 2.1.3 Transport Services Available to Applications 118 2.1.4 Transport Services Provided by the Internet 121 2.1.5 Application-Layer Protocols 124 2.1.6 Network Applications Covered in This Book 125 2.2 The Web and HTTP 126 2.2.1 Overview of HTTP 126 2.2.2 Non-Persistent and Persistent Connections 128 2.2.3 HTTP Message Format 131 2.2.4 User-Server Interaction: Cookies 136 2.2.5 Web Caching 138 2.3 Electronic Mail in the Internet 144 2.3.1 SMTP 146 2.3.2 Comparison with HTTP 149 2.3.3 Mail Message Formats 149 2.3.4 Mail Access Protocols 150 2.4 DNS—The Internet’s Directory Service 154 2.4.1 Services Provided by DNS 155 2.4.2 Overview of How DNS Works 157 2.4.3 DNS Records and Messages 163 2.5 Peer-to-Peer Applications 168 2.5.1 P2P File Distribution 168 2.6 Video Streaming and Content Distribution Networks 175 2.6.1 Internet Video 176 2.6.2 HTTP Streaming and DASH 176 2.6.3 Content Distribution Networks 177 2.6.4 Case Studies: Netflix, YouTube, and Kankan 181 2.7 Socket Programming: Creating Network Applications 185 2.7.1 Socket Programming with UDP 187 2.7.2 Socket Programming with TCP 192 2.8 Summary 198 Homework Problems and Questions 199 Socket Programming Assignments 208 Wireshark Labs: HTTP, DNS 210 Interview: Marc Andreessen 212 A01_KURO3599_07_GE_FM.indd 20 10/08/16 1:16 PM Table of Contents 21 Chapter 3 Transport Layer 215 3.1 Introduction and Transport-Layer Services 216 3.1.1 Relationship Between Transport and Network Layers 216 3.1.2 Overview of the Transport Layer in the Internet 219 3.2 Multiplexing and Demultiplexing 221 3.3 Connectionless Transport: UDP 228 3.3.1 UDP Segment Structure 232 3.3.2 UDP Checksum 232 3.4 Principles of Reliable Data Transfer 234 3.4.1 Building a Reliable Data Transfer Protocol 236 3.4.2 Pipelined Reliable Data Transfer Protocols 245 3.4.3 Go-Back-N (GBN) 249 3.4.4 Selective Repeat (SR) 254 3.5 Connection-Oriented Transport: TCP 261 3.5.1 The TCP Connection 261 3.5.2 TCP Segment Structure 264 3.5.3 Round-Trip Time Estimation and Timeout 269 3.5.4 Reliable Data Transfer 272 3.5.5 Flow Control 280 3.5.6 TCP Connection Management 283 3.6 Principles of Congestion Control 289 3.6.1 The Causes and the Costs of Congestion 289 3.6.2 Approaches to Congestion Control 296 3.7 TCP Congestion Control 297 3.7.1 Fairness 307 3.7.2 Explicit Congestion Notification (ECN): Network-assisted Congestion Control 310 3.8 Summary 312 Homework Problems and Questions 314 Programming Assignments 329 Wireshark Labs: Exploring TCP, UDP 330 Interview: Van Jacobson 331 Chapter 4 The Network Layer: Data Plane 333 4.1 Overview of Network Layer 334 4.1.1 Forwarding and Routing: The Network Data and Control Planes 334 4.1.2 Network Service Models 339 4.2 What’s Inside a Router? 341 4.2.1 Input Port Processing and Destination-Based Forwarding 344 4.2.2 Switching 347 4.2.3 Output Port Processing 349 A01_KURO3599_07_GE_FM.indd 21 10/08/16 1:16 PM 22 Table of Contents 4.2.4 Where Does Queuing Occur? 349 4.2.5 Packet Scheduling 353 4.3 The Internet Protocol (IP): IPv4, Addressing, IPv6, and More 357 4.3.1 IPv4 Datagram Format 358 4.3.2 IPv4 Datagram Fragmentation 360 4.3.3 IPv4 Addressing 362 4.3.4 Network Address Translation (NAT) 373 4.3.5 IPv6 376 4.4 Generalized Forwarding and SDN 382 4.4.1 Match 384 4.4.2 Action 386 4.4.3 OpenFlow Examples of Match-plus-action in Action 386 4.5 Summary 389 Homework Problems and Questions 389 Wireshark Lab 398 Interview: Vinton G. Cerf 399 Chapter 5 The Network Layer: Control Plane 401 5.1 Introduction 402 5.2 Routing Algorithms 404 5.2.1 The Link-State (LS) Routing Algorithm 407 5.2.2 The Distance-Vector (DV) Routing Algorithm 412 5.3 Intra-AS Routing in the Internet: OSPF 419 5.4 Routing Among the ISPs: BGP 423 5.4.1 The Role of BGP 423 5.4.2 Advertising BGP Route Information 424 5.4.3 Determining the Best Routes 426 5.4.4 IP-Anycast 430 5.4.5 Routing Policy 431 5.4.6 Putting the Pieces Together: Obtaining Internet Presence 434 5.5 The SDN Control Plane 435 5.5.1 The SDN Control Plane: SDN Controller and SDN Control Applications 438 5.5.2 OpenFlow Protocol 440 5.5.3 Data and Control Plane Interaction: An Example 442 5.5.4 SDN: Past and Future 443 5.6 ICMP: The Internet Control Message Protocol 447 5.7 Network Management and SNMP 449 5.7.1 The Network Management Framework 450 5.7.2 The Simple Network Management Protocol (SNMP) 452 5.8 Summary 454 A01_KURO3599_07_GE_FM.indd 22 10/08/16 1:16 PM Table of Contents 23 Homework Problems and Questions 455 Socket Programming Assignment 461 Programming Assignment 462 Wireshark Lab 463 Interview: Jennifer Rexford 464 Chapter 6 The Link Layer and LANs 467 6.1 Introduction to the Link Layer 468 6.1.1 The Services Provided by the Link Layer 470 6.1.2 Where Is the Link Layer Implemented? 471 6.2 Error-Detection and -Correction Techniques 472 6.2.1 Parity Checks 474 6.2.2 Checksumming Methods 476 6.2.3 Cyclic Redundancy Check (CRC) 477 6.3 Multiple Access Links and Protocols 479 6.3.1 Channel Partitioning Protocols 481 6.3.2 Random Access Protocols 483 6.3.3 Taking-Turns Protocols 492 6.3.4 DOCSIS: The Link-Layer Protocol for Cable Internet Access 493 6.4 Switched Local Area Networks 495 6.4.1 Link-Layer Addressing and ARP 496 6.4.2 Ethernet 502 6.4.3 Link-Layer Switches 509 6.4.4 Virtual Local Area Networks (VLANs) 515 6.5 Link Virtualization: A Network as a Link Layer 519 6.5.1 Multiprotocol Label Switching (MPLS) 520 6.6 Data Center Networking 523 6.7 Retrospective: A Day in the Life of a Web Page Request 528 6.7.1 Getting Started: DHCP, UDP, IP, and Ethernet 528 6.7.2 Still Getting Started: DNS and ARP 530 6.7.3 Still Getting Started: Intra-Domain Routing to the DNS Server 531 6.7.4 Web Client-Server Interaction: TCP and HTTP 532 6.8 Summary 534 Homework Problems and Questions 535 Wireshark Lab 543 Interview: Simon S. Lam 544 Chapter 7 Wireless and Mobile Networks 547 7.1 Introduction 548 7.2 Wireless Links and Network Characteristics 553 7.2.1 CDMA 556 A01_KURO3599_07_GE_FM.indd 23 10/08/16 1:16 PM 24 Table of Contents 7.3 WiFi: 802.11 Wireless LANs 560 7.3.1 The 802.11 Architecture 561 7.3.2 The 802.11 MAC Protocol 565 7.3.3 The IEEE 802.11 Frame 570 7.3.4 Mobility in the Same IP Subnet 574 7.3.5 Advanced Features in 802.11 575 7.3.6 Personal Area Networks: Bluetooth and Zigbee 576 7.4 Cellular Internet Access 579 7.4.1 An Overview of Cellular Network Architecture 579 7.4.2 3G Cellular Data Networks: Extending the Internet to Cellular Subscribers 582 7.4.3 On to 4G: LTE 585 7.5 Mobility Management: Principles 588 7.5.1 Addressing 590 7.5.2 Routing to a Mobile Node 592 7.6 Mobile IP 598 7.7 Managing Mobility in Cellular Networks 602 7.7.1 Routing Calls to a Mobile User 604 7.7.2 Handoffs in GSM 605 7.8 Wireless and Mobility: Impact on Higher-Layer Protocols 608 7.9 Summary 610 Homework Problems and Questions 611 Wireshark Lab 616 Interview: Deborah Estrin 617 Chapter 8 Security in Computer Networks 621 8.1 What Is Network Security? 622 8.2 Principles of Cryptography 624 8.2.1 Symmetric Key Cryptography 626 8.2.2 Public Key Encryption 632 8.3 Message Integrity and Digital Signatures 638 8.3.1 Cryptographic Hash Functions 639 8.3.2 Message Authentication Code 641 8.3.3 Digital Signatures 642 8.4 End-Point Authentication 649 8.4.1 Authentication Protocol ap1.0 650 8.4.2 Authentication Protocol ap2.0 650 8.4.3 Authentication Protocol ap3.0 651 8.4.4 Authentication Protocol ap3.1 651 8.4.5 Authentication Protocol ap4.0 652 A01_KURO3599_07_GE_FM.indd 24 10/08/16 1:16 PM Table of Contents 25 8.5 Securing E-Mail 654 8.5.1 Secure E-Mail 655 8.5.2 PGP 658 8.6 Securing TCP Connections: SSL 659 8.6.1 The Big Picture 660 8.6.2 A More Complete Picture 663 8.7 Network-Layer Security: IPsec and Virtual Private Networks 665 8.7.1 IPsec and Virtual Private Networks (VPNs) 666 8.7.2 The AH and ESP Protocols 668 8.7.3 Security Associations 668 8.7.4 The IPsec Datagram 669 8.7.5 IKE: Key Management in IPsec 673 8.8 Securing Wireless LANs 674 8.8.1 Wired Equivalent Privacy (WEP) 674 8.8.2 IEEE 802.11i 676 8.9 Operational Security: Firewalls and Intrusion Detection Systems 679 8.9.1 Firewalls 679 8.9.2 Intrusion Detection Systems 687 8.10 Summary 690 Homework Problems and Questions 692 Wireshark Lab 700 IPsec Lab 700 Interview: Steven M. Bellovin 701 Chapter 9 Multimedia Networking 703 9.1 Multimedia Networking Applications 704 9.1.1 Properties of Video 704 9.1.2 Properties of Audio 705 9.1.3 Types of Multimedia Network Applications 707 9.2 Streaming Stored Video 709 9.2.1 UDP Streaming 711 9.2.2 HTTP Streaming 712 9.3 Voice-over-IP 716 9.3.1 Limitations of the Best-Effort IP Service 716 9.3.2 Removing Jitter at the Receiver for Audio 719 9.3.3 Recovering from Packet Loss 722 9.3.4 Case Study: VoIP with Skype 725 9.4 Protocols for Real-Time Conversational Applications 728 9.4.1 RTP 728 9.4.2 SIP 731 A01_KURO3599_07_GE_FM.indd 25 10/08/16 1:16 PM 26 Table of Contents 9.5 Network Support for Multimedia 737 9.5.1 Dimensioning Best-Effort Networks 739 9.5.2 Providing Multiple Classes of Service 740 9.5.3 Diffserv 747 9.5.4 Per-Connection Quality-of-Service (QoS) Guarantees: Resource Reservation and Call Admission 751 9.6 Summary 754 Homework Problems and Questions 755 Programming Assignment 763 Interview: Henning Schulzrinne 765 References 769 Index 811 A01_KURO3599_07_GE_FM.indd 26 20/08/16 2:37 PM COMPUTER SEVENTH EDITION Global Edition NETWORKING A Top-Down Approach A01_KURO3599_07_GE_FM.indd 27 22/08/16 5:12 PM This page intentionally left blank A01_HANL4898_08_SE_FM.indd 2 24/12/14 12:49 PM Chapter 1 Computer Networks and the Internet Today’s Internet is arguably the largest engineered system ever created by m ankind, with hundreds of millions of connected computers, communication links, and switches; with billions of users who connect via laptops, tablets, and smartphones; and with an array of new Internet-connected “things” including game consoles, sur- veillance systems, watches, eye glasses, thermostats, body scales, and cars. Given that the Internet is so large and has so many diverse components and uses, is there any hope of understanding how it works? Are there guiding principles and struc- ture that can provide a foundation for understanding such an amazingly large and complex system? And if so, is it possible that it actually could be both interesting and fun to learn about computer networks? Fortunately, the answer to all of these questions is a resounding YES! Indeed, it’s our aim in this book to provide you with a modern introduction to the dynamic field of computer networking, giving you the principles and practical insights you’ll need to understand not only today’s networks, but tomorrow’s as well. This first chapter presents a broad overview of computer networking and the Internet. Our goal here is to paint a broad picture and set the context for the rest of this book, to see the forest through the trees. We’ll cover a lot of ground in this introductory chapter and discuss a lot of the pieces of a computer network, without losing sight of the big picture. We’ll structure our overview of computer networks in this chapter as follows. After introducing some basic terminology and concepts, we’ll first examine the basic hardware and software components that make up a network. We’ll begin at the net- work’s edge and look at the end systems and network applications running in the network. We’ll then explore the core of a computer network, examining the links 29 M01_KURO3599_07_GE_C01.indd 29 09/08/16 1:53 PM 30 Chapter 1 Computer Networks and the Internet and the switches that transport data, as well as the access networks and physical media that connect end systems to the network core. We’ll learn that the Internet is a network of networks, and we’ll learn how these networks connect with each other. After having completed this overview of the edge and core of a computer net- work, we’ll take the broader and more abstract view in the second half of this chap- ter. We’ll examine delay, loss, and throughput of data in a computer network and provide simple quantitative models for end-to-end throughput and delay: models that take into account transmission, propagation, and queuing delays. We’ll then introduce some of the key architectural principles in computer networking, namely, protocol layering and service models. We’ll also learn that computer networks are vulnerable to many different types of attacks; we’ll survey some of these attacks and consider how computer networks can be made more secure. Finally, we’ll close this chapter with a brief history of computer networking. 1.1 What Is the Internet? In this book, we’ll use the public Internet, a specific computer network, as our prin- cipal vehicle for discussing computer networks and their protocols. But what is the Internet? There are a couple of ways to answer this question. First, we can describe the nuts and bolts of the Internet, that is, the basic hardware and software components that make up the Internet. Second, we can describe the Internet in terms of a network- ing infrastructure that provides services to distributed applications. Let’s begin with the nuts-and-bolts description, using Figure 1.1 to illustrate our discussion. 1.1.1 A Nuts-and-Bolts Description The Internet is a computer network that interconnects billions of computing devices throughout the world. Not too long ago, these computing devices were primarily traditional desktop PCs, Linux workstations, and so-called servers that store and transmit information such as Web pages and e-mail messages. Increasingly, how- ever, nontraditional Internet “things” such as laptops, smartphones, tablets, TVs, gaming consoles, thermostats, home security systems, home appliances, watches, eye glasses, cars, traffic control systems and more are being connected to the Inter- net. Indeed, the term computer network is beginning to sound a bit dated, given the many nontraditional devices that are being hooked up to the Internet. In Internet jargon, all of these devices are called hosts or end systems. By some estimates, in 2015 there were about 5 billion devices connected to the Internet, and the number will reach 25 billion by 2020 [Gartner 2014]. It is estimated that in 2015 there were over 3.2 billion Internet users worldwide, approximately 40% of the world population [ITU 2015]. M01_KURO3599_07_GE_C01.indd 30 09/08/16 1:53 PM 1.1 What Is the Internet? 31 National or Global ISP Mobile Network Local or Regional ISP Home Network Enterprise Network Key: Host Server Mobile Router Link-layer Modem Base Smartphone Cell phone (= end system) switch station tower Tablet Traffic light Thermostat Fridge Flat computer Keyboard monitor Figure 1.1 ♦ Some pieces of the Internet M01_KURO3599_07_GE_C01.indd 31 09/08/16 1:53 PM 32 Chapter 1 Computer Networks and the Internet End systems are connected together by a network of communication links and packet switches. We’ll see in Section 1.2 that there are many types of communica- tion links, which are made up of different types of physical media, including coaxial cable, copper wire, optical fiber, and radio spectrum. Different links can transmit data at different rates, with the transmission rate of a link measured in bits/second. When one end system has data to send to another end system, the sending end system segments the data and adds header bytes to each segment. The resulting packages of information, known as packets in the jargon of computer networks, are then sent through the network to the destination end system, where they are reassembled into the original data. A packet switch takes a packet arriving on one of its incoming communication links and forwards that packet on one of its outgoing communication links. Packet switches come in many shapes and flavors, but the two most prominent types in today’s Internet are routers and link-layer switches. Both types of switches forward packets toward their ultimate destinations. Link-layer switches are typically used in access networks, while routers are typically used in the network core. The sequence of communication links and packet switches traversed by a packet from the sending end system to the receiving end system is known as a route or path through the network. Cisco predicts annual global IP traffic will pass the zettabyte (1021 bytes) threshold by the end of 2016, and will reach 2 zettabytes per year by 2019 [Cisco VNI 2015]. Packet-switched networks (which transport packets) are in many ways similar to transportation networks of highways, roads, and intersections (which transport vehicles). Consider, for example, a factory that needs to move a large amount of cargo to some destination warehouse located thousands of kilometers away. At the factory, the cargo is segmented and loaded into a fleet of trucks. Each of the trucks then independently travels through the network of highways, roads, and intersections to the destination warehouse. At the destination warehouse, the cargo is unloaded and grouped with the rest of the cargo arriving from the same shipment. Thus, in many ways, packets are analogous to trucks, communication links are analogous to highways and roads, packet switches are analogous to intersections, and end systems are analogous to buildings. Just as a truck takes a path through the transportation network, a packet takes a path through a computer network. End systems access the Internet through Internet Service Providers (ISPs), including residential ISPs such as local cable or telephone companies; corporate ISPs; university ISPs; ISPs that provide WiFi access in airports, hotels, coffee shops, and other public places; and cellular data ISPs, providing mobile access to our smartphones and other devices. Each ISP is in itself a network of packet switches and communication links. ISPs provide a variety of types of network access to the end systems, including residential broadband access such as cable modem or DSL, high-speed local area network access, and mobile wireless access. ISPs also provide Internet access to content providers, connecting Web sites and video servers directly to the Internet. The Internet is all about connecting end systems to each other, so the M01_KURO3599_07_GE_C01.indd 32 09/08/16 1:53 PM 1.1 What Is the Internet? 33 ISPs that provide access to end systems must also be interconnected. These lower- tier ISPs are interconnected through national and international upper-tier ISPs such as Level 3 Communications, AT&T, Sprint, and NTT. An upper-tier ISP consists of high-speed routers interconnected with high-speed fiber-optic links. Each ISP net- work, whether upper-tier or lower-tier, is managed independently, runs the IP pro- tocol (see below), and conforms to certain naming and address conventions. We’ll examine ISPs and their interconnection more closely in Section 1.3. End systems, packet switches, and other pieces of the Internet run protocols that control the sending and receiving of information within the Internet. The Transmission Control Protocol (TCP) and the Internet Protocol (IP) are two of the most impor- tant protocols in the Internet. The IP protocol specifies the format of the packets that are sent and received among routers and end systems. The Internet’s principal protocols are collectively known as TCP/IP. We’ll begin looking into protocols in this introductory chapter. But that’s just a start—much of this book is concerned with computer network protocols! Given the importance of protocols to the Internet, it’s important that everyone agree on what each and every protocol does, so that people can create systems and products that interoperate. This is where standards come into play. Internet standards are developed by the Internet Engineering Task Force (IETF) [IETF 2016]. The IETF standards documents are called requests for comments (RFCs). RFCs started out as general requests for comments (hence the name) to resolve network and protocol design problems that faced the precursor to the Internet