Flags are one of those things you use every day in DevOps but rarely stop to think about. Until something breaks.
If you've ever typed curl -v or ping -c 5 without fully remembering what the flag does, you're not alone. Networking flags are small switches that dramatically change behavior — often turning a basic command into a powerful diagnostic tool.
What exactly are “flags”?
Flags (sometimes called options or switches) modify how a command behaves. In networking workflows, they control things like:
- Timeouts and retries
- Output verbosity
- Protocol behavior
- Headers and payloads
- DNS resolution
They’re especially important in DevOps because most debugging happens through CLI tools.
Start with something familiar: curl
curl is probably the most flag-heavy networking tool you'll use.
Here’s a simple request:
$ curl https://api.example.comNow add flags:
$ curl -v -X GET https://api.example.comWhat changed?
- -v: verbose output (shows headers and connection details)
- -X GET: explicitly sets HTTP method
Here’s where things get interesting:
1curl -s -o /dev/null -w "%{http_code}" https://api.example.comThis combination is widely used in health checks:
- -s: silent mode
- -o /dev/null: discard response body
- -w: output only HTTP status code
That’s a good example of flags turning a general-purpose tool into something automation-friendly.
Debugging connectivity with ping
The ping command looks simple, but flags make it usable in scripts.
1ping -c 4 google.com- -c 4: send exactly 4 packets (instead of infinite)
Without this flag, your script might hang indefinitely.
Another useful one:
1ping -i 0.5 -c 10 google.com- -i 0.5: interval between packets
This is helpful when testing latency patterns or intermittent issues.
Inspecting connections: netstat and ss
When debugging services, flags determine whether you see useful data or noise.
1netstat -tuln- -t: TCP connections
- -u: UDP connections
- -l: listening ports
- -n: numeric output (no DNS lookup)
That -n flag is critical. Without it, DNS resolution can slow things down or even mislead debugging.
Modern systems prefer ss:
1ss -tulnp- -p: show process using the socket
This is often the fastest way to answer: “What’s using port 8080?”
Kubernetes networking flags
In DevOps, networking rarely stops at the OS level. Kubernetes introduces another layer.
Example:
1kubectl get pods -o wide- -o wide: shows node IPs and pod IPs
For debugging networking:
$ kubectl exec -it pod-name -- curl -v http://service-nameFlags stack across tools here:
-itfor interactive shell-vinside curl for verbose networking output
A common mistake developers make is debugging from outside the cluster when the issue only exists inside it. Flags help you shift context correctly.
DNS troubleshooting with flags
DNS issues are notoriously subtle. Flags can expose what’s really happening.
1dig example.com +short- +short: clean output for scripting
Or more detailed:
1dig example.com +trace- +trace: shows full resolution path
This is invaluable when diagnosing propagation or resolver issues.
Flags that change behavior (not just output)
Some flags don’t just display more data — they fundamentally change how networking works.
Example with curl:
$ curl --connect-timeout 2 https://example.com- Limits connection wait time
Or:
$ curl --resolve example.com:443:1.2.3.4 https://example.comThis overrides DNS resolution entirely.
That’s not just debugging — that’s simulating production scenarios locally.
Combining flags for real workflows
Individually, flags are small. Combined, they become workflows.
Example: quick service health check in a CI pipeline
1curl -s -o /dev/null -w "%{http_code}" --max-time 5 https://service.localOr checking open ports and filtering:
1ss -tuln | grep 443Flags are often paired with pipes and scripts — that’s where their real power shows up.
Things that trip people up
- Order sensitivity: Some tools require flags before arguments
- Silent failures: Flags like
-scan hide useful errors - Platform differences: Linux vs macOS flags can vary
- Overusing verbosity: Too much output can obscure the signal
A simple mental model
When working with networking flags, think in three categories:
- Visibility: What do I want to see? (e.g.,
-v,+trace) - Control: How should the request behave? (timeouts, retries)
- Scope: Where is this executed? (local vs container vs cluster)
This helps you choose flags intentionally instead of memorizing them.
Final thought
Flags are easy to ignore because they’re small. But in networking and DevOps, they’re often the difference between guessing and knowing.
The next time a request fails or a service behaves oddly, don’t reach for a new tool first. Try flipping the right flags — you might already have everything you need.