Differences Between TCP, UDP, and ICMP
Not every protocol is the same, and understanding how they differ can help you find problems faster.
Most people with a basic understanding of the internet know that data isn’t streaming through their Ethernet cable like water from a faucet. Instead, it’s being sent in discreet chunks called packets, each being a snippet of information routers and other devices can easily pass back and forth with minimal risk.
Network 101. Easy stuff.
But there’s a lot more to packets than just that. Not all data is created equal, and the needs of some applications are wildly different than the needs of others. This is why packets come in several different flavors. Each is specialized for specific situations, allowing for better data transmission and fewer snags.
We’ve rounded up the three most popular transmission protocols to give you a better understanding of how each is specialized for a given task, as well as how to best use them when troubleshooting with your network tool of choice.
The Transmission Control Protocol, or TCP, is as OG as it gets. TCP was part of the initial network transmission program that eventually gave way to the Internet Protocol used in modern networking.
TCP is widely used for its reliability, ordered nature (the packets are processed in a fixed sequence, not just as they arrive), and error correction. TCP is used for a ton of things, like email, file transfers, and any other operation where ordered, error-free data is more important than pure speed.
In network diagnostic software like PingPlotter, TCP is best used when testing specific situations where a TCP-like segment fails or struggles to reach its destination. A great example is with FTP. If you’re noticing your FTP traffic is being restricted or blocked, you can start using a trace with TCP to see where along the route FTP is being hindered.
The User Datagram Protocol, or UDP, is a bit different from what you might expect from a transport protocol. Unlike TCP, UDP is a connectionless communication method. This means UDP datagrams can be sent without establishing a connection between two devices, allowing them to be sent without consideration for rate or sequence.
For UDP, the primary focus is speed. Since UDP datagrams are coordinated by the application and not the protocol, they can be received and processed as they come. This is critical for things like video streams or VOIP, where processing info as fast as possible is more critical than reassembling the data in perfect order.
In PingPlotter, using UDP to test things like livestreams or other time-sensitive applications can give you a better idea where your data is being held up.
The Internet Control Message Protocol, or ICMP, has an entirely different function than TCP and UDP. Unlike these types, ICMP is not a traditional data packet protocol. ICMP is a special type of packet used for inter-device communication, carrying everything from redirect instructions to timestamps for synchronization between devices.
What ICMP is probably best known for, however, is echo requests. This is pretty much what it sounds like. One device sends out an ICMP packet to another, telling the recipient to send a reply confirming it received the request. The recipient then responds with a new ICMP packet, the echo reply, confirming the request.
If you haven’t guessed, ICMP is the primary packet type used by software like PingPlotter. ICMP is built specifically for testing networks with minimal overhead. In almost every situation, you want to begin your network testing with ICMP, as it gives a good baseline to begin troubleshooting. If you feel like a route is ignoring ICMP traffic, it then makes sense to continue testing with a different packet type. Otherwise, ICMP is often more than enough to find and fix a network issue.
Packet up, packet in
While it’s easy to just ping a network, understanding how packet types work their magic can make collecting the most accurate and actionable data easier. If you know how your problem meshes with the packet type in use, a tool like PingPlotter can tell you even more about the true nature of your problem.