Have you ever experienced an internet breakdown during a critical moment – such as gaming, streaming, or uploading an important email attachment – and wondered what was wrong with your connection? You try pinging the server. Nothing. You run traceroute. Just stars and silence. It’s kind of frustrating, isn’t it?
tcptraceroute is a useful tool that helps navigate network complexities by identifying exactly where packet loss is occurring, even when firewalls are involved.
Let’s break it down.
What is tcptraceroute?

Regular traceroute is cool until it’s not. It uses UDP or ICMP packets (like ping), which are often blocked by routers or firewalls for “security reasons.” That means it can’t show you the full path your data takes to a destination.
But tcptraceroute? It uses TCP packets—the same kind your browser or apps use when accessing websites. So it can often reach places traceroute can’t.
How to Install tcptraceroute
Getting it installed is easy:
On Ubuntu or Debian:
sudo apt install tcptraceroute
On macOS (with Homebrew):
brew install tcptraceroute
On RedHat or CentOS:
sudo yum install tcptraceroute
That’s it. One quick command and you’re ready to rock.
Try this:
sudo tcptraceroute google.com 80
You’ll need sudo because it sends raw packets. This traces the route to Google over TCP port 80 (HTTP). You’ll see a list of IPs, each representing a hop between you and the final server.
It’s like watching your data hop across continents. Sometimes, you’ll see your home router, your ISP, then bigger backbones. It’s super satisfying to trace.
tcptraceroute Options (With Real Examples)
Let’s break down all the options you can use with tcptraceroute. I’ll give you a clear description and a real-world example for each.
1. -s – Set the Source Port
sudo tcptraceroute -s 12345 google.com 80
This sets the source port your machine uses. Some firewalls behave differently depending on source ports. It’s one of those things you change when you’re troubleshooting something funky.
I had a case where a corporate firewall was blocking anything not from ports above 1024. Changed the source port, and it worked like magic.
2. -f – Set the Starting TTL
sudo tcptraceroute -f 5 google.com 80
TTL (Time-To-Live) controls how far packets go. By default, it starts at 1 and increases. Setting it to 5 skips the first four hops. Handy if you don’t care about your local router or ISP.
3. -m – Set the Maximum TTL
sudo tcptraceroute -m 15 google.com 80
This limits how far the trace will go. If the destination is only 10 hops away, setting this can make your trace faster.
4. -q – Number of Queries Per Hop
sudo tcptraceroute -q 1 google.com 80
This sends only one packet per hop. By default, it sends three. Lowering it makes the trace quicker, but you’ll get less data to compare between hops.
5. -w – Wait Time for Replies
sudo tcptraceroute -w 2 google.com 80
Sets how long to wait for each hop’s response (in seconds). If your network is laggy or the destination is slow to reply, increasing this helps.
6. -a – Specify Source Address
sudo tcptraceroute -a 192.168.1.100 google.com 80
If your machine has multiple network interfaces (like Ethernet and Wi-Fi), you can choose which one to use. Super helpful when testing different paths.
7. -d – Enable Debug Output
sudo tcptraceroute -d google.com 80
Spits out a ton of useful information about what’s happening behind the scenes. It’s like turning on x-ray vision for your packets. Great for advanced troubleshooting.
8. -h – Help
tcptraceroute -h
Shows a list of available options. Always useful when you forget a flag.
Why You Should Use tcptraceroute
Here are some real scenarios where this tool saved my sanity:
- When traceroute failed but websites still loaded slowly: I traced the issue to a specific firewall in between.
- When my VPN wouldn’t connect: The packets were dropping at my ISP’s upstream provider – who knew?
- When diagnosing CDN issues: Some content delivery networks use routes that regular traceroute can’t see, but tcptraceroute handles them beautifully.
I’ve used it during late-night outages, to debug tricky latency spikes, and even just out of curiosity – to see the path my data takes to reach another country.
Common Issues and Gotchas
- You need sudo: It sends raw packets, so root access is usually required.
- Some networks drop TCP SYN packets too: It’s rare, but it happens.
- Some hops don’t reply: That’s okay. Routers aren’t always chatty.
Wrapping It Up
tcptraceroute is one of those tools that quietly makes you look like a genius when you pull it out during a network emergency. While everyone else is guessing, you’re looking at real hops and real delays, saying, “Yep, it’s the Level 3 router in Amsterdam again.”
It’s not glamorous. It’s not flashy. But it works—and in networking, that’s what counts.
If you’ve never used it, give it a try. And the next time someone asks why their connection is slow, just smile and say, “Hold on. I’ll tcptraceroute it.”