Internet Applications and Network Programming
Internet Applications and Network Programming
Internet Applications
and
Network Programming
1
Introduction
• The Internet offers users a rich diversity of services
– none of the services is part of the underlying communication
infrastructure
• Internet provides a general purpose mechanism on which
– all services are built
– and individual services are supplied by application programs that run
on computers attached to the Internet
2
Two Basic Internet Communication Paradigms
• The Internet supports two basic communication paradigms:
– Stream Transport in the Internet
– Message Transport in the Internet
1-to-1/ One-to-
Many or
multicasting
4
Message Transport in the Internet
• In a message paradigm, the network accepts and delivers
messages
– if a sender places exactly n bytes in an outgoing message, the
receiver will find exactly n bytes in the incoming message
• The message paradigm allows delivery in different forms:
– Unicast
• a message can be sent from an application on one computer directly to an
application on another, 1-to-1
– Multicast
• a message can be multicast to some of the computers on a network, 1-to-
many (in anycasting destination is not identified)
– Broadcast
• a message can be broadcast to all computers on a given network, 1-to-all
5
Message Transport in the Internet
• Message service does not make any guarantees
• So messages may be
– Lost (i.e., never delivered)
– Duplicated (more than one copy arrives)
– Delivered out-of-order
• Most applications require delivery guarantees
• Programmers tend to use the stream service except in
special situations
– such as video, where multicast is needed and the application
provides support to handle packet reordering and loss
6
Connection-Oriented Communication
• The Internet stream service is connection-oriented
• It operates analogous to a telephone call:
1. two applications must request that a connection be created
2. once it has been established, the connection allows the
applications to send data in either direction
3. finally, when they finish communicating, the applications request
that the connection be terminated
7
The Client-Server Model of Interaction
• Main question:
– how can a pair of applications that run on two independent computers
coordinate to guarantee that they request a connection at the same time?
• The answer lies in a form of interaction known as the client-server model
– First: A server starts and awaits contact
– Second: A client starts and initiates the connection
RSP: Here it is
Client Server
ACK: I received x bytes
9
Characteristics of Clients and Servers
• Most instances of client-server • A server software:
interaction have the same general – Is a special-purpose, privileged program
characteristics – Is dedicated to providing one service that can
• A client software: handle multiple remote clients at the same
time
– Is an arbitrary application program
that becomes a client temporarily – Is invoked automatically when a system
when remote access is needed boots, and continues to execute through
many sessions
– Is invoked directly by a user, and
executes only for one session – Runs on a large, powerful computer
– Runs locally on a user's personal – Waits passively for contact from arbitrary
computer remote clients
– Actively initiates contact with a server – Accepts contact from arbitrary clients, but
offers a single service
– Can access multiple services as
needed, but usually contacts one – Requires powerful hardware and a
remote server at a time sophisticated operating system (OS)
– Does not require especially powerful
computer hardware
11
Multiple Clients and Multiple Servers
• Allowing a given computer to operate multiple servers is
useful because
– the hardware can be shared
– a single computer has lower system administration overhead than
multiple computer systems
– In many cases the demand for a server is often sporadic
• a server can remain idle for long periods of time
• an idle server does not use the CPU while waiting for a request to arrive
• If demand for services is low, consolidating servers on a
single computer can dramatically reduce cost
– without significantly reducing performance
12
Server Identification and Demultiplexing
• How does a client identify/find a server?
• The Internet protocols divide identification into two pieces:
– An identifier for the computer on which a server runs
– An identifier for a service (application) on the computer
• Identifying a computer?
– Each computer in the Internet is assigned a unique 32-bit identifier
known as an Internet Protocol address (IP address)
– A client must specify the server’s IP address (132.98.12.70)
• Identifying a service?
– Each service available in the Internet is assigned a unique 16-bit
identifier known as a protocol port number (or port number)
• Examples, email à port number 25, and the web à port number 80
4 1
5 2
6
3
Physical Physical
15
Concurrent Servers
• Most servers are concurrent
– That is, a server uses more than one thread of control
• Concurrent execution depends on the OS being used
• Concurrent server code is divided into two pieces
– a main program (thread)
– a handler
• The main thread accepts contact from a client and creates a
thread of control for the client
• Each thread of control interacts with a single client and runs
the handler code Contact request from the client
Main (thread) code
- Accept contact
- Creates a handler
- - Wait for a new
contact
Thread of control to communicate with the client
Handler Code
Client/Server 16
Concurrent Servers
• After handling one client the thread terminates
• The main thread keeps the server alive after creating a
thread to handle a request
– the main thread waits for another request to arrive
• If N clients are simultaneously using a concurrent server, N
+1 threads will be running:
– the main thread (1) is waiting for additional requests
– and N threads are each interacting with a single client
17
Peer-to-Peer Interactions
• If a single server provides a given service
– the network connection between the server and the Internet can
become a bottleneck
Central Bottleneck à
Slow download!
18
Peer-to-Peer Interactions
• Can Internet services be provided without creating a central
bottleneck?
– One way to avoid a bottleneck forms the basis of file sharing known
as a peer-to-peer (P2P) architecture
• The scheme avoids placing data on a central server
– data is distributed equally among a set of N servers
– and each client request is sent to the appropriate server
– a given server only provides 1/N of the data
• the amount of traffic between a server and the Internet is 1/N as much as in
the single-server architecture
N servers
© 2009 Pearson Education Inc., Upper Saddle River, NJ. All rights reserved. 19
Bittorrent
• Smarter Peer-to-Peer approach
• A browser-like application to download files faster
– http://player.vimeo.com/video/15228767
• More users downloading results in faster download!
• Eliminate the central bottleneck
20
Network Programming
and the Socket API
• The interface an application uses to specify communication
is known as an Application Program Interface (API)
• Details of an API depend on the OS
• One particular API has emerged as the de facto standard for
software that communicates over the Internet
– known as the socket API, and commonly abbreviated sockets
Sockets are a software methodology to connect different processes (programs) on the same computer
or on different computers. The name "socket" reminds us that once we "plug in" one process into
another process's socket, they can talk to each other by reading and writing the socket.
21
http://www.troubleshooters.com/codecorn/sockets/#Introduction
Introduction to Sockets
• What exactly creates a Socket?
– <IP address, Port #> tuple
• What makes a connection?
– {Source<IP address, Port #> , Destination <IP address, Port #>} i.e. source
socket – destination socket pair uniquely identifies a connection.
• Example
1343 Client
192.168.0.2
80 1343
Server Client
192.168.0.1 192.168.0.3
5488
Client
192.168.0.4
22
Network Programming
and the Socket API
23
Example
• In this case we have two application programs:
– Server and client
– Note that they both have to be pointing to the same port!
24
Sockets, Descriptors, and Network I/O
25
Socket Example
• Creating a set of functions that handle communications to
write network applications
– Socket<PrototypeFamily Type Protocol>
– Send<socket data length flag>
26
27
Programming Client-Server Using Sockets
• Different programming languages can be used: C, JAVA,
Shell
28