IFSM 310 – Cloud Computing vs. Client-Server Computing - DUE FRIDAY
Chapter 6
Transport Layer
The next layer up from the Internetworking layer is the Transport
layer. A key element of the Internetworking layer is that it does
not attempt to guarantee delivery of any particular packet. The
Internetworking layer is nearly perfect, but sometimes packets
can be lost or misrouted.
!"#$%&'"(
)&&*+,#(+'$
-$(."$.(/'"0
1+$0
Figure 6.1: The Transport Layer
But users of the network want to reliably send entire files or mes-
sages across the Internet. A network is not much good to us if
all it can do is send packets that are received most of the time.
For the network to be useful, all of the packets need to be re-
assembled into the right order to reconstruct the message on the
receiving system. The network must also deal with packets that
arrive out of order or never arrive at all. The Transport layer is
where we handle reliability and message reconstruction on the
63
64 CHAPTER 6. TRANSPORT LAYER
destination computer.
Just like the IP layer, the Transport layer adds a small amount of
data to each packet to help solve the problems of packet reassem-
bly and retransmission.
6.1 Packet Headers
If you were to look at a packet going across one of many links
between its source and destination computers, you would see a
link header, an IP header, and a Transport Control Protocol (TCP)
header, along with the actual data in the packet.
!"#$%&%'#
!"#$%&'()'*
!"#$%&%'#%&%''(
+,%&'()'*
)#"*%&%+,,-.*
-.,%&'()'*
//0
/(0(%,(1$'0
Figure 6.2: Headers and Data
The link header is removed when the packet is received on one
link and a new link header is added when the packet is sent out
on the next link on its journey. The IP and TCP headers stay with
a packet as it is going across each link in its journey. Remember
that a packet may go across several types of link layers as it is
routed through the Internet.
The IP header holds the source and destination Internet Protocol
(IP) addresses as well as the Time to Live (TTL) for the packet. The
IP header is set on the source computer and is unchanged (other
than the TTL) as the packet moves through the various routers on
its journey.
The TCP headers indicate where the data in each packet belongs.
As the source computer breaks the message or file into packets,
it keeps track of the position of each packet relative to the begin-
ning of the message or file and places the offset in each packet
that is created and sent.
6.2. PACKET REASSEMBLY AND RETRANSMISSION 65
6.2 Packet Reassembly and Retransmis-
sion
As the destination computer receives the packets, it looks at the
offset position from the beginning of the message so it can put
the packet into the proper place in the reassembled message.
Simply by making sure to put the packet data at the correct posi-
tion relative to the beginning of the message, the Transport layer
easily handles packets that arrive out of order. If it receives a
packet further down a message, it places that packet in a buffer,
keeping track of the fact that there is now a gap in the message
that is being reconstructed. When the earlier packet arrives a
moment later, it fits perfectly into the gap in the reassembled
data.
To avoid overwhelming the network, the Transport layer in the
sending computer only sends a certain amount of data before
waiting for an acknowledgement from the Transport layer on
the destination computer that the packets were received. The
amount of data that the sending computer will send before
pausing to wait for an acknowledgment is called the “window
size”.
The sending computer keeps track of how quickly it starts to
receive acknowledgements from the receiving computer. If the
acknowledgments come back quickly, the sending computer in-
creases its window size, but if the acknowledgments come back
slowly, the sending computer transmits less data. By adjusting
the window size, transmitting computers can send large amounts
of data quickly over fast connections that have light loads. When
sending data over slow or heavily loaded links, they can send the
data in a way that does not overwhelm the network.
If a packet is lost, it will never arrive at the destination computer
and so the destination computer will never send an acknowledg-
ment for that data. Because the sending computer does not re-
ceive an acknowledgment, it quickly reaches the point where it
has sent enough unacknowledged data to fill up the window and
stops sending new packets.
At this point, both computers are waiting. The sending computer
is waiting for an acknowledgement for a lost packet that will never
come and the receiving computer is waiting for a lost packet that
will never come. To make sure that the computers do not wait
forever, the destination computer keeps track of the amount of
time since it received the last packet of data. At some point, the
66 CHAPTER 6. TRANSPORT LAYER
receiving computer decides too much time has passed and sends
a packet to the sending computer indicating where in the stream
the receiving computer has last received data. When the sending
computer receives this message, it “backs up” and resends data
from the last position that the receiving computer had success-
fully received.
Figure 6.3: Waiting for a Lost Packet
The combination of the receiving computer acknowledging re-
ceived data, not allowing the transmitting computer to get too
far ahead (window size), and the receiving computer requesting
the sending computer to “back up and restart” when it appears
that data has been lost creates a relatively simple method to reli-
ably send large messages or files across a network.
While the Transport layer is sending a stream of data, it contin-
uously monitors how quickly it receives acknowledgements and
dynamically adjusts its window size. This ensures that data is
sent rapidly when the connection between two computers is fast
and much more slowly when the connection has slow links or a
heavy load.
6.3. THE TRANSPORT LAYER IN OPERATION 67
6.3 The Transport Layer In Operation
One of the key elements of the Transport layer is that the sending
computer must hold on to all of the data it is sending until the
data has been acknowledged. Once the receiving computer ac-
knowledges the data, the sending computer can discard the sent
data. We can look at this graphically when a message is broken
into many packets. Here, the first ten packets of the message
have been sent and acknowledged by the destination computer
(‘a’). The sending computer has sent six more packets (‘S’), and
then stopped because it reached its window size.
!"#$%& '&(()*&
+$),(-"$./ 0)1&$
2&(.3,).3",/ +$),(-"$./
0)1&$
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
""""""""######
""""""""$$%$
#%#%#
Figure 6.4: Buffering in the Transport Layer
There are three packets that have been sent but not yet received
(“S”). Since there are many hops in the network, it is very com-
mon for more than one packet to be enroute in the network at the
same time.
The Transport layer on the receiving computer has received and
acknowledged ten packets and delivered them to the receiving
application (‘a’).1 The Transport layer on the destination com-
puter has received more three packets (‘R’), but one packet is out
of order. Receiving a packet out of order is not a cause for con-
cern if the missing packet arrives in a reasonably short amount
of time. As long as all the packets are received, the receiving
Transport layer will reconstruct the message, fitting the packets
together like puzzle pieces, and deliver them to the receiving ap-
plication.
1We talk about the Application layer in later material.
68 CHAPTER 6. TRANSPORT LAYER
6.4 Application Clients and Servers
The purpose of the Transport layer is to provide reliable connec-
tions between networked applications so those applications can
send and receive streams of data. For an application, this is as
simple as asking the Transport layer to make a connection to an
application running on a remote host. We call the application that
initiates the connection on the local computer the “client” and the
application that responds to the connection request the “server”.
We call the combination of the two networked applications at the
ends of the connection a “client/server” application because the
two pieces of the application must work together.
A lot of engineering has gone into the lower three layers of our
architecture to make it easy to open a connection to a remote
computer and then send and receive data over that connection.
6.5 Server Applications and Ports
When a client application wants to make a connection to a re-
mote computer, it is important that the connection is made to
the correct server application on that remote computer. A remote
computer might have any number of different server applications
running at the same time. Example server applications would
include:
• Web Server
• Video Server
• Mail Server
For instance, a web client (a browser) needs to connect to the web
server running on the remote computer. So a client application
not only needs to know which remote computer to connect to, it
also needs to choose a particular application to interact with on
that remote computer.
We use a concept called “ports” to allow a client application to
choose which server application it wants to interact with. Ports
are like telephone extensions. All of the extensions have the
same phone number (IP Address) but each extension (server ap-
plication) has a different extension number (port number).
When a server application starts up, it “listens” for incoming con-
nections on the specified port. Once the server application has
6.5. SERVER APPLICATIONS AND PORTS 69
Figure 6.5: TCP Ports
registered that it is ready to receive incoming connections, it
waits until the first connection is made.
So that client applications know which port to connect to, there is
a list of well-known default ports for various server applications:
• Telnet (23) - Login
• SSH (22) - Secure Login
• HTTP (80) - World Wide Web
• HTTPS (443) - Secure Web
• SMTP (25) - Incoming Mail
• IMAP (143/220/993) - Mail Retrieval
• POP (109/110) - Mail Retrieval
• DNS (53) - Domain Name Resolution
• FTP (21) - File Transfer
These are the normal ports for these applications. Sometimes
servers will make applications available at non-standard ports. If
you are doing web development, you may run a web server at a
non-standard port like 3000, 8080, or 8888. If you see a URL like:
http://testing.example.com:8080/login
70 CHAPTER 6. TRANSPORT LAYER
the “8080” indicates that your browser is going to use the web
protocols to interact with the server, but connect to port 8080
instead of the default port 80.
6.6 Summary
In a sense, the purpose of the Transport layer is to compensate
for the fact that the Link and Internetworking layers might lose
data. When the two lower layers lose or reroute packets, the
Transport layer works to reassemble and/or retransmit that data.
The existence of the Transport layer makes it possible for the two
lower layers to ignore retransmission and rate-limiting issues.
Part of the goal of a layered architecture is to break an overly
complex problem into smaller subproblems. Each layer focuses
on solving part of the overall problem and assumes that the other
layers solve the problems they are supposed to solve.
6.7 Glossary
acknowledgement: When the receiving computer sends a no-
tification back to the source computer indicating that data has
been received.
buffering: Temporarily holding on to data that has been sent or
received until the computer is sure the data is no longer needed.
listen: When a server application is started and ready to accept
incoming connections from client applications.
port: A way to allow many different server applications to be
waiting for incoming connections on a single computer. Each
application listens on a different port. Client applications make
connections to well-known port numbers to make sure they are
talking to the correct server application.
6.8 Questions
You can take this quiz online at http://www.net-intro.com/quiz/
1. What is the primary problem the Transport (TCP) layer is sup-
posed to solve?
6.8. QUESTIONS 71
a) Move packets across multiple hops from a source to destina-
tion computer
b) Move packets across a single physical connection
c) Deal with lost and out-of-order packets
d) Deal with encryption of sensitive data
2. What is in the TCP header?
a) Physical address
b) IP Address and Time to Live
c) Port number and offset
d) Which document is being requested
3. Why is “window size” important for the proper functioning of
the network?
a) Because packets that are too large will clog fiber optic con-
nections
b) It prevents a fast computer from sending too much data on
a slow connection
c) It limits the number of hops a packet can take before it is
dropped
d) It determines what part of an IP address is the network num-
ber
4. What happens when a sending computer receives an ac-
knowledgement from the receiving computer?
a) The sending computer resends the data to make sure it was
transmitted accurately
b) The sending computer sends more data up to the window
size
c) The sending computer sends an “acknowledgment for the
acknowledgment”
d) The sending computer sends the acknowledgement to the
Internet Map (IMAP)
5. Which of these detects and takes action when packets are
lost?
a) Sending computer
b) Network gateway
72 CHAPTER 6. TRANSPORT LAYER
c) Core Internet routers
d) Receiving computer
6. Which of these retains data packets so they can be retrans-
mitted if a packets lost?
a) Sending computer
b) Network gateway
c) Core Internet routers
d) Receiving computer
7. Which of these is most similar to a TCP port?
a) Train station
b) Undersea network cable
c) Apartment number
d) Sculpture garden
8. Which half of the client/server application must start first?
a) Client
b) Server
9. What is the port number for the Domain Name System?
a) 22
b) 80
c) 53
d) 143
10. What is the port number for the IMAP mail retrieval protocol?
a) 22
b) 80
c) 53
d) 143