Beruflich Dokumente
Kultur Dokumente
Connection-Oriented
Connection-
Transport: TCP
Stan Kurkovsky
TCP: Overview
point
point--to-
to-point: full duplex data:
one sender, one receiver bi
bi--directional data flow in same
in-order byte steam:
reliable, in- connection
no message boundaries MSS: maximum segment size
pipelined: connection
connection--oriented:
TCP congestion and flow control handshaking (exchange of
set window size control msgs) inits sender,
receiver state before data
send & receive buffers: exchange
flow controlled:
sender will not overwhelm
receiver
application application
writes data reads data
socket socket
door door
TCP TCP
send buffer receive buffer
segment
Stan Kurkovsky
1
TCP segment structure
32 bits
URG: urgent data counting
(generally not used) source port # dest port #
by bytes
sequence number of data
ACK: ACK #
valid acknowledgement number (not segments!)
head not
PSH: push data now len used
UA P R S F Receive window
(generally not used) # bytes
checksum Urg data pnter
rcvr willing
RST, SYN, FIN: to accept
Options (variable length)
connection estab
(setup, teardown
commands)
application
Internet data
checksum (variable length)
(as in UDP)
Stan Kurkovsky
ACKs: User
types
seq # of next byte C
expected from other host ACKs
side receipt of
C, echoes
cumulative ACK back C
Q: how receiver handles out-
out-
of-
of-order segments host ACKs
A: TCP spec doesnt receipt
say, - up to of echoed
C
implementor
time
simple telnet scenario
Stan Kurkovsky
2
TCP Round Trip Time and Timeout
Q: how to set TCP timeout value?
longer than RTT
but RTT varies
too short: premature timeout
unnecessary retransmissions
too long: slow reaction to segment loss
Stan Kurkovsky
Stan Kurkovsky
3
TCP reliable data transfer
TCP creates rdt service on top of IPs unreliable service
Pipelined segments
Cumulative acks
TCP uses single retransmission timer
Stan Kurkovsky
timeout:
retransmit segment that caused timeout
restart timer
Ack rcvd:
If acknowledges previously unacked segments
update what is known to be acked
start timer if there are outstanding segments
Stan Kurkovsky
4
TCP retransmission scenarios
Seq=92 timeout
timeout
X
loss
Sendbase
= 100
Seq=92 timeout
SendBase
= 120
SendBase
= 100 SendBase
= 120
time time
lost ACK scenario premature timeout
Stan Kurkovsky
Host A Host B
timeout
X
loss
SendBase
= 120
time
Cumulative ACK scenario
Stan Kurkovsky
5
TCP ACK generation
Arrival of in-
in-order segment with Immediately send single cumulative
expected seq #. One other ACK, ACKing both in-
in-order segments
segment has ACK pending
Arrival of out-
out-of
of--order segment Immediately send duplicate ACK,
ACK,
higher--than
higher than--expect seq. # . indicating seq. # of next expected byte
Gap detected
Stan Kurkovsky
Fast Retransmit
Time-
Time-out period often relatively long:
long delay before resending lost packet
Detect lost segments via duplicate ACKs.
Sender often sends many segments back- back-to-
to-back
If segment is lost, there will likely be many duplicate ACKs.
If sender receives 3 ACKs for the same data, it supposes that segment
after ACKed data was lost:
fast retransmit: resend segment before timer expires
Stan Kurkovsky
6
TCP Flow Control
sender wont overflow receivers buffer by transmitting too much, too fast
receive side of TCP connection has a receive buffer:
Stan Kurkovsky
Stan Kurkovsky
7
TCP Connection Management
Closing a connection:
client server
client closes socket:
clientSocket.close(); close
closed
Stan Kurkovsky
8
TCP Connection Management (cont.)
Step 4: server
server,, receives ACK. closing
Connection closed.
timed wait
handle simultaneous FINs.
closed
closed
Stan Kurkovsky
TCP server
lifecycle
TCP client
lifecycle
Stan Kurkovsky