Transport Control Protocol (TCP)
Features of TCP, packet loss and retransmission, adaptive
retransmission, flow control, three way handshake, congestion control
Reliable transport
• IP is unreliable• Application programmers typically require
reliability (although not always)• The Transmission Control Protocol (TCP)
establishes a reliable end-to-end communication service on top of IP
Seven major features of TCP
1. Connection oriented2. Point to point3. Complete reliability - delivered as sent4. Full duplex communication5. Stream interface6. Reliable connection startup7. Graceful connection shutdown
End to end communication
• TCP has no knowledge of the underlying Internet structure
Fundamental reliability problems
• Unreliable delivery by the communication system (IP)
• Unreliable end hosts (e.g., crashes and reboots
• TCP handles these through a variety of techniques
Packet loss and retransmission• Sender sets a
timer• Receiver sends a
acknowledgement
• Timeout results in retransmission
Adaptive retransmission• Sensible timer values vary greatly on an
Internet• TCP monitors the delay on a connection
and adapts the timer– notes time taken to receive
acknowledgements– computes weighted average and variance
over many transmissions and uses these to set the timer
Two different timeouts
Flow control• TCP uses a window mechanism• Each end of the connection allocates a buffer
and notifies the other end of its size• Receiver sends available window size in each
acknowledgement (window advertisement)• Receiver sends window advertisement when
the application consumes some data• Zero window advertisement tells the sender
to stop transmitting until further notice
Three way handshake
• Uses special synchronisation (SYN) and finish (FIN) messages to open and close connections
• Also confirms that all data has been received at both sides
• Each end of each new connection randomly generates a 32 bit connection identifier
Congestion control
• TCP monitors congestion through message loss– first lost message, TCP backs right off and sends
just one small message – if this is not lost, doubles data size and sends two– continues exponential growth until half receiver’s
window size is reached then slows down rate of increase
TCP segment format
• TCP messages are called segments
• Example exam question:
http://www.cs.nott.ac.uk/~mvr/3-ccn.doc