Packet loss in IP based networks is a fact that one just has to accept –
physical networks always have errors of some form or another. Noise on a
communications channel (link) is what limits the bandwidth over the channel.
(See Shannon Channel Capacity).
There are many techniques to limit and control the loss of packets over a
specific link such as error connection protocols (FEC) or local link
retransmission of packets/frames. (Link Access Protocol LAPD).
The problem with these local link techniques is that they really require that
every single link have them and work correctly, which, in reality, can add
significantly to latency and cost of the link. Moreover, they also still can’t
correct for problems which occur inside a router or switch and not on the links
themselves. There still needs to be some mechanism to detect and correct
packet loss from end to end. (Saltzer, J. H., D. P. Reed, and D. D. Clark (1981)
“End-to-End Arguments in System Design”)
So how does the Internet deal with these issues?
Different links in the path will have different local link error correction and
retransmission methods depending on the physical properties of the link. Most
physical links today do not implement local retransmission protocols and these
are left to the high-level protocols which are carried on the link.
In the Internet Protocol (IP) ecosystem suite there are two major end-to-end
protocols. User Datagram Protocol, which does not guarantee packet order or
packet delivery but rather it exposes the underlying IP datagram service to
higher level applications. It does, however, provide a port based packet
The second major end to end protocol in the IP suite is Transmission Control
Protocol (TCP). The TCP protocol provides applications with an end to end
guarantee of order delivery of a stream of bytes. It does not guarantee any time
of latency or delay or a constant rate of delivery of bytes. This is one of the
reasons that applications which need lower or controlled latency will use UDP or
direct IP and not TCP.
The details of TCP are well known. And for this blog, it is enough to know that
as a TCP end station receives a set of bytes from the other end, it sends an
acknowledgement that they have been received. When the sending end does not see
an acknowledgement for packets it will resend a smaller set of unacknowledged
bytes – and again await a reply. The fact that the number of bytes send
without acknowledgement is smaller is an important TCP optimization for the