Top Banner
NET NET 331 331 – Computer Networks Computer Networks 1 Reformatted slides from textbook Computer Networking – a top-down appraoch, Fifth Edition by Kurose and Ross, (c) Pearson Education - Prentice Hall, 2011 31-Jan-12 Lecture 05: Application Layer (Part 02) FTP, Peer-to-Peer, Email Dr. Anis Koubaa Learning Outcome Understand how files are transferred in the Internet Learn how emails are sent and received Learn how emails are sent and received Get familiar with peer-to-peer applications Learn how to program Internet applications with Socket
40

NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Mar 19, 2018

Download

Documents

vanlien
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

NET NET 331 331 –– Computer NetworksComputer Networks

1

Reformatted slides from textbookComputer Networking – a top-down appraoch, Fifth Edition by Kurose and Ross, (c) Pearson Education - Prentice Hall, 2011

31-Jan-12

Lecture 05: Application Layer (Part 02)

FTP, Peer-to-Peer, Email

Dr. Anis Koubaa

Learning Outcome

� Understand how files are transferred in the Internet

� Learn how emails are sent and received� Learn how emails are sent and received

� Get familiar with peer-to-peer applications

� Learn how to program Internet applications with Socket

Page 2: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Outline

� 2.1 Principles of network applications

� 2.2 Web and HTTP

� 2.3 FTP

� 2.4 Electronic Mail

� 2.6 P2P applications

� 2.7 Socket programming with TCP

� 2.8 Socket programming with UDP� 2.4 Electronic Mail

� SMTP, POP3, IMAP

� 2.5 DNS

Application Layer

� Our goals

� conceptual, implementation aspects of network application protocols

� transport-layer service

� learn about protocols by examining popular application-level protocols

� HTTP

� FTP� transport-layer service

models

� client-server paradigm

� peer-to-peer paradigm

� FTP

� SMTP / POP3 / IMAP

� DNS

� programming network applications

� socket API

Page 3: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

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 applications

� 2.7 Socket programming with TCP

� 2.8 Socket programming with UDP� 2.4 Electronic mail

� SMTP, POP3, IMAP

� 2.5 DNS

File Transfer ProtocolFile Transfer Protocol

How Files are transferred in the Internet

Page 4: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

FTP: the file transfer protocol

� transfer file to/from remote host

� client/server model

� client: side that initiates transfer (either to/from remote)

� server: remote host

� ftp: RFC 959

� ftp server: port 21

FTP: Example of Software

Page 5: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

FTP: Example of Software

FTP: separate control, data connections

� FTP client contacts FTP server at port 21,

� TCP is transport protocol

� Client authorized over control connection

� Client browses remote directory by sending commands

FTPclient

FTPserver

TCP control connection,server port 21

TCP data connection,server port 20

directory by sending commands over control connection.

� When server receives file transfer command, server opens 2nd TCP connection (for file) to client

� After transferring one file, server closes data connection.

� server opens another TCP data connection to transfer another file.

� control connection: “out of band”

� FTP server maintains “state”: current directory, earlier authentication

Page 6: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

FTP commands, responses

� sample commands: sent as ASCII text over control channel

� USER username

� PASS password

� LIST return list of file in

� sample return codes: status code and phrase (as in HTTP)

� 331 Username OK, password required

� 125 data connection � LIST return list of file in current directory

� RETR filename retrieves (gets) file

� STOR filename stores (puts) file onto remote host

� 125 data connection already open; transfer starting

� 425 Can’t open data connection

� 452 Error writing file

Outline

� 2.1 Principles of network applications

� 2.2 Web and HTTP

� 2.3 FTP

� 2.4 Electronic Mail

� 2.6 P2P applications

� 2.7 Socket programming with TCP

� 2.8 Socket programming with UDP� 2.4 Electronic Mail

� SMTP, POP3, IMAP

� 2.5 DNS

Page 7: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Eletronic Mail (E-Mail)Eletronic Mail (E-Mail)

How e-mail messages are exchanged?

Electronic Mail

� Three major components:

� user agents

� mail servers

� simple mail transfer protocol: SMTP

� User Agent� a.k.a. “mail reader”� a.k.a. “mail reader”

� composing, editing, reading mail messages

� e.g., Outlook, elm, Mozilla Thunderbird, iPhone mail client

� outgoing, incoming messages stored on server

Page 8: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Electronic Mail: mail servers

� Mail Servers

� mailbox contains incoming messages for user

� message queue of outgoing (to be sent) mail messages

� SMTP protocol between mail servers to SMTP protocol between mail servers to send email messages

� client: sending mail server

� “server”: receiving mail server

The SMTP ProtocolThe SMTP Protocol

How to send a email message?

Page 9: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Electronic Mail: SMTP [RFC 2821]

� uses TCP to reliably transfer email message from client to server, port 25

� direct transfer: sending server to receiving server

� three phases of transfer

� handshaking (greeting)� handshaking (greeting)

� transfer of messages

� closure

� command/response interaction

� commands: ASCII text

� response: status code and phrase

� messages must be in 7-bit ASCII

Scenario: Alice sends message to Bob

� 1) Alice uses UA to compose message and “to” [email protected]

� 2) Alice’s UA sends message to her mail server; message placed in message queue

� 3) Client side of SMTP opens TCP

� 4) SMTP client sends Alice’s message over the TCP connection

� 5) Bob’s mail server places the message in Bob’s mailbox

� 6) Bob invokes his user agent to read message

� 3) Client side of SMTP opens TCP connection with Bob’s mail server

Page 10: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Sample SMTP interaction

S: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <[email protected]> S: 250 [email protected]... Sender okC: RCPT TO: <[email protected]> S: 250 [email protected] ... Recipient ok S: 250 [email protected] ... Recipient ok C: DATAS: 354 Enter mail, end with "." on a line by itself C: Do you like ketchup? C: How about pickles? C: . S: 250 Message accepted for delivery C: QUIT S: 221 hamburger.edu closing connection

Try SMTP interaction for yourself:

� telnet servername 25

� see 220 reply from serversee 220 reply from server

� enter HELO, MAIL FROM, RCPT TO, DATA, QUIT commands

� above lets you send email without using email client (reader)

Page 11: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

SMTP Commands

From Chapter 25 – W. Stallings

Textbook: Data and Computer Communications, 9/E

SMTP Replies

From Chapter 25 – W. Stallings

Textbook: Data and Computer Communications, 9/E

Page 12: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

SMTP Replies

From Chapter 25 – W. Stallings

Textbook: Data and Computer Communications, 9/E

SMTP: final words

� SMTP uses persistentconnections

� SMTP requires message (header & body) to be in 7-bit ASCII

SMTP server uses

� comparison with HTTP:

� HTTP: pull

� SMTP: push

� both have ASCII command/response interaction, status codes� SMTP server uses

CRLF.CRLF to determine end of message

interaction, status codes

� HTTP: each object encapsulated in its own response msg

� SMTP: multiple objects sent in multipart msg

Page 13: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

SMTP Message FormatSMTP Message Format

Mail message format

� SMTP: protocol for exchanging email msgs

� RFC 822: standard for text message format:

� header lines, e.g.,

� To:

� From:

header

body

blankline

� From:

� Subject:

� different from SMTP commands!

� body

� the “message”, ASCII characters only

Header

Page 14: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Mail message format

Mail Access ProtocolsMail Access Protocols

How to access and read an email?

Page 15: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Mail Access Protocols

� SMTP: delivery/storage to receiver’s server

� Mail access protocol: retrieval from server

� POP: Post Office Protocol [RFC 1939]

� authorization (agent <-->server) and download

� IMAP: Internet Mail Access Protocol [RFC 1730]

� more features (more complex)

� manipulation of stored msgs on server

� HTTP: gmail, Hotmail, Yahoo! Mail, etc.

POP3 Protocol

� Authorization phase

� Client commands:

� user: declare username

� pass: password

� Server responses

� +OK

C: list S: 1 498 S: 2 912 S: .

S: +OK POP3 server ready C: user bob S: +OK C: pass hungry S: +OK user successfully logged on

� +OK

� -ERR

� Transaction phase, client:� list: list message numbers

� retr: retrieve message by number

� dele: delete

� quit

S: . C: retr 1 S: <message 1 contents>S: . C: dele 1 C: retr 2 S: <message 1 contents>S: . C: dele 2 C: quit S: +OK POP3 server signing off

Page 16: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

POP3 (more) and IMAP

� more about POP3

� previous example uses “download and delete” mode.

� Bob cannot re-read e-mail if he changes client

� IMAP

� keeps all messages in one place: at server

� allows user to organize messages in folders

� keeps user state across if he changes client

� “download-and-keep”: copies of messages on different clients

� POP3 is stateless across sessions

� keeps user state across sessions:

� names of folders and mappings between message IDs and folder name

Outline

� 2.1 Principles of network applications

� 2.2 Web and HTTP

� 2.3 FTP

� 2.4 Electronic Mail

� 2.6 P2P applications

� 2.7 Socket programming with TCP

� 2.8 Socket programming with UDP� 2.4 Electronic Mail

� SMTP, POP3, IMAP

� 2.5 DNS

Page 17: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Peer-to-Peer ApplicationsPeer-to-Peer Applications

Pure P2P architecture

� No always-on server

� Arbitrary end systems directly communicate

� Peers are intermittently connected and change IP addressesaddresses

� Three topics:

� File distribution

� Searching for information

� Case Study: Skype

Page 18: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

File Distribution: Server-Client vs P2P

� Question: How much time to distribute file from one server to N peers?

us: server upload bandwidth

ui: peer i upload ui: peer i upload bandwidth

di: peer i download bandwidth

File Distribution Time: Server-Client

� Server sequentially sends N copies:

� NF/us time

� Client i takes F/ditime to download

increases linearly in N(for large N)

= dcs = max { NF/us, F/min(di) }i

Time to distribute Fto N clients using

client/server approach

Page 19: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

File Distribution Time: P2P

� Server must send one copy: F/us time

� Client i takes F/di time to download

� NF bits must be downloaded (aggregate)(aggregate)

� fastest possible upload rate:

us + Σui

dP2P = max { F/us, F/min(di) , NF/(us + Sui) }i

Client upload rate = u, F/u = 1 hour, us = 10u, dmin ≥ us

Server-Client vs. P2P: Example

Page 20: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

BitTorrentBitTorrent

Peer-to-Peer File Sharing and Distribution

File Distribution: BitTorrent

Page 21: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

File Distribution: BitTorrent

tracker: tracks peers participating in torrent

P2P file distributiontorrent: group of peers exchanging chunks of a file

BitTorrent (1)

� File divided into 256KB chunks.

� Peer joining torrent:

� has no chunks, but will accumulate them over time

� registers with tracker to get list of peers, connects to subset of peers (“neighbors”)peers (“neighbors”)

� While downloading, peer uploads chunks to other peers.

� Peers may come and go

� Once peer has entire file, it may (selfishly) leave or (altruistically) remain

http://computer.howstuffworks.com/bittorrent2.htm

Page 22: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

BitTorrent (2)

� Pulling Chunks

� at any given time, different peers have different subsets of file chunks

� periodically, a peer (Alice) asks each neighbor for list

� Sending Chunks: tit-for-tat

� Alice sends chunks to four neighbors currently sending her chunks at the highest rate

� re-evaluate top 4 every 10 secsasks each neighbor for list of chunks that they have.

� Alice sends requests for her missing chunks

� rarest first

� re-evaluate top 4 every 10 secs

� every 30 secs: randomly select another peer, starts sending chunks

� newly chosen peer may join top 4

� “optimistically unchoke”

BitTorrent: Tit-for-tat

(1) Alice “optimistically unchokes” Bob

(2) Alice becomes one of Bob’s top-four providers; Bob reciprocates

(3) Bob becomes one of Alice’s top-four providers

With higher upload rate, can find better trading partners & get file faster!

Page 23: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Distributed Hash TableDistributed Hash Table

Distributed Hash Table (DHT)

� DHT: distributed P2P database

� database has (key, value) pairs;

� key: ss number; value: human namekey: ss number; value: human name

� key: content type; value: IP address

� peers query DB with key

� DB returns values that match the key

� peers can also insert (key, value) peers

Page 24: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

DHT Identifiers

� assign integer identifier to each peer in range [0,2n-1].

� Each identifier can be represented by n bits.

� require each key to be an integer in same range.� require each key to be an integer in same range.

� to get integer keys, hash original key.

� e.g., key = h(“Led Zeppelin IV”)

� this is why they call it a distributed “hash” table

How to assign keys to peers?

� central issue:

� assigning (key, value) pairs to peers.

� rule: assign key to the peer that has the closest ID.

� convention in lecture: closest is the immediate successor � convention in lecture: closest is the immediate successor of the key.

� e.g.,: n=4; peers: 1,3,4,5,8,10,12,14;

� key = 13, then successor peer = 14

� key = 15, then successor peer = 1

Page 25: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Circular DHT (1)

� each peer only aware of immediate successor and predecessor.

� “overlay network”

Circular DHT (2)

0001

0011

1111

Who’s resp

for key 1110 ?I am

O(N) messages

on avg to resolve

query, when there

are N peers

0100

0101

10001010

1100

1110

1110

1110

1110

1110

1110

Define closestas closestsuccessor

Application 2-50

Page 26: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Circular DHT with Shortcuts

� each peer keeps track of IP addresses of predecessor, successor, short cuts.

� reduced from 6 to 2 messages.

� possible to design shortcuts so O(log N) neighbors, O(log N) messages in query

1Who’s resp

1

3

4

5

810

12

15

Who’s resp

for key 1110?

Peer Churn

� peer 5 abruptly leaves

� Peer 4 detects; makes 8 its immediate successor; asks 8 who its immediate successor is; makes 8’s immediate successor its second successor.

� What if peer 13 wants to join?11

3

4

5

810

12

15

� To handle peer churn, require each peer to know the IP address of its two successors.

� Each peer periodically pings its two successors to see if they

are still alive.

Page 27: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

SkypeSkype

Case Study

2: Application Layer53

P2P Case study: Skype

� inherently P2P: pairs of users communicate.

� proprietary application-layer protocol (inferred via reverse engineering)

� hierarchical overlay with

Skype clients (SC)

Supernode

(SN)

Skype login server

� hierarchical overlay with SNs

� Index maps usernames to IP addresses; distributed over SNs

(SN)

Page 28: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Peers as relays

� problem when both Alice and Bob are behind “NATs”.

� NAT prevents an outside peer from initiating a call to insider peer

� solution:solution:

� using Alice’s and Bob’s SNs, relay is chosen

� each peer initiates session with relay.

� peers can now communicate through NATs via relay

Outline

� 2.1 Principles of network applications

� 2.2 Web and HTTP

� 2.3 FTP

� 2.4 Electronic Mail

� 2.6 P2P applications

� 2.7 Socket programming with TCP

� 2.8 Socket programming with UDP� 2.4 Electronic Mail

� SMTP, POP3, IMAP

� 2.5 DNS

Page 29: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Socket ProgrammingSocket Programming

How to program Applications on the Internet?

Socket Programming

� Socket API

� introduced in BSD4.1 UNIX, 1981 a host-local,

application-created,

socket

Goal: Goal: learn how to build client/server application that communicate using sockets

1981

� explicitly created, used, released by apps

� client/server paradigm

� two types of transport service via socket API:

� unreliable datagram

� reliable, byte stream-oriented

application-created, OS-controlled interface (a

“door”) into whichapplication process can both

send and receive messages to/from

another application process

Page 30: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

TCP Socket ProgrammingTCP Socket Programming

Reliable Service

How to program Applications on the Internet?

Socket Programming using TCP

� Socket: a door between application process and end-end-transport protocol (UCP or TCP)

� TCP service: reliable transfer of bytes from one process to another

Internet

Page 31: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

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

� when contacted by client, server TCP creates new socket for server process to communicate with client

� allows server to talk with multiple clientscontact

� 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

� source port numbers used to distinguish clients (more in Chap 3)

TCP provides reliable, in-ordertransfer of bytes (“pipe”) between client and server

application viewpoint

Client/server socket interaction: TCP

wait for incomingconnection request

create socket,port=x, forincoming request:welcomeSocket =

ServerSocket()

create socket,connect to hostid , port=xclientSocket =

Server (running on hostid) Client

TCP connection setupconnection request

connectionSocket =welcomeSocket.accept()

clientSocket = Socket()

closeconnectionSocket

read reply fromclientSocket

closeclientSocket

send request usingclientSocketread request from

connectionSocket

write reply toconnectionSocket

connection setup

Page 32: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

inF

rom

Use

r

keyboard monitor

Process

inputstream

Clientprocess

Stream Jargon

� Stream is a sequence of characters that flow into or out of a process.

� Input stream is attached to some input source for the process, e.g., keyboard

outT

oSer

ver

to network from network

inF

rom

Ser

ver

clientSocket

inputstream

outputstream

TCPsocket

client TCP socket

the process, e.g., keyboard or socket.

� Output stream is attached to an output source, e.g., monitor or socket.

Socket Programming with TCP

� Example client-server app:

� 1) client reads line from standard input (inFromUserstream) , sends to server via socket (outToServer stream)

� 2) server reads line from � 2) server reads line from socket

� 3) server converts line to uppercase, sends back to client

� 4) client reads, prints modified line from socket (inFromServerstream)

Page 33: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Socket Programming with TCP

Example: Java Client (TCP)import java.io.*; import java.net.*; class TCPClient {

public static void main(String argv[]) throws Exception {

String sentence; String modifiedSentence;

This package defines Socket() and ServerSocket() classes

server port #

server name,e.g., www.umass.edu

String modifiedSentence;

BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));

Socket clientSocket = new Socket("hostname", 6789);

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

createinput stream

create clientSocket object

of type Socket, connect to server

createoutput stream

attached to socket

server port #

Page 34: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Example: Java client (TCP), cont.

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

sentence = inFromUser.readLine();

createinput stream

attached to socket

send lineoutToServer.writeBytes(sentence + '\n');

modifiedSentence = inFromServer.readLine();

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

clientSocket.close();

} }

send lineto server

read linefrom server

Application 2-67

close socket(clean up behind yourself!)

Example: Java server (TCP)import java.io.*; import java.net.*;

class TCPServer {

public static void main(String argv[]) throws Exception {

String clientSentence; String capitalizedSentence;

createString capitalizedSentence;

ServerSocket welcomeSocket = new ServerSocket(6789);

while(true) {

Socket connectionSocket = welcomeSocket.accept();

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

wait, on welcomingsocket accept() method

for client contact create, new socket on return

Application 2-68

createwelcoming socket

at port 6789

create inputstream, attached

to socket

Page 35: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Example: Java server (TCP), cont

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

clientSentence = inFromClient.readLine(); read in linefrom socket

create outputstream, attached

to socket

capitalizedSentence = clientSentence.toUpperCase() + '\n';

outToClient.writeBytes(capitalizedSentence); }

} }

write out lineto socket

end of while loop,loop back and wait foranother client connection

Application 2-69

UDP Socket ProgrammingUDP Socket Programming

Reliable Service

How to program Applications on the Internet?

Page 36: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

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

application viewpoint:

UDP provides unreliable transferof groups of bytes (“datagrams”)

destination to each packet

� server must extract IP address, port of sender from received packet

� UDP: transmitted data may be received out of order, or lost

of groups of bytes (“datagrams”)between client and server

Client/server socket interaction: UDP

Server (running on hostid)

create socket,clientSocket = DatagramSocket()

Client

Create datagram with server IP and

create socket,port= x.serverSocket = DatagramSocket()

closeclientSocket

read datagram fromclientSocket

Create datagram with server IP andport=x; send datagram viaclientSocketread datagram from

serverSocket

write reply toserverSocketspecifying client address,port number

Page 37: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Example: Java client (UDP)

inF

rom

Use

r

keyboard monitor

Process

inputstream

Input: receives packet (recall thatTCP received

Clientprocess

send

Pac

ket

to network from networkre

ceiv

ePac

ket

clientSocket

UDPpacket

UDPpacket

UDPsocket

Output: sends packet (recallthat TCP sent “byte stream”)

thatTCP received “byte stream”)

client UDP socket

Example: Java client (UDP)

import java.io.*; import java.net.*;

class UDPClient { public static void main(String args[]) throws Exception {

BufferedReader inFromUser =

createinput stream BufferedReader inFromUser =

new BufferedReader(new InputStreamReader(System.in));

DatagramSocket clientSocket = new DatagramSocket();

InetAddress IPAddress = InetAddress.getByName("hostname");

byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024];

String sentence = inFromUser.readLine();

sendData = sentence.getBytes();

input stream

create client socket

translatehostname to IP

address using DNS

Page 38: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Example: Java client (UDP), cont.

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

clientSocket.send(sendPacket);

DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

create datagram with data-to-send,

length, IP addr, port

send datagramto server

new DatagramPacket(receiveData, receiveData.length);

clientSocket.receive(receivePacket);

String modifiedSentence = new String(receivePacket.getData());

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

}

read datagramfrom server

Example: Java server (UDP)

import java.io.*; import java.net.*;

class UDPServer { public static void main(String args[]) throws Exception

{

DatagramSocket serverSocket = new DatagramSocket(9876);

createdatagram socket

at port 9876DatagramSocket serverSocket = new DatagramSocket(9876);

byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024];

while(true) {

DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

serverSocket.receive(receivePacket);

at port 9876

create space forreceived datagram

receivedatagram

Page 39: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Example: Java server (UDP), cont

String sentence = new String(receivePacket.getData());

InetAddress IPAddress = receivePacket.getAddress();

int port = receivePacket.getPort();

String capitalizedSentence = sentence.toUpperCase();

get IP addrport #, of

sender

sendData = capitalizedSentence.getBytes();

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress,

port);

serverSocket.send(sendPacket); }

}

}

write out datagramto socket

end of while loop,loop back and wait foranother datagram

create datagramto send to client

Chapter 2: Summary

� application architectures� client-server

� P2P

� hybrid

� application service requirements:

� our study of network apps now complete!

� specific protocols:� HTTP

� FTP

� SMTP, POP, IMAPrequirements:� reliability, bandwidth, delay

� Internet transport service model� connection-oriented,

reliable: TCP

� unreliable, datagrams: UDP

� SMTP, POP, IMAP

� DNS

� P2P: BitTorrent, Skype

� socket programming

Page 40: NET NET 331 331 ––Computer NetworksComputer · PDF fileLearn how to program Internet applications with Socket. Outline 2.1 Principles of network ... 2.8 Socket programming with

Chapter 2: Summary

� typical request/reply message exchange:

� client requests info or service

� server responds with data, status code

� most importantly: learned about protocols

Important themes:

� control vs. data msgs

� in-band, out-of-band

� centralized vs. status code

� message formats:

� headers: fields giving info about data

� data: info being communicated

� centralized vs. decentralized

� stateless vs. stateful

� reliable vs. unreliable msg transfer

� “complexity at network edge”