discussion 2 - sockets programming tcp udp - applets http delay estimation dns queries

15
Discussion 2 - Sockets Programming TCP UDP - Applets HTTP Delay Estimation DNS queries

Upload: darren-morton

Post on 13-Jan-2016

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Discussion 2 - Sockets Programming  TCP  UDP - Applets  HTTP Delay Estimation  DNS queries

Discussion 2- Sockets Programming

TCP UDP

- Applets HTTP Delay Estimation DNS queries

Page 2: Discussion 2 - Sockets Programming  TCP  UDP - Applets  HTTP Delay Estimation  DNS queries

write programs that run on (different) end

systems communicate over

network e.g., web server software

communicates with browser software

No need to write software for network-core devices network-core devices do

not run user applications applications on end

systems allows for rapid app development, propagation

application

transportnetworkdata linkphysical

application

transportnetworkdata linkphysical

application

transportnetworkdata linkphysical

Application 2-2

Creating a network app

Page 3: Discussion 2 - Sockets Programming  TCP  UDP - Applets  HTTP Delay Estimation  DNS queries

What transport service does an app need?

Data loss some apps (e.g., audio) can

tolerate some loss other apps (e.g., file transfer,

telnet) require 100% reliable data transfer

Timing some apps (e.g., Internet

telephony, interactive games) require low delay to be “effective”

Throughput some apps (e.g., multimedia)

require minimum amount of throughput to be “effective”

other apps (“elastic apps”) make use of whatever throughput they get

Security encryption, data integrity, …

Application 2-3

Page 4: Discussion 2 - Sockets Programming  TCP  UDP - Applets  HTTP Delay Estimation  DNS queries

Socket

Application 2-4

process

Internet Protocols

socket

process

Internet Protocols

socket

Internet

Internet Sockets•Allow communication between processes in different machines.•Endpoints where network applications are attached.•Endpoint = <IP address, port number>

Page 5: Discussion 2 - Sockets Programming  TCP  UDP - Applets  HTTP Delay Estimation  DNS queries

Application Layer 2-5

Socket programming

goal: learn how to build client/server applications that communicate using sockets

socket: door between application process and end-end-transport protocol

Internet

controlledby OS

controlled byapp developer

transport

application

physical

link

network

process

transport

application

physical

link

network

processsocket

Page 6: Discussion 2 - Sockets Programming  TCP  UDP - Applets  HTTP Delay Estimation  DNS queries

Application Layer 2-6

Socket programming

Two socket types for two transport services: UDP: unreliable datagram TCP: reliable, byte stream-oriented

Application Example:1. Client reads a line of characters (data)

from its keyboard and sends the data to the server.

2. The server receives the data and converts characters to uppercase.

3. The server sends the modified data to the client.

4. The client receives the modified data and displays the line on its screen.

Page 7: Discussion 2 - Sockets Programming  TCP  UDP - Applets  HTTP Delay Estimation  DNS queries

Application Layer 2-7

Socket programming with TCPclient 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 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 that particular client allows server to talk

with multiple clients source port numbers

used to distinguish clients (more in Chap 3)

TCP provides reliable, in-orderbyte-stream transfer (“pipe”) between client and server

application viewpoint:

Page 8: Discussion 2 - Sockets Programming  TCP  UDP - Applets  HTTP Delay Estimation  DNS queries

Application Layer 2-8

Client/server socket interaction: TCP

wait for incomingconnection requestconnectionSocket =serverSocket.accept()

create socket,port=x, for incoming request:serverSocket = socket()

create socket,connect to hostid, port=xclientSocket = socket()

server (running on hostid) client

send request usingclientSocketread request from

connectionSocket

write reply toconnectionSocket

TCP connection setup

closeconnectionSocket

read reply fromclientSocket

closeclientSocket

Page 9: Discussion 2 - Sockets Programming  TCP  UDP - Applets  HTTP Delay Estimation  DNS queries

Application Layer 2-9

Example app: TCP client

from socket import *

serverName = ’servername’

serverPort = 12000

clientSocket = socket(AF_INET, SOCK_STREAM)

clientSocket.connect((serverName,serverPort))

sentence = raw_input(‘Input lowercase sentence:’)

clientSocket.send(sentence)

modifiedSentence = clientSocket.recv(1024)

print ‘From Server:’, modifiedSentence

clientSocket.close()

Python TCPClient

create TCP socket for server, remote port 12000

No need to attach server name, port

Page 10: Discussion 2 - Sockets Programming  TCP  UDP - Applets  HTTP Delay Estimation  DNS queries

Application Layer 2-10

Example app: TCP server

from socket import *

serverPort = 12000

serverSocket = socket(AF_INET,SOCK_STREAM)

serverSocket.bind((‘’,serverPort))

serverSocket.listen(1)

print ‘The server is ready to receive’

while 1:

connectionSocket, addr = serverSocket.accept()

sentence = connectionSocket.recv(1024)

capitalizedSentence = sentence.upper()

connectionSocket.send(capitalizedSentence)

connectionSocket.close()

Python TCPServer

create TCP welcoming

socket

server begins listening for incoming TCP requests

loop forever

server waits on accept()for incoming requests, new socket created on return

read bytes from socket (but not address as in UDP)

close connection to this client (but not welcoming socket)

Page 11: Discussion 2 - Sockets Programming  TCP  UDP - Applets  HTTP Delay Estimation  DNS queries

Application Layer 2-11

Socket programming with UDPUDP: no “connection” between client &

server no handshaking before sending data sender explicitly attaches IP destination

address and port # to each packet rcvr extracts sender IP address and port# from

received packet

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

Application viewpoint: UDP provides unreliable transfer of groups of

bytes (“datagrams”) between client and server

Page 12: Discussion 2 - Sockets Programming  TCP  UDP - Applets  HTTP Delay Estimation  DNS queries

Client/server socket interaction: UDP

closeclientSocket

read datagram fromclientSocket

create socket:clientSocket =socket(AF_INET,SOCK_DGRAM)

Create datagram with server IP andport=x; send datagram viaclientSocket

create socket, port= x:serverSocket =socket(AF_INET,SOCK_DGRAM)

read datagram fromserverSocket

write reply toserverSocketspecifying client address,port number

Application 2-12

server (running on serverIP) client

Page 13: Discussion 2 - Sockets Programming  TCP  UDP - Applets  HTTP Delay Estimation  DNS queries

Application Layer 2-13

Example app: UDP client

from socket import *

serverName = ‘hostname’

serverPort = 12000

clientSocket = socket(socket.AF_INET,

socket.SOCK_DGRAM)

message = raw_input(’Input lowercase sentence:’)

clientSocket.sendto(message,(serverName, serverPort))

modifiedMessage, serverAddress =

clientSocket.recvfrom(2048)

print modifiedMessage

clientSocket.close()

Python UDPClientinclude Python’s socket library

create UDP socket for server

get user keyboardinput

Attach server name, port to message; send into socket

print out received string and close socket

read reply characters from

socket into string

Page 14: Discussion 2 - Sockets Programming  TCP  UDP - Applets  HTTP Delay Estimation  DNS queries

Application Layer 2-14

Example app: UDP server

from socket import *

serverPort = 12000

serverSocket = socket(AF_INET, SOCK_DGRAM)

serverSocket.bind(('', serverPort))

print “The server is ready to receive”

while 1:

message, clientAddress = serverSocket.recvfrom(2048)

modifiedMessage = message.upper()

serverSocket.sendto(modifiedMessage, clientAddress)

Python UDPServer

create UDP socket

bind socket to local port number 12000

loop forever

Read from UDP socket into message, getting client’s address (client IP and port)

send upper case string back to this client

Page 15: Discussion 2 - Sockets Programming  TCP  UDP - Applets  HTTP Delay Estimation  DNS queries

Summary

TCP service: connection-oriented: setup

required between client and server processes

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 throughput guarantees, security

UDP service: unreliable data transfer

between sending and receiving process

does not provide: connection setup, reliability, flow control, congestion control, timing, throughput guarantee, or security

Q: why bother? Why is there a UDP?

Application 2-15