TCP: Transmission Control Protocol • Overview • Connection set-up and termination • Interactive • Bulk transfer • Timers • Improvements
TCP: Overview • Connection oriented, byte stream service • Full or half duplex service • Reliability (ARQ) – Sliding window with variable sized window – Stream is sent in segments (IP datagrams) – SN for bytes – Receiver buffer reorders bytes – Checksum on header and data – Discards duplicate data – Flow control
65535 -20 -20=65495 TCP: Overview TCP segment IP Header TCP Data Source port # Destination port # Sequence # Acknowledgement # HL reserv flags Window size Checksum Urgent pointer Options if any
TCP: Flags • URG: The urgent pointer is used • ACK: The acknowledgement number is valid • PSH: The receiver should pass this data to the application as soon as possible • RST: Reset the connection • SYN: Synchronize sequence numbers to initiate a connection. • FIN: The sender is finished sending data
TCP: Set-Up Syn=1 Ack = 0 A: SYN, MSS, SN=ISN A Full duplex B: SYN, MSS, SN=ISN Syn 1 ack 1 B: ACK A: ACK B
TCP: Termination A: FIN A B: ack of FIN B: FIN A: ack of FIN B Both sides close
TCP windows Actually, min{offered window from receiver, cwnd} usable window 1 2 3 sent and acked 4 5 6 sent but not acked 7 8 can send asap 9 10 11
TCP Timeout and Retransmission Each packet has a retransmission timer • It is initialized by the retransmission time out (RTO) value • When the timer expires, a time out occurs and the data is retransmitted • If a retransmission fails then the time-out doubles i. e. , exponential backoff. It’s important to find a good RTO value