IFSM 310 – Cloud Computing vs. Client-Server Computing - DUE FRIDAY

twinkletoes
IntrotoNetworkingChapter6.pdf

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