`
`James F. Kurose ® Keith W. Ross”
`
`1
`
`APPLE 1024
`Apple v. Ericsson
`IPR2022-00343
`
`APPLE 1024
`Apple v. Ericsson
`IPR2022-00343
`
`1
`
`
`
`—————
`
`
`
`240
`
`CHAPTER 3.
`
`*
`
`TRANSPORT LAYER
`
`provides error checking, it does not do anything to recover from an error. Some
`implementations of UDP simply discard the damaged segment; others pass the dam-
`aged segment to the application with a warning.
`That wraps up our discussion of UDP. We will soon see that TCP offers reliable
`data transfer to its applications as well as other services that UDP doesn’t offer. Natu-
`rally, TCP is also more complex than UDP. Before discussing TCP, however, it will be
`useful to step back and first discuss the underlying principles of reliable data transfer.
`
`34.4 Principles of Reliable Data Transfer
`
`In this section, we consider the problem ofreliable data transfer in a general con-
`text. This is appropriate since the problem of implementing reliable data transfer
`occurs not onlyat the transport layer, but also at the link layer and the application
`layer as well. The general problem is thus of central importance to networking.
`Indeed, if one had toidentify a “top-ten” list of fundamentally important problems
`in all of networking, this would be a candidate to lead the list. In the next section
`we'll examine TCP and show,in particular, that TCP exploits manyof the principles
`that we are about to describe.
`Figure 3.8 illustrates the framework for our study of reliable data transter. The
`service abstraction provided to the upper-layer entities is that of a reliable channel
`through which data can be transferred. With a reliable channel, no transferred data
`bits are corrupted (flipped from 0 to 1, or vice versa) or lost, and all are delivered in
`the order in which they were sent. This is precisely the service model offered by
`TCPto the Internet applications that invokeit.
`It is the responsibility of a reliable data transfer protocol to implement this
`service abstraction. This task is made difficult by the fact that the layer belowthe
`reliable data transfer protocol may be unreliable. For example, TCP is a reliable data
`transfer protocol that is implemented on top of an unreliable (IP) end-to-endnet-
`work layer. More generally, the layer beneath the two reliably communicating end
`points might consist of a single physical link (as in the case of a link-level data
`transfer protocol) or a global internetwork (as in the case ofa transport-level proto-
`col). For our purposes, however, we can view this lower layer simply as an unreli-
`able point-to-point channel.
`In this section, we will incrementally develop the sender and receiver sides of a
`reliable data transfer protocol, considering increasingly complex models of the under-
`lying channel. Figure 3.8(b) illustrates the interfaces for our data transfer protocol. The
`sending side of the data transfer protocol will be invoked from above bya call to
`rdt_send_( ). It will pass the data to be delivered to the upperlayerat the receiving
`side. (Here rdt standsfor reliable data transfer protocol and _sendindicates thatthe
`sending side of rdt is being called. The first step in developing any protocolis to
`
`choose a good name!) On the receiving side, rdt_rev( ) will be called when a packet
`
`2
`
`
`
`
`
`3.4
`
`*
`
`PRINCIPLES OF RELIABLE DATA TRANSFER
`
`24]
`
`
`
`Application
`layer
`
`Transport
`layer
`
`
`
`Unreliable channel
`
`EE8SLtwine atta0).RomesbteattsotaEsenna MMaoe aes
`
`le
`l=
`
`1
`
`Ss
`
`& ‘
`
`]
`a
`n
`¥
`BB7m
`Seke|
`
`ateueke
`
`
`
`
`
`deliverdata
`rdt send)
`
`
`Reliable data
`
`
`transfer protocol
`i-
`Reliable data
`
`
`transfer protocol
`
`
`(sending side)
`ir
`(receiving side}
`
`
`udt_send(})
`a
`rdt_rev()
`
`
`
`n
`Network
`s
`layer
`
`eee ne
`a. Provided service
`b. Service implementation
`
`Key:
`WBbata BRpacket
`Figure 3.8 ¢ Reliable data transfer: Service model and service
`implementation
`
`
`
`amives from the receiving side ofthe channel. When the rdt protocol wants to deliver
`to the upperlayer, it will do so by calling deliverdata( ). Inthe following
`t use the terminology “packet”rather than transport-layer “segment.” Because the
`developed in this section applies to computer networks in general and notjust to
`
`the Internet transport layer, the generic term “packet”is perhaps more appropriate here,
`In this section we consider only the case ofunidirectional data transfer, thatis,
`
`ita transfer from the sending to the receiving side. The case of reliable bidirectional
`is, full-duplex) data transfer is Conceptually no more difficult but considerably
`
`more tedious to explain. Although we consider only unidirectional data transfer, it is
`important to note that the sending and receiving sides of our protocolwill nonetheless
`meu’ to transmit packets in both directions, as indicated in Figure 3.8. We will see
`nortly that, in addition to exchanging packets containing the data to be transferred, the
`seniling and receiving sides ofrdt will also need to exchangecontrol packets back and
`
`
`
`3
`
`