Transmission Control Protocol (TCP)

networks
Transmission Control Protocol (TCP)

The transmission control protocol is a layer 4 protocol that allows for multiplexing and a duplex communication channel. It is defined in RFC793. This is a connection orientated protocol which establishes a connection with TCP 3 way handshake and closes connections with the TCP connection teardown. This gaurentees the following features.

  • reliability: every message will be received and acknowledge or it will be redelivered,
  • ordered delivery: messages have a sequence number and will only be parsed to the Application layer in order,
  • error checking: Checksum in layer 4,
  • Transmission control in TCP:
    • Flow control: allow the receiver to dictate how many message it can buffer.
    • Congestion control and fair usage: will use connection probing to determine a safe and fair transmission rate.

The TCP header has the following fields:

  • Source port,
  • Destination port,
  • sequence number: the sequence number of the first data octect, this has a special role in the TCP 3 way handshake,
  • Acknowledgement number: the next sequence number the receiver is expecting to get,
  • Data offset: the number of 32 bit words in the TCP header,
  • Reserved: set to all 0’s,
  • control bits: these are 0 or 1 for the following 6 fields Urgent, Acknowledgement, Push, Reset, Synchronise, and Finish.
  • Window: The number of data octets number of data octets the sender of this segment is willing to receive.
  • Checksum: Checksum in layer 4,
  • Urgent pointer,
  • Options, and
  • Padding to make the header a multiple of 32 bits.

Tcp Header

Flow control in TCP

Suppose [host](host_(networks).md) A is transmitting data to [host](host_(networks).md) B. When this starts up [host](host_(networks).md) B will reserve some amount of memory to buffer unprocessed packages. Lets say it can fit `RcvBuffer` bytes. Then it keeps track of `LastByteRead` and `LastByteRecieved`