1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur...

21
1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016

description

3 Application-Layer Protocols Outline u The architecture of distributed systems »Client/Server computing u The programming model used in constructing distributed systems »Socket programming u Example client/server systems and their application-level protocols »The World-Wide Web (HTTP) »Reliable file transfer (FTP) » (SMTP & POP) »Internet Domain Name System (DNS) local ISP company network regional ISP application transport network link physical application

Transcript of 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur...

Page 1: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

1

COMP 431Internet Services & Protocols

Client/Server Computing & Socket Programming

Jasleen Kaur

February 2, 2016

Page 2: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

2

Application-Layer ProtocolsOverview Application-layer protocols define:

» The types of messages exchanged» The syntax and semantics of messages» The rules for when and how messages are

sent

Public protocols (defined in RFCs)» HTTP, FTP, SMTP, POP, IMAP, DNS

Proprietary protocols» RealAudio, RealVideo» IP telephony» …

local ISP

companynetwork

regional ISP

application

transportnetwork

linkphysical

application

Page 3: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

3

Application-Layer ProtocolsOutline

The architecture of distributed systems» Client/Server computing

The programming model used in constructing distributed systems» Socket programming

Example client/server systems and their application-level protocols» The World-Wide Web (HTTP)» Reliable file transfer (FTP)» E-mail (SMTP & POP)» Internet Domain Name System (DNS)

local ISP

companynetwork

regional ISP

application

transportnetwork

linkphysical

application

Page 4: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

4

Application-Layer ProtocolsOutline

local ISP

companynetwork

regional ISP Protocol design issues:» In-band vs. out-of-band control signaling» Push vs. pull protocols » Persistent vs. non-persistent connections

Client/server service architectures» Contacted server responds vs. forwards request

Example client/server systems and their application-level protocols» The World-Wide Web (HTTP)» Reliable file transfer (FTP)» E-mail (SMTP & POP)» Internet Domain Name System (DNS)

application

transportnetwork

linkphysical

application

Page 5: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

5

local ISP

companynetwork

regional ISP

The Application LayerThe client-server paradigm

Typical network application has two pieces: client and server

Client:» Initiates contact with server (“speaks

first”)» Requests service from server» For Web, client is implemented in

browser; for e-mail, in mail reader

Server:» Provides requested service to client» “Always” running» May also include a “client interface”

reply

request

Client

Server

application

transportnetwork

linkphysical

application

application

transportnetwork

linkphysical

application

Page 6: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

6

Client/Server ParadigmSocket programming

Sockets are the fundamental building block for client/server systems

Sockets are created and managed by applications» Strong analogies with files

a host-local, application created/released, OS-controlled interface into which an application process can both send and receive messages to/from another (remote or local) application process

socket

Two types of transport services are available via the socket API: » UDP sockets: unreliable, datagram-oriented communications» TCP sockets: reliable, stream-oriented communications

Page 7: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

7

Client/Server ParadigmSocket-programming using TCP

A socket is an application created, OS-controlled interface into which an application can both send and receive messages to and from another application» A “door” between application processes and end-to-end transport

protocols

process

TCP withbuffers,

variables

socket

controlled byapplicationdeveloper

controlled byoperating

system

Host (end system)

process

TCP withbuffers,

variables

socket

controlled byapplicationdeveloper

controlled byoperatingsystem

Host (end system)

Internet

Page 8: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

8

Socket-programming using TCPTCP socket programming model

A TCP socket provides a reliable, bi-directional, byte-stream communications channel from one process to another» A “pair of pipes” abstraction

Process

socket

Host(end system)

Host (end system)

Internet Process

socketbytes

bytes

write readwriteread

Page 9: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

9

TCP withbuffers,

variables

TCP withbuffers,

variables

Socket-programming using TCPNetwork addressing for sockets

process

socket

End System End System

process

socketLocal port numbers(e.g., 6500)

Internet domain name of host

e.g., classroom.cs.unc.eduDNS

Sockets are addressed using an IP address and port number

Internet addresses of hosts(e.g., 152.2.131.245)

Page 10: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

10

Socket-programming using TCPSocket programming in Java

When the client creates a socket, the client’s TCP establishes connection to server’s TCP

When contacted by a client, server creates a new socket for server process to communicate with client

» This allows the server to talk with multiple clients

Client creates a local TCP socket specifying the host and port number of server process» Java resolves host names to IP

addresses using DNS Client contacts server

» Server process must be running» Server must have created socket that

“welcomes” client’s contact

Client

socket

Internet Server

socketbytes

bytes

write readwriteread

Page 11: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

11

Socket-programming using TCPSocket creation in the client-server model

process

host orserver Internet

process

bytes

TCP 3-way handshake

ClientServer

3-way

handshake Client

clientsocket socket

“welcoming”socketsocket

connectionsocketsocket

bytes

socket

Page 12: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

12

Socket-programming using TCPSimple client-server example

The client reads a line of text from standard input and sends the text to the server via a socket

The server receives the line of text from the client and converts the line of characters to all uppercase

The server sends the converted line back to the client The client receives the converted text and writes it to standard

output

Serverwelcomingsocketsocket

connectionsocketsocket

Client

clientsocket socket

stdin

stdout

Page 13: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

13

Socket programming with TCP Example Client structure

Client reads from standard input (inFromUser stream), writes to server via a socket (outToServer stream)

Server reads line from a socket Server converts line to uppercase and writes

back to client Client reads from socket, (inFromServer

stream) prints modified line to standard output

client socket

inFro mServer

outTo Server

inFromUser

Client Process

(1)

(2) (3)

Standardoutput

(4)

Standardinput

Page 14: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

14

Socket programming with TCP Example Client/server TCP socket interaction in Java

create socket for incoming request (port=6789)

welcomeSocket = new ServerSocket(...)

wait for incomingconnection requestconnectionSocket = welcomeSocket.accept()

create socket,connect to swan.cs.unc.edu, port=6789clientSocket = new Socket(...)

closeconnectionSocket close

clientSocket

Server (running on swan.cs.unc.edu)

Client (running on classroom.cs...)

read reply fromclientSocket

write request usingclientSocket

read request fromconnectionSocket

write reply toconnectionSocket

TCP connection setup

program flow

data flow

Page 15: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

15

Socket programming with TCP Example Java client

import java.io.*; import java.net.*; class TCPClient { public static void main(String argv[]) throws Exception { String sentence; String modifiedSentence;

BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in)); System.out.println("Client ready for input");

while ((sentence = inFromUser.readLine()) != null) {

Socket clientSocket = new Socket("swan.cs.unc.edu", 6789);

// Create (buffered) input stream using standard input

// While loop to read and handle multiple input lines

// Create client socket with connection to server at port 6789

Page 16: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

16

Socket programming with TCP Example Java client II

DataOutputStream outToServer = new DataOutputStream( clientSocket.getOutputStream());

BufferedReader inFromServer = new BufferedReader( new InputStreamReader( clientSocket.getInputStream()));

outToServer.writeBytes(sentence + '\n');

modifiedSentence = inFromServer.readLine();

System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close();

} } // end main} // end class

// Create output stream attached to socket

// Create (buffered) input stream attached to socket

// Write line to server

// Read line from server

// end while, loop to accept more lines from user

Page 17: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

17

Socket programming with TCP Example Java server import java.io.*; import java.net.*; class TCPServer { public static void main(String argv[]) throws Exception { String clientSentence; String capitalizedSentence;

ServerSocket welcomeSocket = new ServerSocket(6789);

System.out.println("Server Ready for Connection");

while(true) {

Socket connectionSocket = welcomeSocket.accept();

System.out.println("Client Made Connection");

// Create “welcoming” socket using port 6789

// While loop to handle arbitrary sequence of clients making requests

// Waits for a client to connect and creates new socket for connection

Page 18: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

18

Socket programming with TCP Example

Java server II

BufferedReader inFromClient = new BufferedReader( new InputStreamReader( connectionSocket.getInputStream()));

DataOutputStream outToClient = new DataOutputStream( connectionSocket.getOutputStream());

clientSentence = inFromClient.readLine();

System.out.println("Client sent: " + clientSentence); capitalizedSentence = clientSentence.toUpperCase() + '\n';

outToClient.writeBytes(capitalizedSentence); connectionSocket.close();

} } // end main } // end class

// Create (buffered) input stream attached to connection socket

// Create output stream attached to connection socket

// Read input line from socket

// Write output line to socket

// end while; loop back to accept a new client connection

Page 19: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

19

Socket-programming using UDPUDP socket programming model

A UDP socket provides an unreliable bi-directional communication channel from one process to another» A “datagram” abstraction

Host(end system)

Host (end system)

Process

socket

Internet Process

socketbytes

bytes

write readwriteread

Page 20: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

20

Socket programming with UDP Example Client/server UDP socket interaction in Java

create socket for incoming request (port=9876)serverSocket = new DatagramSocket()

create socket,clientSocket = new DatagramSocket()

read reply fromclientSocket

create address (152.2.131.245, port = 9876)

and send datagram usingclientSocket

read request fromserverSocket

write reply toserverSocketspecifying client IP address and port number

program flow

data flow

Server (running on 152.2.131.245) Client

closeclientSocket

Page 21: 1 COMP 431 Internet Services & Protocols Client/Server Computing & Socket Programming Jasleen Kaur February 2, 2016.

21

Socket ProgrammingServices provided by Internet transport protocols

TCP service:» connection-oriented: setup

required between client, server» reliable transport between

sending and receiving process» flow control: sender won’t

overwhelm receiver» congestion control: throttle

sender when network overloaded» does not provide: timing,

minimum bandwidth guarantees

UDP service:» unreliable data transfer between

sending and receiving process» does not provide: connection

setup, reliability, flow control, congestion control, timing, or minimum bandwidth guarantees

Why bother? Why is there a UDP?