DEV Community

Cover image for Stop Guessing Your Network: Using PowerShell and TCP Commands to Understand What’s Happening Behind the Scenes
Ikegbo Ogochukwu
Ikegbo Ogochukwu

Posted on

Stop Guessing Your Network: Using PowerShell and TCP Commands to Understand What’s Happening Behind the Scenes

Most developers and IT beginners only touch networking when something breaks.

The internet is “working,” the API is responding, Docker containers are starting, and life moves on.

Until one day:

  • Your app cannot connect to a database
  • Docker says the daemon is unreachable
  • A server responds slowly for no obvious reason
  • A device disappears from the network
  • SSH refuses connections
  • Your Raspberry Pi suddenly becomes invisible

That is usually when people realize they do not actually understand their network.

One of the best ways to fix that is by learning how to inspect and troubleshoot networks directly from the terminal using PowerShell and TCP-based tools.

This post is inspired by a networking article from Paessler Blog and expands it into a more developer-focused practical guide. (blog.paessler.com)


Why PowerShell Matters for Networking

For years, networking on Windows relied heavily on old tools like:

  • ping
  • ipconfig
  • netstat
  • tracert
  • netsh

These still work.

But modern Windows networking is increasingly PowerShell-driven. Microsoft has gradually shifted many administration and diagnostic workflows toward PowerShell because it is:

  • scriptable
  • automatable
  • object-oriented
  • easier to integrate into larger workflows

Instead of parsing messy text output, PowerShell returns structured objects you can filter, sort, and automate. (blog.paessler.com)


Understanding TCP Before Troubleshooting

Most developer tools rely on TCP underneath:

  • Docker
  • APIs
  • databases
  • SSH
  • web servers
  • cloud platforms

TCP (Transmission Control Protocol) is responsible for:

  • reliable communication
  • packet ordering
  • retransmission
  • connection establishment

When applications fail to communicate, the problem is often not the application itself — it is the TCP/network layer.

Understanding a few networking commands can save hours of frustration.


1. Check Your Network Configuration

The first thing to inspect is your machine’s network configuration.

Get-NetIPAddress
Enter fullscreen mode Exit fullscreen mode

This gives you:

  • IP address
  • subnet
  • interface
  • IPv4/IPv6 details

You can also use:

ipconfig
Enter fullscreen mode Exit fullscreen mode

But PowerShell gives more structured information.


2. Test Connectivity Properly

Most people know ping.

PowerShell modernizes it with:

Test-Connection google.com
Enter fullscreen mode Exit fullscreen mode

You can test multiple systems:

Test-Connection google.com, github.com
Enter fullscreen mode Exit fullscreen mode

Or continuously monitor latency:

Test-Connection 192.168.1.1 -Count 10
Enter fullscreen mode Exit fullscreen mode

This helps detect:

  • unstable Wi-Fi
  • packet loss
  • intermittent routing issues

Microsoft’s networking documentation also recommends PowerShell-based connectivity testing for modern administration workflows. (Microsoft Learn)


3. Discover Devices on Your Network

One of the most useful troubleshooting techniques is identifying what devices are actually online.

You can inspect your ARP table:

arp -a
Enter fullscreen mode Exit fullscreen mode

This maps:

  • IP addresses
  • MAC addresses

to devices your machine has communicated with recently.

Modern network discovery guides still rely heavily on ARP-based discovery for local troubleshooting. (blog.paessler.com)


4. Scan an Entire Subnet

Suppose your Raspberry Pi disappeared from the network.

You can sweep your subnet:

1..254 | ForEach-Object {
    Test-Connection "192.168.1.$_" -Count 1 -Quiet
}
Enter fullscreen mode Exit fullscreen mode

This checks which devices respond.

Microsoft demonstrates similar subnet enumeration approaches in PowerShell networking examples. (Microsoft Learn)


5. Find Open TCP Ports

Sometimes the device is online, but the service is not.

For example:

  • SSH may not be running
  • Docker daemon may be down
  • database service may have crashed

You can test ports directly:

Test-NetConnection 192.168.1.10 -Port 22
Enter fullscreen mode Exit fullscreen mode

Example ports:

Service Port
SSH 22
HTTP 80
HTTPS 443
MySQL 3306
PostgreSQL 5432
Docker API 2375/2376

This immediately tells you whether the issue is:

  • routing
  • firewall
  • service availability
  • TCP-level rejection

6. Monitor Active TCP Connections

To inspect live connections:

Get-NetTCPConnection
Enter fullscreen mode Exit fullscreen mode

You can filter by state:

Get-NetTCPConnection | Where-Object {$_.State -eq "Established"}
Enter fullscreen mode Exit fullscreen mode

Or inspect a specific port:

Get-NetTCPConnection -LocalPort 80
Enter fullscreen mode Exit fullscreen mode

This is extremely useful when debugging:

  • APIs
  • containers
  • backend services
  • reverse proxies

7. Troubleshoot Docker Connectivity

If Docker suddenly breaks on Windows, PowerShell networking commands become incredibly useful.

For example, errors like:

failed to connect to the docker API
Enter fullscreen mode Exit fullscreen mode

often indicate:

  • Docker daemon stopped
  • named pipe failure
  • TCP bridge issue
  • virtualization problem

Useful checks:

Get-Service *docker*
Enter fullscreen mode Exit fullscreen mode
Test-NetConnection localhost -Port 2375
Enter fullscreen mode Exit fullscreen mode
docker context ls
Enter fullscreen mode Exit fullscreen mode

Understanding networking basics makes Docker troubleshooting much easier because Docker heavily relies on virtual networking and TCP communication internally.


8. Automate Network Diagnostics

This is where PowerShell becomes powerful.

Instead of manually checking systems one by one, you can automate diagnostics.

Example:

$servers = @(
    "192.168.1.10",
    "192.168.1.11",
    "192.168.1.12"
)

foreach ($server in $servers) {
    Test-NetConnection $server -Port 22
}
Enter fullscreen mode Exit fullscreen mode

Now you can verify SSH availability across multiple systems automatically.

This scales extremely well for:

  • labs
  • classrooms
  • hubs
  • server farms
  • IoT deployments

9. Network Monitoring at Scale

At some point, command-line troubleshooting is not enough.

That is where monitoring systems come in.

Platforms like PRTG Network Monitor automate:

  • network discovery
  • latency tracking
  • device monitoring
  • traffic inspection
  • uptime monitoring

Modern network visibility systems combine:

  • ARP discovery
  • TCP monitoring
  • SNMP
  • device inventories
  • automated alerting

to give administrators full infrastructure visibility. (blog.paessler.com)


Real Lesson: Developers Need Networking Skills

One pattern keeps repeating in modern software engineering:

The deeper you go, the more networking matters.

Machine learning engineers, backend developers, DevOps engineers, cybersecurity analysts, embedded engineers, and cloud architects all eventually run into:

  • ports
  • sockets
  • firewalls
  • routing
  • DNS
  • TCP failures

Networking knowledge is no longer optional.


Final Thoughts

Learning PowerShell networking commands is not about becoming a network engineer overnight.

It is about gaining visibility.

Once you can inspect:

  • connections
  • devices
  • ports
  • adapters
  • latency
  • routing

you stop guessing and start diagnosing systems properly.

And honestly, that is one of the biggest transitions from beginner developer to advanced engineer.


Further Reading

(blog.paessler.com)

Top comments (0)