Application Design based on TCP or UDP
Download
Report
Transcript Application Design based on TCP or UDP
Application Design based on TCP or UDP
Lesson 6
IHA præsentation
1
Outline for today
• The Internet Protocols: UDP & TCP
• Socket programming
• Application Design based on TCP/UPD
IHA præsentation
2
TCP/UPD: Transport services
•provide logical communication
between app processes running
on different hosts
•transport protocols run in end
systems
•send side: breaks app
messages into segments,
passes to network layer
•rcv side: reassembles
segments into messages,
passes to app layer
•more than one transport protocol
available to apps
•Internet: TCP and UDP
IHA præsentation
application
transport
network
data link
physical
application
transport
network
data link
physical
3
Transport vs. network layer
•network layer: logical
communication between
hosts
•transport layer: logical
communication between
processes
•relies on, enhances,
network layer services
IHA præsentation
4
Internet transport-layer protocols
•reliable, in-order delivery: TCP
•Connection-oriented
• Handshake to setup com.
•congestion control
•flow control
•connection setup
•unreliable, unordered delivery: UDP
•connectionless
•no-frills extension of “best-effort” IP
•services not available:
application
transport
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physicalnetwork
network
data link
physical
data link
physical
network
data link
physical
application
transport
network
data link
physical
•delay guarantees
•bandwidth guarantees
IHA præsentation
5
UDP: more
•often used for streaming
multimedia apps
Length, in
•loss tolerant
bytes of UDP
•rate sensitive
segment,
•other UDP uses
•DNS
•SNMP
•reliable transfer over
UDP: add reliability at
application layer
•application-specific
error recovery!
32 bits
source port #
dest port #
length
checksum
including
header
Application
data
(message)
UDP segment format
IHA præsentation
6
UDP checksum
Goal: detect “errors” (e.g., flipped bits) in transmitted segment
Sender:
Receiver:
•treat segment contents as
sequence of 16-bit integers
•checksum: addition (1’s
complement sum) of segment
contents
•sender puts checksum value
into UDP checksum field
•compute checksum of received
segment
•check if computed checksum
equals checksum field value:
•NO - error detected
•YES - no error detected. But
maybe errors nonetheless?
IHA præsentation
7
TCP: Overview
RFCs: 793, 1122, 1323, 2018, 2581
•point-to-point:
•full duplex data:
•one sender, one receiver
•bi-directional data flow in
same connection
•MSS: maximum segment
size
•reliable, in-order byte steam:
•no “message boundaries”
•pipelined:
•connection-oriented:
•TCP congestion and flow
control set window size
•handshaking (exchange of
control msgs) init’s sender,
receiver state before data
exchange
•send & receive buffers
•flow controlled:
socket
door
application
writes data
application
reads data
TCP
send buffer
TCP
receive buffer
socket
door
•sender will not overwhelm
receiver
segment
IHA præsentation
8
TCP segment structure
URG: urgent data
(generally not used)
ACK: ACK #
valid
PSH: push data now
(generally not used)
RST, SYN, FIN:
connection estab
(setup, teardown
commands)
Internet
checksum
(as in UDP)
32 bits
source port #
dest port #
sequence number
acknowledgement number
head not
UA P R S F
len used
checksum
Receive window
Urg data pnter
Options (variable length)
counting
by bytes
of data
(not segments!)
# bytes
rcvr willing
to accept
application
data
(variable length)
IHA præsentation
9
TCP seq. #’s and ACKs
Seq. #’s:
•byte stream “number”
of first byte in
segment’s data
ACKs:
•seq # of next byte
expected from other
side
•cumulative ACK
Q: how receiver handles
out-of-order segments
•A: TCP spec doesn’t
say, - up to
implementor
Host A
User
types
‘C’
Host B
host ACKs
receipt of
‘C’, echoes
back ‘C’
host ACKs
receipt
of echoed
‘C’
simple telnet scenario
IHA præsentation
time
10
Question
Suppose you want to do a transaction from a remote
client to a server as fast as possible.
Would you use UDP or TCP? Why ?
You would use UDP. With UDP, the transaction can be completed in one
roundtrip time (RTT) - the client sends the transaction request into a UDP
socket, and the server sends the reply back to the client's UDP socket. With
TCP, a minimum of two RTTs are needed - one to set-up the TCP
connection, and another for the client to send the request, and for the server
to send back the reply.
IHA præsentation
11
Socket Programming
IHA præsentation
12
Socket programming
Goal: learn how to build client/server application that communicate
using sockets
socket
Socket API
•
•
•
•
introduced in BSD4.1 UNIX, 1981
explicitly created, used, released
by apps
client/server paradigm
two types of transport service via
socket API:
• unreliable datagram
• reliable, byte streamoriented
IHA præsentation
a host-local,
application-created,
OS-controlled interface
(a “door”) into which
application process can
both send and
receive messages to/from
another application
process
13
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
controlled by
application
developer
controlled by
operating
system
process
process
socket
TCP with
buffers,
variables
internet
socket
TCP with
buffers,
variables
controlled by
application
developer
controlled by
operating
system
host or
server
host or
server
IHA præsentation
14
Addressing processes
•to receive messages, process
must have identifier
•host device has unique 32-bit
IP address
•Q: does IP address of host
suffice for identifying the
process?
IHA præsentation
15
Addressing processes
•to receive messages,
process must have identifier
•host device has unique 32-bit
IP address
•Q: does IP address of host
on which process runs suffice
for identifying the process?
•A: No, many processes
can be running on same
host
•identifier includes both IP
address and port numbers
associated with process on
host.
•Example port numbers:
•HTTP server: 80
•Mail server: 25
•to send HTTP message to
gaia.cs.umass.edu web server:
IHA præsentation
•IP address: 128.119.245.12
•Port number: 80
16
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
IHA præsentation
17
Client/server socket interaction: TCP
Server (running on hostid)
Client
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()
TCP
wait for incoming
connection request connection
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
IHA præsentation
18
Socket programming with UDP
UDP: no “connection” between
client and server
•no handshaking
•sender explicitly attaches IP
application viewpoint
address and port of destination
UDP provides unreliable transfer
to each packet
of groups of bytes (“datagrams”)
•server must extract IP address,
between client and server
port of sender from received
packet
UDP: transmitted data may be
received out of order, or lost
IHA præsentation
19
Client/server socket interaction: UDP
Server (running on hostid)
Client
create socket,
clientSocket =
DatagramSocket()
create socket,
port= x.
serverSocket =
DatagramSocket()
Create datagram with server IP and
port=x; send datagram via
clientSocket
read datagram from
serverSocket
write reply to
serverSocket
specifying
client address,
port number
read datagram from
clientSocket
close
clientSocket
IHA præsentation
20
Application Design
based on
TCP or UDP
IHA præsentation
21
Application Design
• Application Architecure to choose?
• Client-Server architecture
• Peer-to- peer architecture
• Hybrid of client-server and P2P
• What services do the application requires?
• TCP
• UDP
IHA præsentation
22
Client-server architecture
server:
•always-on host
•permanent IP address
•server farms for scaling
clients:
•communicate with server
•may be intermittently
connected
•may have dynamic IP
addresses
•do not communicate directly
with each other
client/server
IHA præsentation
23
Pure P2P architecture
•no always-on server
•arbitrary end systems directly
communicate
peer-peer
•peers are intermittently
connected and change IP
addresses
Highly scalable but difficult to
manage
IHA præsentation
24
Hybrid of client-server and P2P
Skype
• voice-over-IP P2P application
• centralized server: finding address of remote party:
• client-client connection: direct (not through server)
Instant messaging
• chatting between two users is P2P
• centralized service: client presence detection/location
• user registers its IP address with central
server when it comes online
• user contacts central server to find IP
addresses of buddies
IHA præsentation
25
Application Design
• Application Designers should be aware of:
• Silly Window Syndrome
•
IHA præsentation
26
Silly Window Syndrome
• Problem
• Sender only creates data slowly, or
• Receiver consumes data slowly.
• Example
• Packet size 5 – 10 bytes + 20 bytes (TCP Hdr) + 20 IP
Hdr => total of 45-50 bytes
• Network capacity used ineffeciently
• => adds to congestion in the network
IHA præsentation
27
Syndrome created by the sender
Nagle’s Algorithm
1. The sending TCP sends the first piece of data it receives from the
sending application even if it is only 1 byte
2. After sending the first segment, the sending TCP accumelates data in
the output buffer and waits until either the receiving TCP sends ACK or
until enough data has accumelated to fill a maximum-size segment. At
this time the sending TCP can send a segment
3. Step 2 is repeated for the rest of the transmission
IHA præsentation
28
Syndrome created by the sender
Nagle’s Algorithm Effect
•
If sending application is faster than network:
• Transmission buffer becomes full =>
• Segments are larger (maximum-size segments)
•
If network is faster than sending application:
• ACKs received before buffer is full =>
• Segments are smaller
How to enable Nagle’s Algorithm:
Socket option: TCP_NODELAY
IHA præsentation
29
Syndrome created by the receiver
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sender creates data in blocks of 1kbyte
Receiver consumes data 1 byte at a time
Receiver buffer is 4 kbytes
Sender sends 4 kbytes of data
Receiver advertises a window size of zero
Sender stops sending data
Receiving application reads 1 byte
Receiving TCP announces a window size of 1 byte
Sending TCP sends 1 byte of data
Inefficient usage of network
IHA præsentation
30
Syndrome created by the receiver
Clark’s Solution
Send ACK as soon as the data arrives, but Announce a window size of zero
until either there is enough space to accommodate a segment of max. Size
or until half of the buffer is empty
Delayed Acknowledgement
Delay sending ACK. The receiver waits until there is a decent amount of
space in its incoming buffer before acknowledging the arrived segments. =>
Sender can not slid its window, and stops sending data.
What happens if we wait to long before sending ACK?
IHA præsentation
31
Question & repetition
IHA præsentation
32
Eksamen er uden forberedelse
Eksamensspørgsmål udleveres
IHA præsentation
33