throbber
p-Fe-icerscjn ancJ 8:11:26: 5. Davie:-
`
`“"13:ng—
`
`MIT 2003
`MIT 2003
`Limelight v. MIT
`Limelight v. MIT we ——:-—————
`IPR2017-00249
`IPR2017—00249
`
`FiFth Edition
`
`1
`
`

`

`
`
`'‘T‘‘ILflfim
`
`-~—-.-Ii(-I.
`
`..
`
`'fl.l-
`
`-n'
`
`1:
`
`i l l
`
`Acquiring Editor: Rick Adams
`Development Editor: Nate McFadden
`Project Manager: Paul Gottehrer
`Designer: Dennis Schaefer
`
`Morgan Kaufmann is an imprint of Elsevier
`30 Corporate Drive, Suite 400, Burlington, MA 01803, USA
`
`© 2012 Elsevier, Inc. All rights reserved. '
`
`No part of this publication may be reproduced or transmitted in any form or by any means, electronic or mechanical,
`including photocopying, recording, or any information storage and retrieval system, without permission in writing
`from the publisher. Details on how to seek permission, further information about the Publisher’s permissions policies
`and our arrangements with organizations such as the Copyright Clearance Center and the Copyright Licensing
`Agency, can be found at our website: wwwelsevier. com/permissions.
`
`This book and the individual contributions contained in it are protected under copyright by the Publisher (other than
`as may be noted herein).
`
`Notices
`Knowledge and best practice in this field are constantly changing. As new research and experience broaden our
`understanding, changes in research methods or professional practices, may become necessary. Practitioners and
`researchers must always rely on their own experience and knowledge in evaluating and using any information or
`methods described herein. In using such information or methods they should be mindful of their own safety and the
`safety of others, including parties for whom they have a professional responsibility.
`
`To the fullest extent of the law, neither the Publisher nor the authors, contributors, or editors, assume any liability for
`any injury and/or damage to persons or property as a matter of products liability, negligence or otherwise, or from
`any use or operation of any methods, products, instructions, or ideas contained in the material herein.
`
`library of Congress Cataloging-in-Publication Data
`Peterson, Larry L.
`Computer networks : a syStems approach / Larry L. Peterson and Bruce S. Davie. — 5th ed.
`p. cm. — (The Morgan Kaufmann series in networking)
`Includes bibliographical references.
`ISBN 978-0-12-385059— 1 (hardback)
`1. Computer networks. I. Davie, Bruce S. 11. Title.
`TK5105.5.P479 2011
`004.6—dc22
`
`201 1000786
`
`British Library Cataloguing-in-Publication Data
`A catalogue record for this book is available from the British Library.
`
`ISBN: 978-0-12-385059—1
`
`
`For information on all Morgan Kaufrnann publican'ons
`
`. visit our website at www. mkp.com
`
`Typeset by: diacriTech, India
`
`Printed in the United States of America
`1213141516 10987654321
`
`
`
`Working together to grow
`libraries 1n developing countries
`www.clsevier.com I www.bookaid.org | www.5abre.org
`Sabre. Foundation internatirjnal
`EL-SE\=’iE,R
`300K Am
`
`2
`
`

`

`
`
`
`
` d F
`
`oreword
`Foreword to the First Edition
`
`Preface
`
`Contents
`
`1 Foundation
`
`Problem: Building a Network
`
`1.1 Applications
`
`1.1.1 Classes of Applications
`
`1.2 Requirements
`
`1.2.1 Perspectives
`1.2.2 Scalable Connectivity
`1.2.3 Cost—Effective Resource Sharing
`1.2.4 Support for Common Services
`
`1.2.5 Manageability
`1.3 Network Architecture
`
`1.3.1 Layering and Protocols
`1.3.2
`Internet Architecture
`
`1.4 Implementing Network Software
`
`1.4.1 Application Programming Interface
`(Sockets)
`
`1.4.2 ExampleApplication
`1.5 Performance
`
`1.5.1 Bandwidth and Latency
`1.5.2 Delay >< Bandwidth Product
`
`1.5.3 High-Speed Networks
`
`1.5.4 Application Performance Needs
`
`1.6 Summary
`What’s Next: Cloud Computing
`Further Reading
`Exercises
`
`2 Getting Connected
`
`Problem: Connecting to a Network
`2.1 Perspectives on Connecting
`2.1.1 Classes of Links.
`
`FE.b?
`
`xiii
`
`CONCDQJNb—I
`
`13
`
`18
`
`23
`
`24
`
`24
`
`33
`
`36
`
`37
`
`40
`
`44
`
`44
`
`48
`
`51
`
`53
`
`55
`
`57
`
`58
`
`60
`
`71
`
`72
`
`75
`
`
`
`XXV
`
`3
`
`

`

`
`
`xxvi
`
`Contents
`
`78
`
`81
`
`83
`
`85
`
`88
`
`91
`
`93
`
`94
`
`97
`
`102
`
`103
`
`106
`
`118
`
`119
`
`120
`
`122
`
`127
`
`128
`
`135
`
`142
`
`144
`
`148
`
`150
`
`151
`
`153
`
`169
`
`170
`
`172
`
`174
`
`186
`
`189
`
`203
`
`203
`
`2.2 Encoding (NRZ, NRZI, Manchester, 4B/5B)
`2.3 Framing
`2.3.1 Byte-Oriented Protocols (BISYNC, PPP,
`DDCMP)
`
`2.3.2 Bit-Oriented Protocols (HDLC)
`
`2.3.3 Clock—Based Framing (SONET)
`2.4 Error Detection
`
`2.4.1 Two-Dimensional Parity
`2.4.2
`Internet Checksum Algorithm
`2.4.3 Cyclic Redundancy Check
`2.5 Reliable Transmission
`
`Stop—and-Wait
`2.5.1
`2.5.2 Sliding Window
`2.5.3 Concurrent Logical Channels
`2.6 Ethernet and Multiple Access Networks (802.3)
`
`2.6.1 Physical Properties
`2.6.2 Access Protocol
`
`2.6.3 Experience with Ethernet
`2.7 Wireless
`
`2.7.1
`
`802.11/Wi—Fi
`
`2.7.2 Bluetooth®(802.15.1)
`
`2.7.3 Cell Phone Technologies
`
`2.8 Summary
`What’s Next: “The Internet of Things”
`
`Further Reading
`Exercises
`
`3
`
`lnternetworking
`
`Problem: Not All Networks are Directly Connected
`
`3.1 Switching and Bridging
`
`3.1.1 Datagrams
`3.1.2 Virtual Circuit Switching
`
`3.1.3 Source Routing
`3.1.4 Bridges and LAN Switches
`3.2 Basic Internetworking (1P)
`3.2.1 What Is an Internetwork?
`
`3.2.2 Service Model
`
`3.2.3 Global Addresses
`
`3.2.4 Datagram Forwarding in IP
`3.2.5 Subnetting and Classless Addressing
`4
`
`216
`
`206
`
`213
`
`220
`
`4
`
`

`

`
`
`
`
`Contents
`
`xxvii
`
`iwlflm
`
`".'"I'mll'r—‘I.‘K'
`
`3.2.6 Address Translation (ARP)
`
`3.2.7 Host Configuration (DHCP)
`
`3.2.8 Error Reporting (ICMP)
`3.2.9 Virtual Networks and Tunnels
`
`3.3 Routing
`
`3.3.1 Network as a Graph
`3.3.2 Distance Vector (RIP)
`
`3.3.3 Link State (OSPF)
`3.3.4 Metrics
`
`3.4 Implementation and Performance
`3.4.1
`Switch Basics
`
`3.4.2 Ports
`
`3.4.3 Fabrics
`
`3.4.4 Router Implementation
`
`3.5 Summary
`What’s Next: The Future Internet
`
`Further Reading
`Exercises
`
`4 Advanced Internetworking
`
`Problem: Scaling to Billions
`4.1 The Global Internet
`
`4.1.1 Routing Areas
`4.1.2
`Interdomain Routing (BGP)
`4.1.3
`IP Version 6 (IPv6)
`4.2 Multicast
`
`4.2.1 Multicast Addresses
`
`4.2.2 Multicast Routing (DVMRP, PIM, MSDP)
`4.3 Multiprotocol Label Switching (MPLS)
`4.3.1 Destination-Based Forwarding
`4.3.2 Explicit Routing
`4.3.3 Virtual Private Networks and Tunnels
`
`4.4 Routing among Mobile Devices
`4.4.1 Challenges for Mobile Networking
`4.4.2 Routing to Mobile Hosts (Mobile 1P)
`4.5 Summary
`What’s Next: Deployment of IPv6
`Further Reading
`Exercises
`
`228 7
`231
`
`235
`
`235
`
`240
`
`242
`
`243
`
`252
`
`262
`
`266
`
`267
`
`270
`
`273
`
`277
`
`280
`
`281
`
`282
`
`284
`
`307
`
`308
`
`310
`
`313
`
`324
`
`338
`
`340
`
`341
`
`354
`
`355
`
`362
`
`354 ‘
`369
`
`369
`
`372
`
`379
`
`380
`
`381
`
`382
`
`
`
`5
`
`

`

`
`
`xxviii
`
`Contents
`
`5 End-to-End Protocols
`
`Problem: Getting Process to Communicate
`
`5.1 Simple Demultiplexer (UDP)
`5.2 Reliable Byte Stream (TCP)
`5.2.1 End—to-End Issues
`
`5.2.2 Segment Format
`5.2.3 Connection Establishment and
`Termination
`
`5.2.4 Sliding Window Revisited
`5.2.5 Triggering Transmission
`5.2.6 Adaptive Retransmission
`5.2.7 Record Boundaries
`
`5.2.8 TCP Extensions
`
`5.2.9 Performance
`
`5.2.10 Alternative Design Choices
`5.3 Remote Procedure Call
`
`5.3.1 RPC Fundamentals
`
`5.3.2 RPC Implementations (SunRPC, DCE)
`5.4 Transport for Real—Time Applications (RTP)
`
`5.4.1 Requirements
`
`5.4.2 RTP Design
`5.4.3 Control Protocol
`
`5.5 Summary
`What’s Next: Transport Protocol Diversity
`
`Further Reading
`Exercises
`
`6 Congestion Control and Resource
`Allocation
`
`Problem: Allocating Resources
`6.1 Issues in Resource Allocation
`
`6.1.1 Network Model
`
`6.1.2 Taxonomy
`6.1.3 Evaluation Criteria
`
`6.2 Queuing Disciplines
`6.2.1
`FIFO
`
`6.2.2 Fair Queuing
`6.3 TCP Congestion Control
`6.3.1 Additive Increase/ Multiplicative
`Decrease
`
`6
`
`391
`
`393
`
`396
`
`397
`
`400
`
`402
`
`407
`
`414
`
`418
`
`422
`
`423
`
`425
`
`428
`
`431
`
`431
`
`440
`
`447
`
`449
`
`452
`
`456
`
`460
`
`461
`
`462
`
`463
`
`479
`
`480
`
`481
`
`485
`
`488
`
`492
`
`492
`
`494
`
`499
`
`500
`
`ir
`
`-'“1—H!-I-“—-‘rdIQ—m
`
`
`
`c:r-—-—.—-n';-v—_I-=...——.
`
`‘—t—-—|—-
`
`
`
`
`
`”CFI—n—l4.—="lly—fid‘I—L.—HI-_l_
`
`6
`
`

`

`Contents
`
`xxix
`
`
`
`
`
`6.3.2 Slow Start
`
`III
`
`6.3.3 Fast Retransmit and Fast Recovery
`6.4 Congestion-Avoidance Mechanisms
`6.4.1 DECbit
`
`6.4.2 Random Early Detection (RED)
`6.4.3
`Source—Based Congestion Avoidance
`6.5 Quality of Service
`
`6.5.1 Application Requirements
`6.5.2
`Integrated Services (RSVP)
`6.5.3 Differentiated Services (EF, AF)
`6.5.4 Equation-Based Congestion Control
`6.6 Summary
`What’s Next: Refactoring the Network
`Further Reading
`Exercises
`
`7 End—to-End Data
`
`Problem: What Do We Do with the Data?
`
`7.1 Presentation Formatting
`7.1.1 Taxonomy
`7.1.2 Examples (XDR, ASN.1, NDR)
`7.1.3 Markup Languages (XML)
`7.2 Multimedia Data
`
`7.2.1 Lossless Compression Techniques
`7.2.2
`Image Representation and
`Compression (GIF, JPEG)
`7.2.3 Video Compression (MPEG)
`7.2.4 Transmitting MPEG over a Network
`7.2.5 Audio Compression (MP3)
`7.3 Summary
`What’s Next: Video Everywhere
`Further Reading
`Exercises
`
`8 Network Security
`
`Problem: Security Attacks
`8.1 Cryptographic Building Blocks
`8.1.1 Principles of Ciphers
`8.1.2 Symmetric-Key Ciphers
`
`505
`
`510
`
`514
`
`515
`
`516
`
`523
`
`530
`
`531
`
`537
`
`549
`
`557
`
`559
`
`560
`
`561
`
`563
`
`579
`
`581
`
`583
`
`587
`
`592
`
`596
`
`598
`
`601
`
`609
`
`614
`
`619
`
`621
`
`622
`
`623
`
`624
`
`633
`
`635
`
`635
`
`638
`
`
`
`7
`
`

`

`
`
`XXX
`
`Contents
`
`8.1.3 Public-Key Ciphers
`8.1.4 Authenticators
`
`8.2 Key Predistribution
`8.2.1 Predistribution of Public Keys
`
`8.2.2 Predistribution of Symmetric Keys
`8.3 Authentication Protocols
`
`8.3.1 Originality and Timeliness Techniques
`8.3.2 Public-Key Authentication Protocols
`8.3.3 Symmetric-KeyAuthentication
`Protocols
`
`8.3.4 Diffie-Hellman Key Agreement
`
`8.4 Example Systems
`8.4.1 Pretty Good Privacy (PGP)
`8.4.2 Secure Shell (SSH)
`
`8.4.3 Transport Layer Security
`(TLS, SSL, HTTPS)
`
`8.4.4
`IP Security (IPsec)
`8.4.5 Wireless Security (802.11i)
`8.5 Firewalls
`
`8.5.1 Strengths and Weaknesses of Firewalls
`
`8.6 Summary
`What’s Next: Coming to- Grips with Security
`
`Further Reading
`Exercises
`
`9 Applications
`
`Problem: Applications Need their Own Protocols
`9.1 Traditional Applications
`9.1.1 Electronic Mail (SMTP, MIME, IMAP)
`
`9.1.2 World Wide Web (HTTP)
`
`9.1.3 Web Services
`
`9.2 Multimedia Applications
`9.2.1 Session Control and Call Control
`(SDP, SIP, H.323)
`
`9.2.2 Resource Allocation for Multimedia
`Applications
`9.3 Infrastructure Services
`
`9.3.1 Name Service (DNS)
`
`9.3.2 Network Management (SNMP)
`
`8
`
`640
`
`643
`
`647
`
`648
`
`653
`
`654
`
`655
`
`656
`
`658
`
`662
`
`664
`
`665
`
`667
`
`670
`
`675
`
`678
`
`681
`
`684
`
`686
`
`688
`
`689
`
`690
`
`697
`
`698
`
`700
`
`708
`
`718
`
`727
`
`728
`
`739
`
`744
`
`745
`
`756
`
`8
`
`

`

`
`
`Contents
`
`xxxi
`
`
`
`9.4 Overlay Networks
`
`9.4.1 Routing Overlays
`9.4.2 Peer-to-Peer Networks
`
`9.4.3 Content Distribution Networks
`
`9.5 Summary
`What’s Next: New Network Architecture
`
`Further Reading
`Exercises
`
`Solutions to Select Exercises
`
`Giossary
`
`Bibliography
`
`Index
`
`759
`
`762
`
`769
`
`783
`
`789
`
`790
`
`791
`
`793
`
`801
`
`815
`
`837
`
`851
`
`
`
`9
`
`

`

`path from the desktop to the recipient’s mailbox.
`
`(1) Connection without preauthentication (OK greeting)
`(2) Preauthenticated connection (PREAUTH greeting)
`(3) Rejected connection (BYE greeting)
`(4) Successful LOGIN or AUTHENTICATE command
`(5) Successful SELECT or EXAMINE command
`(6) CLOSE command, or failed SELECT or EXAMINE command
`(7) LOGOUT command, server shutdown, or connection closed I
`
`‘
`
`Connection established
`
`I S
`
`erver greeting
`
`708
`
`CHAPTER9 Applications
`
`(3)
`
`Not authenticated
`
`l
`
`(7)
`
`
`
`(7)
`
`l Selected
`
`
`
`
`
`
`Both sides close the connection I
`
`I FIGURE 9.2 IMAP state transition diagram.
`
`Finally, note that when the user replies to a message, or sends a new
`‘
`message, the mail reader does not forward the message from the client 10
`the mail server using IMAP, but it instead uses SMTP. This means That the :-
`user's mail server is effectively the first mail gateWay traversed along the.
`
`'-
`.
`
`twe
`9.1.2 World Wide Web (HTTP) ‘\
`The World Wide Web has been so successful and has made the mm 0115 -
`accessible to so many people that sometimes it seems to be Synonym '
`
`10
`
`

`

`
`
`9. 1 Traditional applications
`
`709
`
`
`
`with the Internet. In fact, the design of the system that became the
`Web started around 1989, long after the Internet had become a widely
`deployed system. The original goal of the Web was to find a way to
`organize and retrieve information, drawing on ideas about hypertext—
`interlinked documents—that had been around since at least the 1960s.1
`
`The core idea of hypertext is that one document can link to another doc-
`
`ument, and the protocol (HTTP) and document language (HTML) were
`designed to meet that goal.
`
`One helpful way to think of the Web is as a set of cooperating clients
`and servers, all of whom speak the same language: HTTP. Most people are
`exposed to the Web through a graphical client program or web browser
`like Safari, Chrome, Firefox, or Internet Explorer. Figure 9.3 shows the
`Firefox browser in use, displaying a page of information from Princeton
`
`University.
`
`Clearly, if you want to organize information into a system of linked doc-
`uments or objects,,you need to be able to retrieve one document to get
`started. Hence, any web broWser has a function that allows the user to
`
`obtain an object by opening a URL. Uniform Resource Locators (URLs)
`are so familiar to most of us by now that it’s easy to forget that they haven’t
`been around forever. They provide information that allows objects on the
`Web to be located, and they look like the following:
`
`http://wwwcsprinceton.edu/index.html
`
`If you opened that particular URL, your web browser would open a TCP
`connection to the web server at a machine called www.cs.princeton.edu
`and immediately retrieve and display the file called index.htm|. Most files
`on the Web contain images and text, and many have other objects such as
`audio and Video clips, pieces of code, etc. They also frequently include
`URLs that point to other files that may be located on other machines,
`which is the core of the “hypertext” part of HTTP and HTML. A web
`browser has some way in which you can recognize URLs (often by high—
`lighting or underlining some text) and then you can ask the browser to
`Open them. These embedded URLs are called hypertext links. When you
`ask your web browser to open one of these embedded URLs (e.g., by
`pointing and clicking on it with a mouse), it will open a new connec-
`tion and retrieve and display a new file. This is called following a link.
`It thus becomes very easy to hop from one machine to another around
`
`
`1A short history of the Web provided by the World Wide Web consortium traces its roots
`to a 1945 article describing links between microfiche documents.
`
`11
`
`11
`
`

`

` 71 0
`
`CHAPTER 9 Applications
`
`
`
`fl A ‘
`
`'-" ".— I
`
`-'I' .'-‘:.'..""-".
`
`:' "'
`
`'
`
`'|"="'
`
`--.
`
`'. ".
`
`.55:

`E: .J
`' ' "'
`‘ ' '
`a 5 ~:,:‘.T,..—,.,;w::. ”a '
`a.
`.___
`I‘M“ h'IIIKHl —
`I gifi:mm -
`I'.Iui- luti - le "ml—I
`'
`inn
`hrcnnlu'
`[mar-u '
`IRVI- '
`lun- -
`l'uumnu' mun la...
`
`§ ._' Emu sen-u {null-um -
`f. 1
`__' ——-4_.:.—__
`'
`’—
`'
`_‘
`_
`-
`
`(“3: 14
`
`Department of
`.
`Computer Selence
`
`,
`
`
`
`PRINCETON
`@ umvmm
`
`HEWS
`
`{3;
`
`EVENTS
`
`
`
`
`
`
`
`
`
`
`:r
`gag; .w —
`
`LWémglrfs-fifik
`
`t
`
`
`
`
`”PETA‘fCfiTifll‘J
`*7 Bone
`
`V.
`
`.
`
`_.
`
`,, _. _
`
`
`
`
`
`l FIGURE 9.3 The Firefox web browser.
`
`the network, following links to all sorts of information. Once you ha"? a
`
`means to embed a link in a document and allow a user to follow that llnk
`
`to get another document, you have the basis of a hypertext system
`
`When you ask your browser to View a page, your browser (the client)
`
`fetches the page from the server using HTTP running over TCP. Like SMTP’
`HTTP is a text-oriented protocol. At its core, HTTP is a request/$51301”e
`protocol, where every message has the genera] form
`
`START_LlNE <CRLF>
`
`MESSAGE_HEADER <CRLF>
`
`<CRLF>
`
`MESSAGE_BODY <CRLF>
`
`12
`
`
`
`12
`
`

`

`
`
`9.1 Traditional applications
`
`_71 1
`
`
`
`where, as before, <CRLF> stands for carriage-return+line-feed. The
`
`first line (START-LINE) indicates whether this is a request message or a
`
`response message. In effect, it identifies the “remote procedure" to be
`executed (in the case of a request message), or the status of the request
`(in the case of a response message). The next set of lines specifies a col—
`
`lection of options and parameters that qualify the request or response.
`
`There are zero or more of these MESSAGE_H EADER lines—the set is ter—
`minated by a blank line—~each of which looks like a header line in an email
`
`message. HTTP defines many possible header types, some of which per-
`
`tain to request messages, some to response messages, and some to the
`
`data carried in the message body. Instead of giving the full set of possible
`
`header types, though, we just give a handful of representative examples.
`Finally, after the blank line comes the contents of the requested message
`(M ESSAG E_BODY) ; this part of the message is where a server would place
`
`the requested page when responding to a request, and it is typically empty
`
`for request messages.
`
`Why does HTTP run over TCP? The designers didn’t have to do it
`
`that way, but TCP does provide a pretty good match to what HTTP
`
`needs, particularly by providing reliable delivery (who wants a Web page
`with missing data?), flow control, and congestion control. However, as
`
`we’ll see below, there are a few issues that can arise from building a
`
`request/ response protocol on top of TCP, especially if you ignore the sub—
`tleties of the interactions between the application and transport layer
`protocols.
`
`Request/Viessages
`
`The first line of an HTTP request message specifies three things: the oper-
`ation to be performed, the Web page the operation should be performed
`
`on, and the version of HTTP being used. Although HTTP defines a wide
`
`assortment of possible request operations—including write operations
`that allow a Web page to be posted on a server—the two most common
`
`Operations are GET (fetch the specified Web page) and HEAD (fetch sta-
`
`tus information about the specified Web page). The former is obviously
`used when your browser wants to retrieve and display a Web page. The
`latter is used to test the validity of a hypertext link or to see if a particu—
`lar page has been modified since the browser last fetched it. The full set of
`
`Operations is summarized in Table 9.1. As innocent as it sounds, the POST
`
`Command enables much mischief (including spam) on the Internet.
`
`13
`
`13
`
`

`

`712
`
`CHAPTER 9 Applications
`
`Table 9.1 HTTP Request Operations
`
`Operation
`
`Description
`
`OPTIONS
`
`Request information about available options
`
`GET
`
`HEAD
`
`POST
`
`PUT
`
`Retrieve document identified in URL
`
`Retrieve metainformation about document identified in URL
`
`Give information (e.g., annotation) to server
`
`Store document under specified URL
`
`DELETE
`
`Delete specified URL
`
`TRACE
`
`Loopback request message
`
`
`
`CONNECT For use by proxies
`
`For example, the START-LiNE
`
`GE" http://www.cs.princeton.edu/index.html
`HT"P/l.1
`
`
`
`says that the client wants the server on host www.cs.princeton.edu to
`return the page named index.htm|. This particular example uses an abso-
`lute URL. It is also possible to use a relative identifier and specify the host
`name in one of the MESSAGE_H EADEFi lines; for example,
`
`GET index.html HTTP/1.1
`
`Host: www.cs.princeton.edu
`
`Here, Host is one of the possible MESSAGE_HEADER fields. One Of The
`more interesting of these is lf-Modified-Since, which gives the client a way
`to conditionally request a Web page—the server returns the page only ifit‘
`has been modified since the time specified in that header line.
`
`Response Messages
`response messages begin with a
`Like request messages,
`START_L|NE.
`In this case,
`the line specifies the version 0f
`being used, a three-digit code indicating whether or not the I
`was successful, and a text string giving the reason for the respOHS
`
`eqllest
`e. For
`
`example, the START_LlNE
`
`HTTP/1 1 202 Accepted
`
`14
`
`
`
`14
`
`

`

`
`
`9.1 Traditional applications
`
`713
`
`Table 9.2 Five Types of HTTP Result Codes
`
`Code
`
`Type
`
`Example Reasons
`
`ixx
`
`2xx
`
`3xx
`
`4xx
`
`Informational
`
`request received, continuing process
`
`Success
`
`action successfully received, understood, and accepted
`
`Rednecfion
`
`funheracfionrnustbetakentoconnfietetherequefl
`
`CHentEnor
`
`requestcontflnsbadsyntaxorcannotbequMed
`
`
`
`
`
`SaverEnorSxx sewerkfledtofuMHanappamnflyvaHdrequefl
`
`indicates that the server was able to satisfy the request, while
`
`HTTP/1.1 404 Not Found
`
`indicates that it was not able to satisfy the request because the page was
`not found. There are five general types of response codes, with the first
`digit of the code indicating its type. Table 9.2 summarizes the five types of
`codes.
`
`As with the unexpected consequences of the POST request message, it
`is sometimes surprising how various response messages are used in prac-
`tice. For example, request redirection (specifically code 302) turns out to
`be a powerful mechanism that plays a big role in Content Distribution
`, Networks (CDNs) (see Section 9.4.3) by redirecting requests to a nearby
`cache.
`
`Also similar to request messages, response messages can contain
`one or more MESSAGEHEADER lines. These lines relay additional
`information back to the client. For example, the Location header line
`specifies that
`the requested URL is available at another location.
`Thus, if the Princeton CS Department Web page had moved from http://
`www.cs.princeton.edu/index.html to http://www.princeton.edu/cs/index.htmi,
`for example, then the server at the original address might respond with
`
`HTTP/1.1 301 Moved Permanentiy
`
`Location: http://www.princeton.edu/cs/index.ntmi
`
`the response message will also carry the
`In the common case,
`requested page. This page is an HTML document, but since it may
`Carry nontextual data (e.g., a GIF image), it is encoded using MIME (see
`
`15
`
`
`
`15
`
`

`

` 714
`
`CHAPTER 9 Applications
`
`Section 9.1.1). Certain of the MESSAGEHEADE‘R lines give attributes
`
`of the page contents, including Content—Length (number of bytes in the
`
`contents), Expires (time at which the contents are considered stale),
`and Last-Modified (time at which the contents were last modified at the
`
`server).
`
`Uniform Resource /dentif/er5
`
`The URLs that HTTP uses as addresses are one type of Uniform Resource
`
`Identifier (URI). A URI is a character string that identifies a resource,
`where a resource can be anything that has identity, such as a document,
`
`an image, or a service.
`
`The format of URIs allows various more specialized kinds of resource
`
`identifiers to be incorporated into the URI space of identifiers. The first
`part of a URI is a scheme that names a particular way of identifying a
`certain kind of resource, such as mailto for email addresses or file for file
`names. The second part of a URI, separated from the first part by a colon,
`is the scheme-specific part. It is a resource identifier consistent with the
`
`scheme in the first part, as in the URIs
`
`mailto:santa@northpole.org
`
`and
`
`ti)e:///C:/foo.html
`
`A resource doesn’t have to be retrievable or accessible. We SaW an
`example of this earlier in Section 7.1.3——extensible markup language
`(XML) namespaces are identified by URIs that look an awful lot like URLS’
`but strictly speaking they are not locators because they don’t tell you how
`to locate something; they just provide a globally unique identifier for the
`namespace. There is no requirement that you can retrieve anything at
`the URI given as the target namespace of an XML document. We’ll see
`another example of a URI that is not a URL in Section 9.2.1.
`
`TCP Connections
`_
`The original version of HTTP (1.0) established a separate TCP COTmeCflOn
`for each data item retrieved from the server. It’s not too hard to see how
`this was a very inefficient mechanism: connection setup and teardown
`messages had to be exchanged between the client and server even ifall the
`client wanted to do was verify that it had the most recent copy Of a page»
`
`16
`
` -_-'=.-_.-4-
`
`—..—_-i'-.=-'|.-\n_-..E»A"‘=5"\n'."'—:V:1-"int—Inl—
`
`
`
`
`
`_.__::
`."—_:-,-
`
`16
`
`

`

`
`
`744
`
`CHAPTER 9 Applications
`
`The main thing to notice here is the interleaving of session control and
`
`resource allocation tasks. Solid lines represent SIP messages, dashed lines
`
`represent RSVP messages. Note that SIP messages are transmitted direc—
`
`tion from phone to phone in this example (i.e., we have not shown any SIP
`proxies), whereas the RSVP messages are also processed by the routers in
`the middle as the check for sufficient resources to admit the call.
`
`We being with an initial exchange of codec information in the first two
`SIP messages (recall that SDP is used to list available codecs, among other
`
`things). PRACK is a “provisional acknowledgment.” Once these messages
`have been exchanged, RSVP PATH messages, which contain a description
`
`of the amount of resources that will be required, can be sent as the first
`
`step in reserving resources in both directions of the call. Next, RESV mes-
`sages can be sent back to actually reserve the resources. Once a RESV
`is received by the initiating phone, it can send an updated SDP message
`reporting the fact that resources have been reserved in one direction.
`When the called phone has received both that message and the RESV
`from the other phone, it can start to ring and tell the other phone that
`resources are now reserved in both directions (with the SDP message) and
`
`also notify the calling phone that it is ringing. From here on, normal SIP
`signalling and media flow, similar to that shown in Figure 9.9, proceeds.
`
`Again we see how building applications requires us to understand
`the interaction between different building blocks (SIP and RSVP, in this
`case). The designers of SIP actually made some changes to the protocol
`to enable this interleaving of functions between protocols with different
`jobs, hence our repeated emphasis in this book on focusing on complete
`systems rather than just looking at one layer or component in isolation
`from the other parts of the system.
`
`9.3 INFRASTRUCTURE SERVICES
`
`There are some protocols that are essential to the smooth running Of
`the Internet but that don’t fit neatly into the strictly layered model. One
`of these is the Domain Name System (DNS)—not an application that
`users normally invoke explicitly, but rather a service that almost all other
`applications depend upon. This is because the name service is Used
`to translate host names into host addresses; the existence of suCh an
`application allows the users of other applications to refer to remote hOStS
`
`17
`
`17
`
`

`

`
`
`9.3 Infrastructure services
`
`745
`
`by name rather than by address. In other words, a name service is usually
`used by other applications, rather than by humans.
`
`A second critical function is network management, which although not
`
`so familiar to the average user, is the operation performed most often by
`
`system administrators. Network management is widely considered one of
`the hard problems of networking and continues to be the focus of much
`
`research. We’ll look at some of the issues and approaches to the problem
`below.
`
`9.3 1 Name Service (DNS)
`
`In most of this book, we have been using addresses to identify hosts.
`
`While perfectly suited for processing by routers, addresses are not exactly
`
`user friendly. It is for this reason that a unique name is also typically
`
`assigned to each host in a network. Already in this section we have seen
`
`application protocols like, HTTP using names such as www.princeton.edu.
`
`We now describe how a naming service can be developed to map user-
`
`friendly names into router-friendly addresses. Name services are some-
`
`times called middleware because they fill a gap between applications and
`
`the underlying network.
`
`Host names differ from host addresses in two important ways. First,
`
`they are usually of variable length and mnemonic,
`
`thereby making
`
`them easier for humans to remember. (In contrast, fixed-length numeric
`
`addresses are easier for routers to process.) Second, names typically con-
`
`tain no information that helps the network locate (route packets toward)
`
`the host. Addresses, in contrast, sometimes have routing information
`
`embedded in them; flat addresses (those not divisible into component
`
`parts) are the exception.
`
`Before getting into the details of how hosts are named in a network,
`
`we first introduce some basic terminology. First, a name space defines
`
`the set of possible names. A name space can be either flat (names are
`
`not divisible into components) or hierarchical (Unix file names are an
`
`obvious example). Second, the naming system maintains a collection of
`
`bindings of names to values. The value can be anything we want the nam—
`
`ing system to return when presented with a name; in many cases, it is
`
`an address. Finally, a resolution mechanism is a procedure that, when
`
`invoked with a name, returns the corresponding value. A name server is
`
`
`
`18
`
`

`

`746
`
`CHAPTER9 Applications
`
`a specific implementation of a resolution mechanism that is available on
`a network and that can be queried by sending it a message.
`Because of its large size, the Internet has a particularly well-developed
`naming system in place—the Domain Name System (DNS). We therefore
`use DNS as a framework for discussing the problem of naming hosts. Note
`
`that the Internet did not always use DNS. Early in its history, when there
`
`were only a few hundred hosts on the Internet, a central authority called
`
`the Network Information Center (NIC) maintained a flat table of name-t0-
`
`address bindings; this table was called hosts.txt. Whenever a site wanted
`to add a new host to the Internet, the site administrator sent email to
`
`the NIC giving the new host’s name/ address pair. This information was
`
`manually entered into the table, the modified table was mailed out to the
`
`various sites every few days, and the system administrator at each site
`
`installed the table on every host at the site. Name resolution was then sim-
`ply implemented by a procedure that looked up a host’s name in the local
`
`copy of the table and returned the corresponding address.
`
`It should come as no surprise that the hostsixt approach to naming
`
`did not work well as the number of hosts in the Internet started to grow.
`
`Therefore, in the mid—19805, the Domain Naming System was put into
`place. DNS employs a hierarchical namespace rather than a flat name
`space, and the “table” of bindings that implements this name space iS
`partitioned into disjoint pieces and distributed throughout the Internet.
`These subtables are made available in name servers that can be queried
`
`over the network.
`
`What happens in the Internet is that a user presents a host name to an
`application program (possibly embedded in a Compound name such as
`an email address or URL), and this program engages the naming SYStem
`to translate this name into a host address. The application then opens a
`connection to this host by presenting some transport protocol (e.g., TCP)
`with the host’s IP address. This situation is illustrated (in the case of send—
`ing email) in Figure 9.14. While this picture makes the name resolu’EiOI1
`task look simple enough, there is a bit more to it, as we shall see.
`
`'
`Domain Hierarchy
`DNS implements a hierarchical name space for Internet objects. Ulfllke
`Unix file names, which are processed from left to right with the naming
`components separated with slashes, DNS names are processed from Tight
`to left and use periods as the separator. (Although they are processed from
`1 9
`
`I .-
`..
`I
`‘
`
`fl
`2.1;? .
`I
`I
`
`
`
`19
`
`

`

`
`
`9.3 Infrastructure services
`
`747
`
`User
`
`1
`
`5:3;
`
`cs2princetonedu
`
`19212595
`
`'
`
`_
`
`.
`
`1
`
`luser@cs.princeton.edu
`Mail_I
`l.19212..695
`
`4
`
`up_rogram
`
`TOP
`_ _
`
`_
`
`192.12.69.5
`
`5
`
`
`
`IP
`
`
`
`1 FIGURE 9.14 Names translated into addresses, where the numbers 1 to 5 show the sequence ofsteps in the process.
`
`0
`_.
`
`ped
`re
`
`Die
`er
`
`9
`led
`
`t0_
`
`:ed
`to
`
`7&8
`
`he
`ite
`n-
`
`2a] m
`:
`edu
`com
`gov
`mil
`org
`net
`uk
`fr
`3
`/K /\ /\ /\ /\ A A A
`N’
`princeton
`mit
`cisco~ -yahoo nasa -nsf
`arpan -navy acm- nieee
`:0
`re A A A A A A A A A A
`.
`is
`/S\
`t.
`
`ee
`physics
`A A
`
`ux01-- ux04
`
`1
`
`d 1
`
`s 1 1
`
`
`
`- FIGURE9JS Exampleofadomain hierarchy.
`
`right to left, humans still read domain names from left to right.) An exam-
`
`ple domain name for a host is cicada.cs.princeton.edu. Notice that we said
`
`domain names are used to name Internet “objects.” What we mean by this
`
`is that DNS is not strictly used to map host names into host addresses. It
`
`is more accurate to say that DNS maps domain names into values. For the
`
`'
`
`time being, we assume that these values are IP addresses; we will come
`back to this issue later in this section.
`
`Like the Unix file hierarchy, the DNS hierarchy can be Visualized as
`
`a tree, where each node in the tree corresponds to a domain, and the
`
`71‘
`
`I
`
`leaves in the tree correspond to the hosts being named. Figure 9.15 gives
`an example of a domain hierarchy. Note that we should not assign any
`
`
`
`20
`
`

`

`fl
`
`7423
`
`CHAPTER9 Applications
`
`semantics to the term domain other than that it is simply a context in
`which additional names can be defined.5
`
`There was actually a substantial amount of discussion that took place
`when the domain name hierarchy was first being developed as to what
`
`conventions would govern the names th

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket