Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

CMPT 371

Data Communications and Networking


Introducing the Application Layer

Janice Regan, CMPT 128, Jan 2007

What is in the application layer


All user applications
Electronic mail, instant messaging, telephony
Web, video, music, social networking
Remote login
File transfer and file sharing
Multiplayer networked games
Shopping, point of sale apps
What else?
Janice Regan Sept. 2007-2016

Principals and Goals


Application programmer will
write apps in various languages that will run
on multiple different end systems
Choose best application architecture

Application programs use APIs to access


services that
allow your information to travel through the
network core (application programmer does
not write these services)
Janice Regan Sept. 2007-2016

How do apps communicate


Applications may be built on a reliable
network (TCP) or a best effort network
(UDP). In the case of the best effort
network the application itself must take
care of assuring the communications are
as reliable as necessary

Janice Regan Sept. 2007-2016

Some Application layer Protocols


Users most commonly directly use application
layer protocols like Hypertext Transfer Protocol
(HTTP), File Transfer Protocol (FTP), Simple
Mail Transfer Protocol (SMTP); Telnet,
Other common application layer protocols help
facilitate the use and management of TCP/IP
networks: These include Domain Name System
(DNS), the Simple Network Management
Protocol (SNMP).
Janice Regan Sept. 2007-2016

Network application architectures


Client server
Servers provide services to other hosts, always available
Clients request services from other hosts, when needed (not
always connected)
Examples include, web, file servers, e-mail
When a service is heavily used it may be provided by a group of
servers, not just one (load balancing)
Server
Server

Client

Client

Janice Regan Sept. 2007-2016

Client

Client

Client
5

Network application architectures


P2P (peer to peer)
Arbitrary pairs of hosts directly communicating (no server)
Easily scalable, each host both services and makes requests
Decentralized, highly distributed, may be difficult to manage to
provide reliable service
If only one host has the information and it leaves the application
the information is lost

Client

Client
Client
Client

Examples: bit torrent, Skype, instant messaging


Janice Regan Sept. 2007
2007-2016

Hybrid client-server and P2P


Instant Messaging
Sending messages is P2P
Central server manages
client detection (are you on right now?)
Searching for friends addresses

Skype
Voice over IP is a P2P application
Your client accesses a centralized server to
manage addresses and memberships
Janice Regan Sept. 2007-2016

Issues with P2P


P2P distributes the function of the server
over many users, this increases upstream
traffic, stresses ISPs with asymmetric
services (ADSL, download faster than upload)
Difficulty in proving security in P2P apps
Perception that supporting P2P is
supporting illegal applications
Janice Regan Sept. 2007-2016

Communication between
processes
In order to build an application that
communicates between processes (on the same
or different hosts) need a way to send
information, (data messages) from one process
to another.
To write a user application you need not know
how this communication works in detail, but you
need a set of services that allows you to send
messages.
The interface for sending messages will likely be the
interface to the transport layer.
Janice Regan Sept. 2007-2016

Communication between
processes
.

Think in terms of a client server architecture:


If your architecture is P2P think of the peer that is
requesting (receiving) as the client and the host that
is replying (sending) as the server.

Any communication can be thought of in terms


of a series of communications from one process
to another
If your architecture is P2P, the identity of the client
and server may reverse for different communications
in the series

Janice Regan Sept. 2007-2016

10

Building an application
How do we build a communication channel in an
application?
Usually use the socket API
A socket is one end of a communication connection
A process may include more than one communication
connection, that is more than one socket
Your application will build the needed sockets, then connect
them (or wait for them to be connected to) to the socket at the
other end of the communication.

We will look at sockets in much more detail when we


discuss the transport layer.
Janice Regan Sept. 2007-2016

11

Socket API
Basic ideas: how to use the socket API
A socket is one end of a communication connection
A socket includes
The address of the host running the process (IP address)
The address of the process running on the host (port)
A specification of the transport protocol to use (TCP, UDP).

Your application will build needed sockets


Each socket will
Wait for a request to connect to another socket
Make a request to connect to another socket
Janice Regan Sept. 2007-2016

12

After connection?
What happens after we build our sockets and
connect them to each other so the two
processes can communicate?
The purpose of the connection is to enable the
transfer of information between the processes,
so the next step will be transferring information.
To transfer information we send messages from
one process to the other through the
communication connection
Janice Regan Sept. 2007-2016

13

After connection?
To transfer information we send messages from
one process to the other
The application level protocol developed for the
particular application will define
The types of messages
The syntax of each message (layout and number of
fields)
The semantics of each message (the content of each
field, its meaning and use)
Rules for processing each type of message and
building replies
Janice Regan Sept. 2007-2016

14

Transport requirements
Some application will tolerate some data loss
Voice, some interactive games, and video will
file transfer, many web apps, and email will not

Some apps are time sensitive


video games, video conferencing, streamed video

Some apps are bandwidth sensitive and require


continuous minimum throughput
audio, video, telephony

Some apps can tolerate bursts of throughput (elastic


throughput) email, file transfer,
Janice Regan Sept. 2007-2016

15

Available Transport services


TCP
connection oriented (not a physical
connection)
Reliable (guaranteed delivery)
No guarantee on the rate of delivery, will slow
down transmission in case of congestion
Available congestion control mechanisms

Janice Regan Sept. 2007-2016

16

Available Transport services


UDP
Simple, efficient
Best effort delivery, no guarantee of delivery
No congestion control, will not slow down
transmission in case of congestion.
Can to a certain extent build guarantee into
your application and avoid congestion control
slowdowns to support rate critical (inelastic)
applications
Janice Regan Sept. 2007-2016

17

Internet applications (TCP)


Application
e-mail
remote access
Web
file transfer

protocol
SMTP [RFC 2821]
Telnet [RFC 854]
HTTP [RFC 2616]
FTP [RFC 959]

Janice Regan Sept. 2007-2016

18

CMPT 371
Data Communications and Networking
HTTP

Janice Regan, CMPT 128, Jan 2007

19

HTTP
HyperText Transfer Protocol
The main application layer communication protocol of
the world wide web (WWW)

For detailed information on any protocol refer to


the RFC documents (Request for comment)
these are the standard reference documents
defining protocols
For HTTP see RFC 1945 and RFC 2616
You will not be expected to read all the RFCs
for this course
Janice Regan Sept. 2007-2016

20

WWW: objects
When we use WWW we provide a URL
and expect to see the web page displayed
by our browser
Each web page is made up of many
objects including images, text, audio or
video clips, animations, applets and other
components

Janice Regan Sept. 2007-2016

21

WWW: objects
Each web page is described by an HTML
file
The HTML file will include a reference (a
separate URL) for each of the objects on the
page. The HTML file is an object
After the HTML file is requested and received
in response to the HTML request, the objects
embedded in it can be individually requested
All the requested embedded objects can then
be assembled in the displayed page
Janice Regan Sept. 2007-2016

22

WWW: using agents


Each browser is called an agent
Agents use HTTP to communicate across
the Internet.
Agents are clients, they request
information, the objects on a web page
For any operating system your agent is
always uses HTTP to communicate
across the Internet
Janice Regan Sept. 2007-2016

23

WWW basic operation


Your agent (browser) is the client in a
client server system
The hosts containing the objects that
make up your web page are servers
You (the client) must request the objects
from the servers (which store and provide
the objects) using HTTP
HTTP is an application layer protocol
Janice Regan Sept. 2007-2016

24

Access a web page


When we type a URL into our browser we
expect to see a page displayed. How does
it happen?
HTTP is used to send requests from your
browser to the web server
HTTP is used by the server the send a
replies to your HTTP requests

Janice Regan Sept. 2007-2016

25

Steps to access an object


The web server must first be located: use the URL
A TCP (reliable transport protocol) connection is
made between the client and the server
The client sends a HTTP request for the object to
the server, (or a series of HTTP requests)
The server will process the request and if
appropriate sends a HTTP reply containing the
requested object to the client
The client will add the object to the page and
request the next object
Janice Regan Sept. 2007-2016

26

Non-persistent connections
In the original version (1.0) of HTTP it was
assumed that a TCP connection would be made
to transfer each object.
As soon as the single object had been
transferred the connection would be terminated
A new connection would be made for the next
object that needed transferring between the
same client server pair

Janice Regan Sept. 2007-2016

27

Non-persistent connections
Early web pages contained one or a very small
number of objects, this was not a critical
problem
Today web pages contain many objects and the
extra load of creating and terminating
connections would place a significant extra load
on the internet
A nonpersistant connection transports at most 1
HTTP request and 1 HTTP reply
Janice Regan Sept. 2007-2016

28

Non-persistent connection
Host A
Request TCP
connection (SYN)
Acknowledge acceptance
(ACK) and HTTP GET
request object

Acknowledge close request


and make close request
(FIN, ACK)
Janice Regan Sept. 2007-2016

Host B

(SYN, ACK)
Accept TCP
connection
HTTP OK
send object

Request close of TCP


connection (FIN)
Acknowledge close request
(ACK)
29

10

non-persistent connections
Each time a non persistent connection is
made, it is necessary to initialize and
terminate a TCP connection
Send request to make/break connection A-B
Send back a response agreeing to
make/break connection (B-A)
Send an acknowledgement that the
connection has been made/terminated.
Janice Regan Sept. 2007-2016

30

Efficiency: non-persistent connections


Each time a non persistent connection is made, it is
necessary to initialize and terminate a TCP connection
The RTT (round trip travel time) is the time it takes to
propagate from A to B and back to A
For each connection it take 3 round trip travel times to
make and break the connection.
If many objects are to be transmitted this extra delay
becomes significant. How can we increase the
efficiency?
By sending multiple objects through each connection.
Janice Regan Sept. 2007-2016

31

Persistent connections
In the late 1990s HTTP 1.1 came into use
The default in HTTP1.1 is a persistent
connection
When a web page is requested the client
requests a TCP connection to the Web server
Many objects on the requested web page are
then transferred through that connection before
it is terminated.

Janice Regan Sept. 2007-2016

32

11

Persistent connections
In fact when the web page has been completely
sent the connection will remain open
It is likely if one page has been retrieved from the
server another will be retrieved soon after

The connection can be terminated by the client


or the server, or will be closed after a
reasonable time has elapsed without any
traffic passing through the connection.

Janice Regan Sept. 2007-2016

33

Persistent connection
Host A
(SYN)

Host B
(SYN, ACK)

(ACK)
HTTP GET request object 1
With Piggyback ACK

HTTP OK send object 1


Piggyback ACK of request

HTTP GET request object 1


Piggyback ACK object
HTTP GET request object n
Piggyback ACK object n-1

HTTP OK send object


n
(FIN, ACK)

(FIN)
(ACK)

May remain open

Janice Regan Sept. 2007-2016

34

Persistent connections
Each time an object is sent through a
persistent connection
Send request for the object to the server
Send back a response containing the object
Send an acknowledgement that the object
has been received

We wait for the first object to be received


before requesting the next object.
Janice Regan Sept. 2007-2016

35

12

Efficiency: persistent connections


The server must wait 1 RTT between the end of
transmitting one object and the start of
transmitting the next object
Transmission time plus RTT for the end of the
message to reach the client,
RTT for the client to make the next request

If we pipeline, that is allow the next request to


be made before finishing the present request
we can improve efficiency by removing the need
for this 1 RTT per object wait.
Janice Regan Sept. 2007-2016

36

Pipelining
A series of objects can be requested
As the users agent tries to display a web
page it may encounter embedded objects
that need to be requested
With pipelining these objects are requested
as soon as the agent knows they are needed.
At the web server the requests are queued
and replied to (by sending the object)
sequentially
Janice Regan Sept. 2007-2016

37

Pipelining
A series of objects can be requested
At the web server the requests are queued
and replied to sequentially
As soon as the web server has transmitted
one object it can begin servicing the next
request (sending the next object)
Eventually all requests have been serviced
and the connection becomes idle
After the connection is idle for a short time
(usually 10s of seconds) it will be closed
Janice Regan Sept. 2007-2016

38

13

Persistent connection pipelining


Host A
(SYN)
request object 1
Piggyback ACK

Host B
(SYN, ACK)

request object 2

send object
1

request object n

send object
2

Transmission
time object 1

Transmission
send object n time object n

Acknowledge
object n (ACK)
(FIN, ACK)
Janice Regan Sept. 2007-2016

(FIN)
(ACK)
39

14

You might also like