Chapter 2: Application layer - Southern Adventist University

Download Report

Transcript Chapter 2: Application layer - Southern Adventist University

Chapter 2: Application layer
• 2.1 Principles of network
applications
• 2.2 Web and HTTP
• 2.3 FTP
• 2.4 Electronic Mail
• 2.6 P2P file sharing
• 2.7 Socket programming
with TCP
• 2.8 Socket programming
with UDP
– SMTP, POP3, IMAP
• 2.5 DNS
2: Application Layer
1
Socket-programming using TCP
Socket: a door between application process and end-endtransport protocol (UDP or TCP)
TCP service: reliable transfer of bytes from one process to
another
controlled by
application
developer
controlled by
operating
system
process
process
socket
TCP with
buffers,
variables
socket
TCP with
buffers,
variables
internet
controlled by
application
developer
controlled by
operating
system
host or
server
host or
server
2: Application Layer
2
Socket programming with TCP
Client must contact server
• server process must first be
running
• server must have created
socket (door) that welcomes
client’s contact
Client contacts server by:
• creating client-local TCP socket
• specifying IP address, port
number of server process
• When client creates socket:
client TCP establishes
connection to server TCP
• When contacted by client, server
TCP creates new socket for
server process to communicate
with client
– allows server to talk with
multiple clients
– source port numbers used to
distinguish clients (more in
Chap 3)
application viewpoint
TCP provides reliable, in-order
transfer of bytes (“pipe”)
between client and server
2: Application Layer
3
Client/server socket interaction: TCP
Server (running on hostid)
Client
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()
TCP
wait for incoming
connection
connection request
connectionSocket =
welcomeSocket.accept()
setup
create socket,
connect to hostid, port=x
clientSocket =
Socket()
send request using
clientSocket
read request from
connectionSocket
write reply to
connectionSocket
read reply from
clientSocket
close
connectionSocket
close
clientSocket
2: Application Layer
4
Stream jargon
Client
Process
process
output
stream
inFromServer
input
stream
outToServer
• A stream is a sequence of
characters that flow into or out of
a process.
• An input stream is attached to
some input source for the
process, e.g., keyboard or socket.
• An output stream is attached to
an output source, e.g., monitor or
socket.
monitor
inFromUser
keyboard
client
TCP
clientSocket
socket
to netw ork
2: Application Layer
input
stream
TCP
socket
from netw ork
5
Socket programming with TCP
Example client-server app:
1) client reads line from standard
input (inFromUser stream) ,
sends to server via socket
(outToServer stream)
2) server reads line from socket
3) server converts line to uppercase,
sends back to client
4) client reads, prints modified line
from socket (inFromServer
stream)
2: Application Layer
6
Chapter 2: Application layer
• 2.1 Principles of network
applications
• 2.2 Web and HTTP
• 2.3 FTP
• 2.4 Electronic Mail
– SMTP, POP3, IMAP
• 2.6 P2P file sharing
• 2.7 Socket programming
with TCP
• 2.8 Socket programming
with UDP
• 2.9 Building a Web server
• 2.5 DNS
2: Application Layer
11
Socket programming with UDP
UDP: no “connection” between client
and server
• no handshaking
• sender explicitly attaches IP
address and port of destination
to each packet
• server must extract IP address,
port of sender from received
packet
application viewpoint
UDP provides unreliable transfer
of groups of bytes (“datagrams”)
between client and server
UDP: transmitted data may be
received out of order, or lost
2: Application Layer
12
Client/server socket interaction: UDP
Server (running on hostid)
Client
create socket,
port=x, for
incoming request:
serverSocket =
DatagramSocket()
create socket,
clientSocket =
DatagramSocket()
Create, address (hostid, port=x,
send datagram request
using clientSocket
read request from
serverSocket
write reply to
serverSocket
specifying client
host address,
port number
read reply from
clientSocket
close
clientSocket
2: Application Layer
13
Chapter 2: Summary
our study of network apps now complete!
 specific protocols:
• application architectures
– client-server
– P2P
– hybrid

• application service
requirements:




– reliability, bandwidth, delay
HTTP
FTP
SMTP, POP, IMAP
DNS
P2P: BitTorrent, Skype
 socket programming
• Internet transport service
model
– connection-oriented, reliable:
TCP
– unreliable, datagrams: UDP
2: Application Layer
19
Chapter 2: Summary
Most importantly: learned about protocols
• typical request/reply
message exchange:
– client requests info or
service
– server responds with data,
status code
Important themes:
 control vs. data msgs
 in-band, out-of-band
 centralized vs. decentralized
 stateless vs. stateful
 reliable vs. unreliable msg transfer
• message formats:
– headers: fields giving info
about data
– data: info being
communicated
2: Application Layer
20