throbber
ust
`
`AA/SWA Ex. 1018, p.1 of 23
`American Airlines, et. al. v. Intellectual Ventures, et.al.
`IPR2025-00786
`
`

`

`UNIX is a technology trademark of X/Open Company, Ltd.
`The publisher offers discounts on this book when ordered in quantity for special sales.
`For more information please contact:
`Corporate & Professional Publishing Group
`Addison-Wesley Publishing Company
`One Jacob Way
`Reading, Massachusetts 01867
`Library of Congress Cataloging-in-Publication Data
`Stevens, W Richard
`TCP/IP Illustrated: the protocols/W Richard Stevens.
`p. em.- (Addison-Wesley professional computing series)
`Includes bibliographical references and index.
`ISBN 0-201-63346-9 (v. 1)
`l.TCP/IP (Computer network protocol) I. Title. II. Series.
`TK5105.55S74 1994
`004.6'2-dc20
`Copyright © 1994 by Addison-Wesley Publishing Company
`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 the prior consent of the publisher. Printed in the United States of America.
`Published simultaneously in Canada.
`ISBN 0-201-63346-9
`Text printed on recycled paper.
`2 3 4 5 6 7 8 9 CRW 97969594
`Second Printing, February 1994
`
`AA/SWA Ex. 1018, p.2 of 23
`American Airlines, et. al. v. Intellectual Ventures, et.al.
`IPR2025-00786
`
`

`

`7
`
`Introduction
`
`1.1
`
`Introduction
`The TCP /IP protocol suite allows computers of all sizes, from many different computer
`vendors, running totally different operating systems, to communicate with each other.
`It is quite amazing because its use has far exceeded its original estimates. What started
`in the late 1960s as a government-financed research project into packet switching net-
`works has, in the 1990s, turned into the most widely used form of networking between
`computers. It is truly an open system in that the definition of the protocol suite and
`many of its implementations are publicly available at little or no charge. It forms the
`basis for what is called the worldwide Internet, or the Internet, a wide area network
`(WAN) of more than one million computers that literally spans the globe.
`This chapter provides an overview of the TCP / IP protocol suite, to establish an ade-
`quate background for the remaining chapters. For a historical perspective on the early
`development of TCP liP see [Lynch 1993].
`
`1.2
`
`Layering
`Networking protocols are normally developed in layers, with each layer responsible for a
`different facet of the communications. A protocol suite, such as TCP /IP, is the combina-
`tion of different protocols at various layers. TCP / IP is normally considered to be a
`4-layer system, as shown in Figure 1.1.
`
`1
`
`AA/SWA Ex. 1018, p.3 of 23
`American Airlines, et. al. v. Intellectual Ventures, et.al.
`IPR2025-00786
`
`

`

`2
`
`Introduction
`
`Chapter 1
`
`Application
`Transport
`
`Network
`
`Link
`
`Telnet, FI'P, e-mail, etc.
`TCP,UDP
`IP, ICMP, IGMP
`device driver and interface card
`
`Figure 1.1 The four layers of the TCP / IP protocol swte.
`
`Each layer has a different responsibility.
`1. The link layer, sometimes called the data-link layer or network interface layer, nor-
`mally includes the device driver in the operating system and the corresponding
`network interface card in the computer. Together they handle all the hardware
`details of physically interfacing with the cable (or whatever type of media is
`being used).
`2. The network layer (sometimes called the internet layer) handles the movement of
`packets around the network. Routing of packets, for example, takes place here.
`IP (Internet Protocol), ICMP (Internet Control Message Protocol), and IGMP
`(Internet Group Management Protocol) provide the network layer in the
`TCP /IP protocol suite.
`3. The transport layer provides a flow of data between two hosts, for the applica-
`tion layer above. In the TCP / IP protocol suite there are two vastly different
`transport protocols: TCP (Transmission Control Protocol) and UDP (User Data-
`gram Protocol).
`TCP provides a reliable flow of data between two hosts. It is concerned with
`things such as dividing the data passed to it from the application into appropri-
`ately sized chunks for the network layer below, acknowledging received pack-
`ets, setting timeouts to make certain the other end acknowledges packets that
`are sent, and so on. Because this reliable flow of data is provided by the trans-
`port layer, the application layer can ignore all these details.
`UDP, on the other hand, provides a much simpler service to the application
`layer. It just sends packets of data called datagrams from one host to the other,
`but there is no guarantee that the datagrams reach the other end. Any desired
`reliability must be added by the application layer.
`There is a use for each type of transport protocol, which we'll see when we look
`at the different applications that use TCP and UDP.
`
`AA/SWA Ex. 1018, p.4 of 23
`American Airlines, et. al. v. Intellectual Ventures, et.al.
`IPR2025-00786
`
`

`

`Section 1.2
`
`Layering
`
`3
`
`4. The application layer handles the details of the particular application. There are
`many common TCP / IP applications that almost every implementation pro-
`vides:
`• Telnet for remote login,
`• FfP, the File Transfer Protocol,
`• SMTP, the Simple Mail Transfer protocol, for electronic mail,
`• SNMP, the Simple Network Management Protocol,
`and many more, some of which we cover in later chapters.
`If we have two hosts on a local area network (LAN) such as an Ethernet, both run-
`ning FrP, Figure 1.2 shows the protocols involved.
`
`details + +
`
`handles
`application
`
`user
`processes
`
`kernel
`
`handles
`communication
`details
`
`application
`
`transport
`
`network
`
`link
`
`Ethernet
`
`Figure 1.2 Two hosts on a LAN running FTP.
`We have labeled one application box the FrP client and the other the PIP server.
`Most network applications are designed so that one end is the client and the other side
`the server. The server provides some type of service to clients, in this case access to files
`on the server host. In the remote login application, Telnet, the service provided to the
`client is the ability to login to the server's host.
`Each layer has one or more protocols for communicating with its peer at the same
`layer. One protocol, for example, allows the two TCP layers to communicate, and
`another protocol lets the two IP layers communicate.
`On the right side of Figure 1.2 we have noted that normally the application layer is
`a user process while the lower three layers are usually implemented in the kernel (the
`operating system). Although this isn't a requirement, it's typical and this is the way it's
`done under Unix.
`
`AA/SWA Ex. 1018, p.5 of 23
`American Airlines, et. al. v. Intellectual Ventures, et.al.
`IPR2025-00786
`
`

`

`3
`
`IP: Internet Protocol
`
`3.1
`
`Introduction
`IP is the workhorse protocol of the TCP /IP protocol suite. All TCP, UDP, ICMP, and
`IGMP data gets transmitted as IP datagrams (Figure 1.4). A fact that amazes many
`newcomers to TCP /IP, especially those from an X.25 or SNA background, is that IP pro-
`vides an unreliable, connectionless datagram delivery service.
`By unreliable we mean there are no guarantees that an IP datagram successfully gets
`to its destination. IP provides a best effort service. When something goes wrong, such
`as a router temporarily running out of buffers, IP has a simple error handling algorithm:
`throw away the datagram and try to send an ICMP message back to the source. Any
`required reliability must be provided by the upper layers (e.g., TCP).
`The term connectionless means that IP does not maintain any state information about
`successive datagrams. Each datagram is handled independently from all other data-
`grams. This also means that IP datagrams can get delivered out of order. If a source
`sends two consecutive datagrams (first A, then B) to the same destination, each is
`routed independently and can take different routes, with B arriving before A.
`In this chapter we take a brief look at the fields in the IP header, describe IP routing,
`and cover subnetting. We also look at two useful commands: ifconfig and netstat.
`We leave a detailed discussion of some of the fields in the IP header for later when we
`can see exactly how the fields are used. RFC 791 [Postel 1981a] is the official specifica-
`tion of IP.
`
`33
`
`AA/SWA Ex. 1018, p.6 of 23
`American Airlines, et. al. v. Intellectual Ventures, et.al.
`IPR2025-00786
`
`

`

`34
`
`IP: Internet Protocol
`
`Chapter 3
`
`3.2
`
`IP Header
`Figure 3.1 shows the format of an IP datagram. The normal size of the IP header is 20
`bytes, unless options are present.
`0
`
`31
`
`15 16
`r-bit heade1 8-bit type of service
`length
`(TOS)
`
`4-bit
`version
`
`16-bit identification
`
`16-bit total length (in bytes)
`3-bit I
`flags
`
`13-bit fragment offset
`
`8-bit time to live
`(TTL)
`
`I
`
`8-bit protocol
`
`16-bit header checksum
`
`20 bytes
`
`32-bit source IP address
`
`32-bit destination IP address
`
`options (if any)
`
`data
`
`Figure 3.1 IP datagram, showing the fields in the IP header.
`We will show the pictures of protocol headers in TCP /IP as in Figure 3.1. The most sig-
`nificant bit is numbered 0 at the left, and the least significant bit of a 32-bit value is num-
`bered 31 on the right.
`The 4 bytes in the 32-bit value are transmitted in the order: bits 0- 7 first, then bits
`8-15, then 16-23, and bits 24-31last. This is called big endian byte ordering, which is
`the byte ordering required for all binary integers in the TCP /IP headers as they traverse
`a network. This is called the network byte order. Machines that store binary integers in
`other formats, such as the little endian format, must convert the header values into the
`network byte order before transmitting the data.
`The current protocol version is 4, so IP is sometimes called 1Pv4. Section 3.10 dis-
`cusses some proposals for a new version of IP.
`The header length is the number of 32-bit words in the header, including any options.
`Since this is a 4-bit field, it limits the header to 60 bytes. In Chapter 8 we'll see that this
`limitation makes some of the options, such as the record
`option, useless today.
`The normal value of this field (when no options are present) is 5.
`The type-of-service field (TOS) is composed of a 3-bit precedence field (which is
`ignored today), 4 TOS bits, and an unused bit that must be 0. The 4 TOS bits are: mini-
`mize delay, maximize throughput, maximize reliability, and minimize monetary cost.
`
`AA/SWA Ex. 1018, p.7 of 23
`American Airlines, et. al. v. Intellectual Ventures, et.al.
`IPR2025-00786
`
`

`

`46
`
`IP: Internet Protocol
`
`Chapter3
`
`3. 7 A Subnet Example
`This example shows the subnet used in the text, and how two different subnet masks
`are used. Figure 3.10 shows the arrangement.
`
`Internet
`
`r -- ----- -- --- -------------- -- -------
`SLIP
`subnet
`140.252.13.64
`
`.66
`
`.65
`
`Ethernet, subnet 140.252.1
`
`140.252.1.29
`
`author's subnet: 140.252.13
`Figure 3.10 Arrangement of hosts and networks for author's subnet.
`If you compare this figure with the one on the inside front cover, you'll notice that
`we've omitted the detail that the connection from the router sun to the top Ethernet in
`Figure 3.10 is really a dialup SLIP connection. This detail doesn't affect our description
`of subnetting in this section. We'll return to this detail in Section 4.6 when we describe
`proxy ARP.
`The problem is that we have two separate networks within subnet 13: an Ethernet
`and a point-to-point link (the hardwired SLIP link). (Point-to-point links always cause
`problems since each end normally requires an IP address.) There could be more hosts
`and networks in the future, but not enough hosts across the different networks to justify
`using another subnet number. Our solution is to extend the subnet ID from 8 to 11 bits,
`and decrease the host ID from 8 to 5 bits. This is called variable-length subnets since most
`networks within the 140.252 network use an 8-bit subnet mask while our network uses
`an 11-bit subnet mask.
`RFC 1009 [Braden and Postel 1987] allows a subnetted network to use more than one subnet
`mask. The new Router Requirements RFC [Almquist 1993] requires support for this.
`The problem, however, is that not all routing protocols exchange the subnet mask along with
`the destination network ID. We'll see in Chapter 10 that RIP does not support variable-length
`subnets, while RIP Version 2 and OSPF do. We don't have a problem with our example, since
`RIP isn't required on the author's subnet.
`Figure 3.11 shows the IP address structure used within the author's subnet. The
`first 8 bits of the 11-bit subnet ID are always 13 within the author's subnet. For the
`remaining 3 bits of the subnet ID, we use binary 001 for the Ethernet, and binary 010 for
`
`AA/SWA Ex. 1018, p.8 of 23
`American Airlines, et. al. v. Intellectual Ventures, et.al.
`IPR2025-00786
`
`

`

`Section 3.8
`
`ifconfig Command
`
`47
`
`Class B
`
`16 bits
`net ID = 140.252
`
`Subnet mask:
`
`1 1 1 1 1 1 1 1
`
`1 1 1 1 1 1 1 1
`
`......
`
`----11 bits----
`5 bits
`host!D
`subnetiD
`I
`I
`I
`I
`I
`I
`I
`8 bits- 13
`.... 128 64 32 16 8 4 2 1
`1 1 1 o 0 o o 0 = OxffffffeO
`1 1 1 1 1 1 1 1
`= 255.255.255.224
`
`Figure 3.11 Using variable-length subnets.
`
`the point-to-point SLIP link. This variable-length subnet mask does not cause a prob-
`lem for other hosts and routers in the 140.252 network-as long as all datagrams des-
`tined for the subnet 140.252.13 are sent to the router sun (IP address 140.252.1.29) in
`Figure 3.10, and if sun knows about the 11-bit subnet ID for the hosts on its subnet 13,
`everything is fine.
`The subnet mask for all the interfaces on the 140.252.13 subnet is 255.255.255.224, or
`OxffffffeO. This indicates that the rightmost 5 bits are for the host ID, and the 27 bits
`to the left are the network ID and subnet ID.
`Figure 3.12 shows the allocation of IP addresses and subnet masks for the interfaces
`shown in Figure 3.10.
`Host
`IP address
`140.252.1.29
`sun
`140.252.13.33
`140.252.13.34
`140.252.13.35
`140.252.13.66
`140.252.13.65
`140.252.13.63
`
`svr4
`bsdi
`
`slip
`
`Subnetmask
`255.255.255.0
`255.255.255.224
`255.255.255.224
`255.255.255.224
`255.255.255.224
`255.255.255.224
`255.255.255.224
`
`Net ID/Subnet ID Host ID
`140.252.1
`29
`140.252.13.32
`1
`140.252.13.32
`2
`140.252.13.32
`3
`140.252.13.64
`2
`140.252.13.64
`1
`140.252.13.32
`31
`
`Comment
`on subnet 1
`on author's Ethernet
`
`on Ethernet
`point-to-point
`
`broadcast addr on Ethernet
`
`Figure 3.12 IP addresses on author's subnet.
`The first column is labeled "Host," but both sun and bsdi also act as routers, since
`they are multihomed and route packets from one interface to another.
`The final row in this table notes that the broadcast address for the Ethernet in Fig-
`ure 3.10 is 140.252.13.63: it is formed from the subnet ID of the Ethernet (140.252.13.32)
`and the low-order 5 bits in Figure 3.11 set to 1 (16 + 8 + 4 + 2 + 1 = 31). (We'll see in
`Chapter 12 that this address is called the subnet-directed broadcast address.)
`
`3.8
`
`ifconfig Command
`Now that we've described the link layer and the IP layer we can show the command
`used to configure or query a network interface for use by TCP /IP. The ifconfig(8)
`command is normally run at bootstrap time to configure each interface on a host.
`
`AA/SWA Ex. 1018, p.9 of 23
`American Airlines, et. al. v. Intellectual Ventures, et.al.
`IPR2025-00786
`
`

`

`Section 6.2
`
`ICMP Message Types
`
`71
`
`Query Error
`•
`
`type
`0
`3
`
`4
`5
`
`8
`9
`10
`11
`
`12
`
`13
`14
`15
`16
`17
`18
`
`code
`0
`
`0
`1
`2
`3
`4
`5
`6
`7
`8
`9
`10
`11
`12
`13
`14
`15
`0
`
`0
`1
`2
`3
`0
`0
`0
`
`0
`1
`
`0
`1
`0
`0
`0
`0
`0
`0
`
`Description
`echo reply (Ping reply, Chapter 7)
`destination unreachable:
`network unreachable (Section 9.3)
`host unreachable (Section 9.3)
`protocol unreachable
`port unreachable (Section 6.5)
`fragmentation needed but don't-fragment bit set (Section 11.6)
`source route failed (Section 8.5)
`destination network unknown
`destination host unknown
`source host isolated (obsolete)
`destination network administratively prohibited
`destination host administratively prohibited
`network unreachable for TOS (Section 9.3)
`host unreachable for TOS (Section 9.3)
`communication administratively prohibited by filtering
`host precedence violation
`precedence cutoff in effect
`source quench (elementary flow control, Section 11.11)
`redirect (Section 9 5):
`redirect for network
`redirect for host
`redirect for type-of-service and network
`redirect for type-of-service and host
`echo request (Ping request, Chapter 7)
`router advertisement (Section 9.6)
`router solicitation (Section 9.6)
`time exceeded:
`time-to-live equals 0 during transit (Traceroute, Chapter 8)
`time-to-live equals 0 during reassembly (Section 11.5)
`parameter problem:
`IP header bad (catchall error)
`required option missing
`timestamp request (Section 6.4)
`timestamp reply (Section 6.4)
`information request (obsolete)
`information reply (obsolete)
`address mask request (Section 6.3)
`address mask reply (Section 6.3)
`
`Figure 6.3 ICMP message types.
`
`•
`•
`•
`
`•
`•
`.
`•
`•
`•
`
`.
`.
`.
`.
`.
`•
`.
`•
`.
`•
`.
`•
`.
`.
`•
`•
`•
`.
`.
`.
`
`•
`
`.
`•
`.
`•
`
`5. A datagram whose source address does not define a single host. This means the
`source address cannot be a zero address, a loopback address, a broadcast
`address, or a multicast address.
`These rules are meant to prevent the broadcast storms that have occurred in the past
`when ICMP errors were sent in response to broadcast packets.
`
`AA/SWA Ex. 1018, p.10 of 23
`American Airlines, et. al. v. Intellectual Ventures, et.al.
`IPR2025-00786
`
`

`

`7
`
`Ping Program
`
`7.1
`
`Introduction
`The name "ping" stands for Packet InterNet Groper. The Ping program tests whether
`another host is reachable. The program sends an ICMP echo request message to a host,
`expecting an ICMP echo reply to be returned. (Figure 6.3 lists all the ICMP message
`types.)
`Normally if you can't Ping a host, you won't be able to Telnet or FfP to that host.
`Conversely, if you can't Telnet to a host, Ping is often the starting point to determine
`what the problem is. Ping also measures the round-trip time to the host, giving us some
`indication of how "far away'' that host is.
`In this chapter we'll use Ping as a diagnostic tool and to further explore ICMP. Ping
`also gives us an opportunity to examine the IP record route and timestamp options.
`Chapter 11 of [Stevens 1990] provides the source code for the Ping program.
`Years ago we could make the unqualified statement that lf we can't Ping a host, we can't Telnet
`or FIP to that host. With the increased awareness of security on the Internet, routers that pro-
`vide access control lists, and firewall gateways, unqualified statements like this are no longer
`true. Reachability of a given host may depend not only on reachability at the TP layer, but also
`on what protocol is being used, and the port numbers involved. Ping may show a host as
`being unreachable, yet we might be able to Telnet to port 25 (the mail server).
`
`7.2
`
`Ping Program
`We call U1e ping program that sends the echo requests the client, and the host being
`pinged the server. Most TCP /IP implementations support the Ping server directly in the
`kernel-the server is not a user process. (The two ICMP query services that we
`described in Chapter 6, the address mask and timestamp requests, are also handled
`directly by the kernel.)
`
`85
`
`AA/SWA Ex. 1018, p.11 of 23
`American Airlines, et. al. v. Intellectual Ventures, et.al.
`IPR2025-00786
`
`

`

`7 7
`
`UDP: User Datagram Protocol
`
`11.1
`
`Introduction
`UDP is a simple, datagram-oriented, transport layer protocol: each output operation by
`a process produces exactly one UDP datagram, which causes one IP datagram to be
`sent. This is different from a stream-oriented protocol such as TCP where the amount of
`data written by an application may have little relationship to what actually gets sent in
`an IP datagram.
`Figure 11.1 shows the encapsulation of a UDP datagram as an IP datagram.
`
`IP datagram
`
`1 ...
`
`UDP datagram
`
`UDPdata
`
`IP
`header
`20 bytes
`
`UDP
`header
`8 bytes
`Figure 11.1 UDP encapsulation.
`RFC 768 [Postel1980] is the official specification of UDP.
`UDP provides no reliability: it sends the datagrams that the application writes to
`the IP layer, but there is no guarantee that they ever reach their destination. Given this
`lack of reliability, we are tempted to think we should avoid UDP and always use a reli-
`able protocol such as TCP. After we describe TCP in Chapter 17 we'll return to this
`topic and see what types of applications can utilize UDP.
`
`143
`
`AA/SWA Ex. 1018, p.12 of 23
`American Airlines, et. al. v. Intellectual Ventures, et.al.
`IPR2025-00786
`
`

`

`144
`
`UDP: User Datagram Protocol
`
`Chapter 11
`
`The application needs to worry about the size of the resulting IP datagram. If it
`exceeds the network's MTU (Section 2.8), the IP datagram is fragmented. This applies
`to each network that the datagram traverses from the source to the destination, not just
`the first network connected to the sending host. (We defined this as the path MTU in
`Section 2.9.) We examine IP fragmentation in Section 11.5.
`
`11.2 UDP Header
`Figure 11.2 shows the fields in the UDP header.
`15 16
`0
`
`16-bit source port number
`
`16-bit UDP length
`
`7
`L
`
`data (if any)
`
`16-bit UDP checksum
`
`16-bit destination port number T
`1
`
`31
`
`8 bytes
`
`Figure 11.2 UDP header.
`The port numbers identify the sending process and the receiving process. In Figure 1.8
`we showed that TCP and UDP use the destination port number to demultiplex incom-
`ing data from IP. Since IP has already demultiplexed the incoming IP datagram to
`either TCP or UDP (based on the protocol value in the IP header), this means the TCP
`port numbers are looked at by TCP, and the UDP port numbers by UDP. The TCP port
`numbers are independent of the UDP port numbers.
`Despite this independence, if a well-known service is provided by both TCP and UDP, the port
`number is normally chosen to be the same for both transport layers. This is purely for conve-
`nience and is not required by the protocols.
`The UDP length field is the length of the UDP header and the UDP data in bytes.
`The minimum value for this field is 8 bytes. (Sending a UDP datagram with 0 bytes of
`data is OK.) This UDP length is redundant. The IP datagram contains its total length in
`bytes (Figure 3.1), so the length of the UDP datagram is this total length minus the
`length of the IP header (which is specified by the header length field in Figure 3.1).
`
`11.3 UDP Checksum
`The UDP checksum covers the UDP header and the UDP data. Recall that the checksum
`in the IP header only covers the IP header-it does not cover any data in the IP
`
`AA/SWA Ex. 1018, p.13 of 23
`American Airlines, et. al. v. Intellectual Ventures, et.al.
`IPR2025-00786
`
`

`

`77
`
`TCP: Transmission Control
`Protocol
`
`17.1
`
`Introduction
`In this chapter we provide a description of the services provided by TCP for the applica-
`tion layer. We also look at the fields in the TCP header. In the chapters that follow we
`examine all of these header fields in more detail, as we see how TCP operates.
`Our description of TCP starts in this chapter and continues in the next seven chap-
`ters. Chapter 18 describes how a TCP connection is established and terminated, and
`Chapters 19 and 20 look at the normal transfer of data, both for interactive use (remote
`login) and bulk data (file transfer). Chapter 21 provides the details of TCP's timeout
`and retransmission, followed by two other TCP timers in Chapters 22 and 23. Finally
`Chapter 24 takes a look at newer TCP features and TCP performance.

`The original specification for TCP is RFC 793 [Postel1981c], although some errors in
`that RFC are corrected in the Host Requirements RFC.
`
`17.2 TCP Services
`Even though TCP and UDP use the same network layer (IP), TCP provides a totally dif-
`ferent service to the application layer than UDP does. TCP provides a connection-
`oriented, reliable, byte stream service.
`The term connection-oriented means the two applications using TCP (normally con-
`sidered a client and a server) must establish a TCP connection with each other before
`they can exchange data. The typical analogy is dialing a telephone number, waiting for
`the other party to answer the phone and say "hello," and then saying who's calling. In
`Chapter 18 we look at how a connection is established, and disconnected some time
`later when either end is done.
`
`223
`
`AA/SWA Ex. 1018, p.14 of 23
`American Airlines, et. al. v. Intellectual Ventures, et.al.
`IPR2025-00786
`
`

`

`224
`
`TCP: Transmission Control Protocol
`
`Chapter 17
`
`There are exactly two end points communicating with each other on a TCP connec-
`tion. Concepts that we talked about in Chapter 12, broadcasting and multicasting,
`aren't applicable to TCP.
`TCP provides reliability by doing the following:
`• The application data is broken into what TCP considers the best sized chunks to
`send. This is totally different from UDP, where each write by the application
`generates a UDP datagram of that size. The unit of information passed by TCP
`to IP is called a segment. (See Figure 1.7, p. 10.) In Section 18.4 we'll see how
`TCP decides what this segment size is.
`• When TCP sends a segment it maintains a timer, waiting for the other end to
`acknowledge reception of the segment. If an acknowledgment isn't received in
`time, the segment is retransmitted. In Chapter 21 we'll look at TCP's adaptive
`timeout and retransmission strategy.
`• When TCP receives data from the other end of the connection, it sends an
`acknowledgment. This acknowledgment is not sent immediately, but normally
`delayed a fraction of a second, as we discuss in Section 19.3.
`• TCP maintains a checksum on its header and data. This is an end-to-end check-
`sum whose purpose is to detect any modification of the data in transit. If a seg-
`ment arrives with an invalid checksum, TCP discards
`it and doesn't
`acknowledge receiving it. (It expects the sender to time out and retransmit.)
`• Since TCP segments are transmitted as IP datagrams, and since IP datagrams
`can arrive out of order, TCP segments can arrive out of order. A receiving TCP
`resequences the data if necessary, passing the received data in the correct order
`to the application.
`• Since IP datagrams can get duplicated, a receiving TCP must discard duplicate
`data.
`• TCP also provides flow control. Each end of a TCP connection has a finite
`amount of buffer space. A receiving TCP only allows the other end to send as
`much data as the receiver has buffers for. This prevents a fast host from taking
`all the buffers on a slower host.
`A stream of 8-bit bytes is exchanged across the TCP connection between the two
`applications. There are no record markers automatically inserted by TCP. This is what
`we called a byte stream service. If the application on one end writes 10 bytes, followed by
`a write of 20 bytes, followed by a write of 50 bytes, the application at the other end of
`the connection cannot tell what size the individual writes were. The other end may
`read the 80 bytes in four reads of 20 bytes at a time. One end puts a stream of bytes into
`TCP and the same, identical stream of bytes appears at the other end.
`Also, TCP does not interpret the contents of the bytes at all. TCP has no idea if the
`data bytes being exchanged are binary data, ASCII characters, EBCDIC characters, or
`whatever. The interpretation of this byte stream is up to the applications on each end of
`the connection.
`
`AA/SWA Ex. 1018, p.15 of 23
`American Airlines, et. al. v. Intellectual Ventures, et.al.
`IPR2025-00786
`
`

`

`Section 17.3
`
`TCP Header
`
`225
`
`This treatment of the byte stream by TCP is similar to the treatment of a file by the Unix oper-
`ating system. The Unix kernel does no interpretation whatsoever of the bytes that an applica-
`tion reads or write-that is up to the applications. There is no distinction to the Unix kernel
`between a binary file or a file containing lines of text.
`
`17.3 TCP Header
`Recall that TCP data is encapsulated in an IP datagram, as shown in Figure 17.1.
`
`IP datagram
`
`TCP segment
`
`.I
`
`TCP data
`
`•I
`I
`
`I•
`I
`
`IP
`header
`20 bytes
`
`TCP
`header
`20 bytes
`Figure 17.1 Encapsulation of TCP data in an IP datagram.
`Figure 17.2 shows the format of the TCP header. Its normal size is 20 bytes, unless
`options are present.
`
`0
`
`15 16
`
`31
`
`16-bit source port number
`
`16-bit destination port number
`
`32-bit sequence number
`
`32-bit acknowledgment number
`
`20 bytes
`
`4-bit header I
`length
`
`reserved
`(6 bits)
`
`16-bit TCP checksum
`
`16-bit window size
`
`16-bit urgent pointer
`
`7
`
`7
`
`options (if any)
`
`data (if any)
`
`Figure 17.2 TCP header.
`
`7
`L
`
`AA/SWA Ex. 1018, p.16 of 23
`American Airlines, et. al. v. Intellectual Ventures, et.al.
`IPR2025-00786
`
`

`

`226
`
`TCP: Transmission Control Protocol
`
`Chapter 17
`
`Each TCP segment contains the source and destination port number to identify the
`sending and receiving application. These two values, along with the source and desti-
`nation IP addresses in the IP header, uniquely identify each connection.
`The combination of an IP address and a port number is sometimes called a socket.
`This term appeared in the original TCP specification (RFC 793), and later it also became
`used as the name of the Berkeley-derived programming interface (Section 1.15). It is the
`socket pair (the 4-tuple consisting of the client IP address, client port number, server IP
`address, and server port number) that specifies the two end points that uniquely identi-
`fies each TCP connection in an internet-
`The sequence number identifies the byte in the stream of data from the sending TCP
`to the receiving TCP that the first byte of data in this segment represents. If we consider
`the stream of bytes flowing in one direction between two applications, TCP numbers
`each byte with a sequence number. This sequence number is a 32-bit unsigned number
`that wraps back around to 0 after reaching 232 - 1.
`When a new connection is being established, the SYN flag is turned on. The
`sequence number field contains the initial sequence number (ISN) chosen by this host for this
`connection. The sequence number of the first byte of data sent by this host will be the
`ISN plus one because the SYN flag consumes a sequence number. (We describe addi-
`tional details on exactly how a connection is established and terminated in the next
`chapter where we'll see that the FIN flag consumes a sequence number also.)
`Since every byte that is exchanged is numbered, the acknowledgment number contains
`the next sequence number that the sender of the acknowledgment expects to receive.
`This is therefore the sequence number plus 1 of the last successfully received byte of
`data. This field is valid only if the ACK flag (described below) is on.
`Sending an ACK costs nothing because the 32-bit acknowledgment number field is
`always part of the header, as is the ACK flag. Therefore we'll see that once a connection
`is established, this field is always set and the ACK flag is always on.
`TCP provides a full-duplex service to the application layer. This means that data can
`be flowing in each direction, independent of the other direction. Therefore, each end of
`a connection must maintain a sequence number of the data flowing in each direction.
`TCP can be described as a sliding-window protocol without selective or negative
`acknowledgments.
`(The sliding window ·protocol used for data transmission is
`described in Section 20.3.) We say that TCP lacks selective acknowledgments because
`the acknowledgment number in the TCP header means that the sender has successfully
`received up through but not including that byte. There is currently no way to acknowl-
`edge selected pieces of the data stream. For example, if bytes 1-1024 are received OK,
`and the next segment contains bytes 2049-3072, the receiver cannot acknowledge this
`new segment. All it can send is an ACK with 1025 as the acknowledgment number.
`There is no means for negatively acknowledging a segment. For example, if the seg-
`ment with bytes 1025-2048 did arrive, but had a checksum error, all the receiving TCP
`can send is an ACK with 1025 as the acknowledgment number. In Section 21.7 we'll see
`how duplicate acknowledgments can help determine that packets have been lost.
`The header length gives the length of the header in 32-bit words. This is required
`because the length of the options field is variable. With a 4-bit field, TCP is limited to a
`60-byte header. Without options, however, the normal size is 20 bytes.

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