Home » TCP/IP

TCP/IP

TCP Protocol: Slow Start

stevens4

In the last post we explained the basic idea of using sequence and acknowledgement numbers to track how many bytes were sent and received. We also has encountered the term “slow start” and elaborated how TCP uses this concept on the server to send few segments of data to the receiver instead of sending the full receive window (RWIN) of the receiver and congest the path between them. Today, we will try to dive into slow start and, as every previous post, relate the theoretical part with a real capture file. Have you ever wondered, why the first few seconds of any …

Read More »

TCP Protocol: Flow Control

In the last two posts here and here, we have discussed how TCP stack initiates a TCP 3-way handshake and create the appropriate Transmission Control Block for the data to flow reliably. We knew that the main function of the 3-way handshaking is to exchange the sequence numbers, MSS, receive window and other parameters between two endpoints. In this post, we will discuss the concept of flow control and how TCP will reliably make sure that data segments are delivered to the other end in-order for the correct data reassembly using the sequence and acknowledgement numbers and sliding windows. Let’s …

Read More »

TCP Protocol: TCP 3-way handshaking #2

tcp-protocol

In the last post, we have explained the TCP 3-way handshaking from an abstract point of view, and knew that one of the main functions of this handshaking is to exchange and synchronize some parameters for the TCP connection endpoints to facilitate its job. We also knew that two of the main parameters that the end-points exchange in the TCP 3-way handshaking are the SEQUENCE and ACK numbers. Today, we will continue the 3-way handshaking process in more details. Above is a TCP capture file which I downloaded from “Wireshark” wiki page that shows 3 packets in sequence between two end-hosts. From …

Read More »

TCP Protocol: Three-way Handshake

tcp-protocol

We all know by now that the basic function of the TCP protocol is to send a stream of bytes that has no shape or fixed size over a network reliably to a receiver. We all also know that reliable delivery involves building a connection between two end-hosts, and this will be the first step that the TCP stack do to exchange data. Above figure, has a host on a side and a server on the other. Host needs to get/download a file from the server via FTP protocol which is dependent on TCP. The Host will start off by allocating …

Read More »

TCP Protocol: The Overview – Part1

tcp-protocol

One of the most important layers we – as network engineers – hate and avoid in the OSI reference model is the transport layer with its popular and dominant protocol; TCP. Most of network engineers abandoned diving into TCP protocol because they consider it a host-to-host communication protocol that usually works without a problem. End systems either Windows or Linux gets installed with their own version of TCP stack with some pre-configured values that usually don’t break, so why would we bother ourselves learning about one of the most important protocol in the TCP/IP stack! The irony here is that, System Engineers, Application …

Read More »

Understand MTU and MRU – The Full Story

MTU or Maximum transmission unit is a topic that pops up every once in a while in different discussions. Although it’s a simple concept, it causes a lot of confusion specially for those who are new to the field. MTU typically becomes an issue of concern during network changes, like adding new vendors equipment or upgrading to a new software. One reason for that is the difference in  implementations used by different vendors or even between different OS versions or equipment  from the same vendor. Here is an example for such confusion  MTU and ping size confusion. On the other …

Read More »