In order for TCP to provide a reliable transport service, it has to overcome IP’s own inherent weaknesses, possibly the greatest of which is the inability to track data as it gets sent across the network. IP only moves packets around the network, and makes no pretense towards offering any sort of reliability whatsoever. Although this lack of reliability is actually a designed-in feature of IP that allows it to move data across multiple paths quickly, it is also an inherent weakness that must be overcome in order for applications to communicate with each other reliably and efficiently.
TCP does this by building a virtual circuit on top of IP’s packet-centric network layer, and then tracking data as it is sent through the virtual circuit. This concept is illustrated in Figure 7.1. Whenever a connection is made between two TCP endpoints, all of the data gets passed through the virtual circuit.
By using this virtual circuit layer, TCP accomplishes several things. It allows IP to do what it does best (which is moving individual packets around the network), while also allowing applications to send and receive data without them having to worry about the condition of the underlying network. And since each byte of data is monitored individually by TCP, it’s easy to take corrective actions whenever required, providing reliability ...