Network Diagnostics
When to Use This Skill
| Scenario | Use this skill | Alternative |
|---|---|---|
| Trace the route to a remote host | Yes (trippy) | |
| Diagnose packet loss or high latency on a path | Yes (trippy) | |
| Compare ping latency across multiple endpoints | Yes (gping) | |
| Find what process is listening on a port | Yes (ss) | |
| Count established connections to a service | Yes (ss) | |
| Inspect local socket states (TIME_WAIT, etc.) | Yes (ss) | |
| Scan all open ports on a remote host | network-discovery (RustScan, nmap) | |
| Look up DNS records or check propagation | dns-tools (dog, dig) | |
| Enumerate hosts on the local L2 segment | layer2-discovery (ARP/LLDP) | |
| Inspect or configure the host's own IPs, links, or routes | interface-state (ip) | |
| Benchmark HTTP endpoint throughput | http-load-testing (oha) | |
| See real-time per-process bandwidth consumption | network-monitoring (bandwhich) |
Expert knowledge for network connectivity troubleshooting using modern diagnostic tools that provide richer output than legacy alternatives.
Core Expertise
Tool Selection
| Use Case | Tool | Why |
|---|---|---|
| Path analysis with latency | trippy | Combines traceroute + ping with TUI |
| Multi-host latency comparison | gping | Visual graphs, parallel pings |
| Local socket inspection | ss | Modern netstat replacement |
| Quick single-hop latency | gping | Faster feedback than trippy |
| Network path + ASN info | trippy | Built-in ASN/geo lookups |
Advantages Over Legacy Tools
| Modern | Legacy | Improvements |
|---|---|---|
| trippy | traceroute, mtr | TUI, jitter stats, ASN/geo, world map |
| gping | ping | Visual graphs, multi-host parallel |
| ss | netstat | Faster, more info, better filtering |
Trippy - Modern Traceroute/MTR
Rust-based network path analyzer combining traceroute and ping with a rich TUI.
Essential Commands
# Basic traceroute with TUI
trip example.com
# Specify protocol mode
trip -m icmp example.com # ICMP (default, needs root/caps)
trip -m udp example.com # UDP (no root needed)
trip -m tcp example.com # TCP
# TCP to specific port
trip -m tcp -p 443 example.com
trip -m tcp -p 80 example.com
# Specify source interface
trip -i en0 example.com
trip -i eth0 example.com
# Enable ASN lookups in TUI
trip --tui-as-mode asn example.com
trip --tui-as-mode prefix example.com
# Geo-location in TUI
trip --tui-geoip-mode short example.com
trip --tui-geoip-mode long example.com
Non-Interactive Output
# JSON output for parsing
trip example.com --mode json -c 10
# Dot format (Graphviz)
trip example.com --mode dot -c 10
# CSV format
trip example.com --mode csv -c 10
# Flows (path changes)
trip example.com --mode flows -c 10
# Silent mode (summary only)
trip example.com --mode silent -c 10
# Pretty print (no TUI)
trip example.com --mode pretty -c 10
Advanced Options
# Set packet count
trip example.com -c 100
# Set max TTL (hops)
trip example.com -t 30
# Set packet size
trip example.com -S 64
# First TTL to start from
trip example.com -f 5
# Parallel probes per hop
trip example.com -N 16
# Grace period after target reached
trip example.com -g 100ms
gping - Graphical Ping
Visual latency graphs with multi-host parallel ping support.
Essential Commands
# Basic ping with graph
gping example.com
# Multiple hosts (parallel comparison)
gping google.com cloudflare.com amazon.com
# Force IPv4/IPv6
gping -4 example.com
gping -6 example.com
# Specify interface
gping -i en0 example.com
# Simple graphics (ASCII, for terminals without unicode)
gping -s example.com
# Set buffer size (number of pings to display)
gping -b 100 example.com
Command Execution Mode
# Ping a command's execution time instead of host
gping --cmd "curl -s https://api.example.com/health"
gping --cmd "dig example.com"
gping --cmd "http https://api.example.com/status"
# Compare multiple commands
gping --cmd "curl -s localhost:3000" --cmd "curl -s localhost:8080"
Customization
# Set ping interval (seconds)
gping -n 0.5 example.com
# Watch specific timeout
gping -w 2 example.com
# Clear screen before starting
gping --clear example.com
ss - Socket Statistics
Modern replacement for netstat, faster and more informative.
Essential Commands
# All TCP connections
ss -t
# All UDP sockets
ss -u
# Listening sockets only
ss -l
# Show process info (requires root for other users' processes)
ss -p
# Numeric output (no DNS resolution)
ss -n
# Combined: listening TCP with process info, numeric
ss -tlnp
# Combined: all TCP/UDP listening sockets with processes
ss -tulnp
Filtering
# Filter by state
ss -t state established
ss -t state listening
ss -t state time-wait
ss -t state close-wait
# Filter by port
ss -t sport = :22
ss -t dport = :443
ss -t 'sport = :80 or dport = :80'
# Filter by address
ss -t src 192.168.1.0/24
ss -t dst 10.0.0.1
# Combined filters
ss -t 'sport = :443 and dst 10.0.0.0/8'
Statistics and Summary
# Socket summary statistics
ss -s
# Extended info (memory, congestion)
ss -e
# Timer info (retransmits, keepalives)
ss -o
# Memory usage
ss -m
# Full detail
ss -i
Common Investigations
# Find what's using a port
ss -tlnp | grep :8080
ss -tlnp 'sport = :8080'
# Count connections by state
ss -t state established | wc -l
# Find connections to specific host
ss -tn dst 192.168.1.100
# Monitor established connections to a service
watch -n 1 'ss -tn state established dport = :443 | wc -l'
Common Patterns
Connectivity Troubleshooting Workflow
# Step 1: Check if host responds
gping target.example.com
# Step 2: Analyze network path
trip target.example.com
# Step 3: Check local listening services
ss -tlnp
# Step 4: Verify outbound connectivity
ss -tn state established | grep target.example.com
Latency Comparison
# Compare multiple endpoints
gping primary.example.com secondary.example.com backup.example.com
# Compare DNS providers
gping 8.8.8.8 1.1.1.1 9.9.9.9
# Compare API endpoints
gping --cmd "curl -s api1.example.com" --cmd "curl -s api2.example.com"
Port Availability Check
# What's listening on common ports
ss -tlnp 'sport = :80 or sport = :443 or sport = :8080 or sport = :3000'
# Find all listening ports in a range
ss -tlnp 'sport >= :8000 and sport <= :9000'
Network Path Analysis
# Compare paths to different regions
trip us-east.example.com &
trip eu-west.example.com &
trip ap-southeast.example.com
# Analyze with ASN information
trip --tui-as-mode asn cdn.example.com
Agentic Optimizations
| Context | Command |
|---|---|
| Quick latency check | gping -b 10 HOST 2>&1 | head -20 |
| Path analysis (JSON) | trip HOST --mode json -c 5 |
| Listening ports | ss -tlnp |
| Connection count | ss -tn state established | wc -l |
| Port in use | ss -tlnp 'sport = :PORT' |
| Multi-host compare | gping HOST1 HOST2 HOST3 -b 5 |
| TCP path check | trip -m tcp -p 443 HOST --mode pretty -c 3 |
Quick Reference
Trippy Flags
| Flag | Long | Description |
|---|---|---|
-m | --mode | Protocol: icmp, udp, tcp |
-p | --port | Target port (tcp/udp mode) |
-i | --interface | Source interface |
-c | --count | Number of probes |
-t | --max-ttl | Maximum TTL/hops |
-f | --first-ttl | Starting TTL |
-S | --packet-size | Packet size in bytes |
--tui-as-mode | ASN display: asn, prefix | |
--tui-geoip-mode | Geo display: short, long | |
--mode | Output: tui, json, csv, dot, flows, silent, pretty |
gping Flags
| Flag | Long | Description |
|---|---|---|
-4 | Force IPv4 | |
-6 | Force IPv6 | |
-i | --interface | Source interface |
-s | --simple-graphics | ASCII-only output |
-b | --buffer | Number of pings to display |
-n | --interval | Ping interval (seconds) |
-w | --watch-interval | Watch timeout |
--cmd | Ping command execution time | |
--clear | Clear screen before starting |
ss Flags
| Flag | Description |
|---|---|
-t | TCP sockets |
-u | UDP sockets |
-l | Listening only |
-a | All sockets |
-p | Show process |
-n | Numeric (no DNS) |
-e | Extended info |
-o | Timer info |
-m | Memory usage |
-i | Internal TCP info |
-s | Summary statistics |
ss State Filters
| State | Description |
|---|---|
established | Active connections |
listening | Listening sockets |
time-wait | Waiting for timeout |
close-wait | Waiting for local close |
syn-sent | Connection initiating |
syn-recv | Connection received |
Installation
# macOS
brew install trippy gping
# ss is part of iproute2 on Linux (usually pre-installed)
# On macOS, use netstat instead (ss not available)
# Cargo (cross-platform)
cargo install trippy
cargo install gping
# Verify installations
trip --version
gping --version
ss --version # Linux only
Platform Notes
- trippy: ICMP mode requires root or
CAP_NET_RAWcapability; UDP/TCP modes work without elevation - gping: Works without elevation on all platforms
- ss: Linux only; use
netstat -anon macOS for similar functionality