Insight: Exploring Network Connections with the Linux ss Command


Insight: Exploring Network Connections with the Linux ss Command







Let's continue our exploration into the world of Linux networking. Today we'll talk about a handy little tool you'll find yourself using quite a bit on your Ubuntu system: the ss command. Think of it as a more modern and often faster replacement for the older netstat command. Don't worry if that sounds like jargon – we'll break it down step by step.


What Exactly Does ss Do?

At its core, the ss command is used to display socket statistics. In simpler terms, it shows you information about the network connections your Ubuntu system is making and listening for. This includes TCP connections (the backbone of the internet), UDP connections (often used for things like streaming), and even local UNIX domain sockets (used for communication within your system).


Why Should You Care?

As you become more comfortable with Ubuntu, you might find yourself needing to:
  • Check if a specific service is listening on the correct port. For example, if you're running a web server, you'll want to make sure it's listening on port 80 or 443.
  • See all the active internet connections your machine has. This can be useful for troubleshooting network issues or just understanding what your computer is communicating with.
  • Identify processes associated with network connections. Sometimes, you might need to know which program is using a particular network port.

Basic Usage: Getting Started

Open up your terminal (usually by pressing Ctrl+Alt+T).  This is your command-line interface in Ubuntu – and let's try some basic ss commands.


Show all TCP connections:



Bash
ss -t  


You'll see a list of established TCP connections, along with information about the local and remote addresses and ports.


Show all UDP connections:


Bash
ss -u  


Similar to the TCP command, this will display all active UDP connections.


Show all listening sockets (both TCP and UDP):


Bash
ss -l


This is super useful for seeing which services are waiting for incoming connections.


Show all sockets (TCP, UDP, and others):


Bash
ss -a


This gives you the full picture of all socket activity on your system.


Filtering Like a Pro

The real power of ss comes from its ability to filter the output. Let's look at some common filtering options:


1.  Filtering by port: Let's say you want to see if anything is listening on port 80 (the standard HTTP port).



Bash
ss -lt sport = :80   


The -p option can also show you the process using the socket:


Bash
ss -ltp sport = :80   


Similarly, you can filter by destination port:


Bash
ss -t dport = :443   


This would show you all established TCP connections with a destination port of 443 (HTTPS).


2. Filtering by address: You can also filter connections based on IP addresses. For example, to see connections to a specific IP address:


Bash
ss -t dst 192.168.1.100s   


Or from a specific local address:


Bash
ss -t src 192.168.1.5   


3. Filtering by state: TCP connections go through various states (like ESTABLISHED, LISTEN, CLOSE-WAIT). You can filter by these states:


Bash
ss -t state established   


This will show you only currently active TCP connections.


Putting It All Together

You can even combine these options to get very specific information. For example, to see which process is listening on TCP port 22 (SSH):


Bash
ss -ltp sport = :22   


A Few Handy Options

Here are a couple more useful options to keep in your toolkit:
  • -n: This option prevents ss from trying to resolve hostnames and port names, which can sometimes speed up the output.
  • -h: Displays the help information, reminding you of all the available options.

Wrapping Up

The ss command is a versatile and essential tool for anyone working with networking on Ubuntu. It's also readily available, as it comes pre-installed on the vast majority of modern Linux distributions, including Ubuntu, Fedora, Debian, and CentOS. This means you can generally expect the ss command to be available in your terminal without needing to install anything extra. 

While it might seem a bit daunting at first, with a little practice, you'll find it invaluable for understanding and troubleshooting your system's network activity. So go ahead, open your terminal, and start exploring! You might be surprised at what you discover. Happy networking!


Need Ubuntu Expertise?

We'd love to help you with your Ubuntu projects.  Feel free to reach out to us at info@pacificw.com.


Written by Aaron Rose, software engineer and technology writer at Tech-Reader.blog.

Comments

Popular posts from this blog

The New ChatGPT Reason Feature: What It Is and Why You Should Use It

Raspberry Pi Connect vs. RealVNC: A Comprehensive Comparison

The Reasoning Chain in DeepSeek R1: A Glimpse into AI’s Thought Process