Transmission Control Protocol (TCP )
- TCP provides a reliable, error-free virtual
connection for two-way stream-oriented transfer
of data
- RFC 793
- Five basic features:
- delivers streams of bits with guaranteed
delivery in the same order as sent
- virtual circuit connection
- buffered transfer with push
semantics
- unstructured data stream
- full duplex connection
- Reliability provided through positive
acknowledgment with retransmission
strategy
- Ideal communication
- Sender sends Packet 1
- Receiver receives Packet 1
- Receiver sends acknowledgment (ACK)
for Packet 1
- Sender receives ACK 1
- Sender sends Packet 2
- Receiver receives Packet 2
- Receiver sends ACK2
- Sender receives ACK2
- Etc.

Basic TCP
send/receive transmission.
- Faulty communication
- Sender sends Packet 1
- Sender starts timer
- Receiver does not receive Packet 1
- Sender timer expires
- Sender resends Packet 1
- Sender starts timer
- Receiver receives Packet 1
- Receiver sends ACK1
- Sender receives ACK1
- Sender cancels timer
- Etc.

TCP timeout
- Sliding Window
- Sender sends Packet 1 and starts Timer 1
- Sender sends Packet 2 and starts Timer 2
-
-
-
- Sender sends Packet N and starts Timer N
- Receiver receives Packet 1 and sends ACK
1
- Receiver receives Packet 2 and sends ACK
2
-
-
-
- Receiver receives Packet N and sends ACK
N
- Sender receives ACK 1 before Timer 1
expires
- Sender receives ACK 2 before Timer 2
expires
-
-
-
- Sender receives ACK N before Timer N
expires
- Etc.

TCP
send/receive using sliding window.
- Connection
- Connection is a basic TCP abstraction
defined by a pair of endpoints
- Endpoint is a pair: (host, port)
- host is the host's IP address
- port is a TCP port on the host
- Operations using connections described
below
- TCP Segments
- Data stream transmitted in segments,
usually encapsulated within single IP
packets
- Concept of sliding window of octets used
- Sender maintains pointers to
octets in sequence sent, those
ready to be sent but not sent,
and those not ready to be sent
- Receiver sends acknowledgment of
octets received plus
advertisement of number it is
prepared to receive
- Segment structure
- Header
- source port
- destination port
- sequence number
- acknowledgment number
- header length
- reserved
- code bits
- window
- checksum
- urgent pointer
- options
- padding
- data
TCP Segment.
Adapted from Comer,IWTCP/IP, Figure
13.7.
- Establishing TCP connection
- Receiver sends passive open
request to operating system, saying it is
open for business
- OS assigns Receiver TCP port number,
often a well-known number,
e.g., port 80
- Time passes . . .
- Sender sends message (TCP segment)
requesting connection with SYN bit set
and SEQ=x, where x is some random number that begins
sequence of numbers it will use for synchronization.
- Receiver receives message and returns
message with SYN and ACK bits set; also
saves SEQ=x, and sends SEQ=y, where y is some random
number that begins sequence of numbers it will use for
synchronization, and ACK=x+1(seq. number of first octet it
expects to receive)
- Sender receives ACK message and sends its
own ACK message back to Receiver; also
saves y and sends y+1, confirming receipt
of y
- Receiver receives Senders ACK message
- Connection is, thus, established
- Closing TCP connection
- Sender closes connection
- Sender sends close connection message
with FIN bit set
- Receiver receives close message and
returns message with FIN and ACK bits set
- Sender receives ACK message
- Receiver closes connection
- Receiver sends message with FIN and ACK
bits set
- Sender receives FIN and ACK message
- Sender sends ACK message
- Receiver receives Senders ACK message
- Connection is, thus, closed