Skip to content

Transport Control Protocol (TCP)#

TCP is a system for managing parcels of information called "packets". Packets are containers you put information inside of and send off to another system on a network. This system of managing packets that we call TCP comes with guarantees like reliability, re-sending if the parcel doesn't make it, error checking to make sure the parcel is in its original state and hasn't got corrupted along the way, and more. TCP sends and works with packets of information.

It's important that you understand one key point here: TCP is used to send multiple packets of data, but it's not responsible for deciding what that data is. It's simply the courier of the data, not the creator of the data.

Think of your local postal system. You write a letter (the data) to someone and then you go to the post office. You hand them the letter and tell them the name of the person you're sending the letter to (the address, which is where IP comes in later on). They put the letter (the data) in an envelope (a packet), which they are responsible for, and then offer guarantees about the delivery of the envelope (packet) to the person you wrote the letter (data) for. They even check the person signs for the letter and then send you back a confirmation of delivery.

So TCP is the postal system but the application, like Firefox, is the author of the letter that gets put inside the packet and sent using TCP. Or put another way:

"The Transmission Control Protocol [TCP] provides a communication service at an intermediate level between an application program and the Internet Protocol [IP]." - Wikipedia (edited by me to highlight certain words)

It's the kernel's job to handle the TCP(/IP) stack.

TCP is used for pretty much all Internet communications you've ever used. The most common applications like browsing the Internet, email, remotely administrating systems (something we'll do later on), transferring files, etc., are all done over TCP (and UDP.) It's an extremely powerful protocol.

Key Points#

  1. Client/Server Model
  2. The Handshake
  3. Port Numbers
  4. Stateful
  5. The Header

Make sure you do your self-assessment and projects. Really hammer home that knowledge!