Welcome back to Linux 101! You are now deep into Week 2, “Level Up,” and today is Day 6 of this week (Day 13 overall). You have conquered file permissions, mastered process management, and navigated the filesystem like a pro. Now, it is time to talk to the outside world.
Today, we break down the walls of your local machine. We are going onto the internet.
Networking in the Linux terminal can feel like magic, but it is actually built on robust, legendary tools that have stood the test of time. Whether you are a developer debugging an API, a sysadmin checking server health, or just a user trying to download a file without a browser, these four commands are your holy grail:
ip addr: Who am I?ping: Are you there?curl: Can I see that?wget: Can I keep that?
This guide is extremely detailed. We aren’t just skimming the surface; we are diving into the flags, the history, and the pro-tips that will make you the smartest person in the room (or at least the most efficient).

Who Am I? Understanding ip addr (and ifconfig)
Before you can talk to the world, you need to know who you are. In the physical world, you have a home address. In the digital world, you have an IP address.
For decades, the command ifconfig (Interface Configuration) was the standard. You will still see it in old tutorials and on older servers. However, it has been deprecated in favor of the more powerful ip command from the iproute2 suite. We will focus on ip, but we will tip our hat to ifconfig.
The Command: ip addr
Type this into your terminal:
ip addr
(Or the shorthand: ip a)
Decoding the Output
The output might look intimidating, a wall of text and numbers. Let’s decode it line by line.

You will typically see numbered blocks. These are your Network Interfaces.
1. The Loopback Interface (lo)
Usually the first entry (1: lo:). This is a virtual interface used by the computer to talk to itself.
- IP Address: Almost always
127.0.0.1. - Why it matters: If you can’t ping
127.0.0.1, your network hardware or software stack is fundamentally broken. It’s the “mirror” of networking.
2. The Physical/Wireless Interface (eth0, enp3s0, wlan0)
This is where the magic happens. The naming convention depends on your distro (e.g., eth0 for Ethernet, wlan0 for Wi-Fi).
link/ether: This is your MAC Address (Media Access Control). It’s the hardware serial number of your network card (e.g.,00:1a:2b:3c:4d:5e). It’s permanent (mostly).inet: This is your IPv4 Address. It usually looks like192.168.1.xor10.0.0.xon a home network.brd: Broadcast address. Signals sent here go to everyone on the subnet.inet6: Your IPv6 address. Longer, hex-based, and the future of the internet.
Legacy Corner: ifconfig
If ip addr returns “command not found,” you might be on a very old system or a minimal container. Try:
ifconfig
It shows similar info but formatted differently. Pro Tip: If you need ifconfig on a modern Debian/Ubuntu system, it’s part of the net-tools package (sudo apt install net-tools), but you should really just learn ip addr.
Are You There? The ping Command
Now that you know your address, let’s see if your neighbor is home. ping is the sonar of the internet. It sends a tiny packet of data to a destination and waits for an echo.
How it Works (ICMP)
Ping uses the ICMP (Internet Control Message Protocol). It sends an “Echo Request” and waits for an “Echo Reply.” It’s the simplest way to verify two computers can talk.
Basic Syntax
ping google.com
Note for Linux Users: Unlike Windows, where ping stops after 4 tries, Linux ping goes forever until you stop it.
- Stop it: Press
Ctrl + C.
Analyzing the Output
64 bytes from 142.250.190.46: icmp_seq=1 ttl=117 time=14.2 ms
64 bytes: The size of the packet sent.icmp_seq=1: The sequence number. If you see 1, 2, 4, 5… you lost packet #3! (Packet Loss).ttl=117: Time To Live. This prevents packets from circling the internet forever. Every router subtracts 1. If it hits 0, the packet dies.time=14.2 ms: Latency. How long the round trip took. Lower is better. Gamers want this under 50ms.
Essential Flags
You don’t always want to ping forever.
-c(Count): Stop after N pings.ping -c 5 google.com # Pings 5 times then quits-i(Interval): Wait N seconds between pings (default is 1s).ping -i 0.2 google.com # Speed ping! (Be careful, don't flood)-4vs-6: Force IPv4 or IPv6.ping -6 google.com

Troubleshooting with Ping
- “Destination Host Unreachable”: You are not connected to the network, or the route is blocked.
- “Request Timeout”: The packet got there but didn’t come back, or the server is ignoring pings (firewall).
- “Unknown Host”: DNS failure. Your computer doesn’t know the IP address for “google.com”.
The Swiss Army Knife: curl
curl stands for Client URL. It is used to transfer data to or from a server. While ping just says “hello,” curl has a full conversation. It supports HTTP, HTTPS, FTP, and dozens of other protocols.
If you are a developer, curl is your best friend.
Basic Usage: Fetching a Page
curl https://www.example.com
This dumps the raw HTML code of the website directly into your terminal. It’s messy, but it proves you can download the content.
Saving the Output
You usually want to save the file, not read HTML matrix-style.
-o(lowercase o): Output to a specific filename.curl -o my_page.html [https://www.example.com](https://www.example.com)-O(uppercase O): Save using the remote filename.curl -O [https://www.example.com/image.png](https://www.example.com/image.png)
The “Is it Down?” Check: -I (Head)
Sometimes you don’t want the whole file; you just want to know if the file exists.
curl -I https://www.google.com
This fetches the HTTP Headers only. You look for HTTP/2 200 (OK) or 404 (Not Found).
Handling Redirects: -L (Location)
The web is full of redirects. If you curl google.com (without www), you might get a “301 Moved Permanently.”
- Use
-Lto tell curl to follow the redirect to the final destination.curl -L google.com
Pro Tip: Testing APIs
If you are learning coding or DevOps, you will use curl to test JSON APIs.
curl -X POST -d "name=LinuxUser" https://api.example.com/users
-X: Specifies the request method (GET, POST, DELETE).-d: Sends data.

The Download Master: wget
wget (World Wide Web Get) is the older, simpler cousin of curl. While curl is a complex tool for data transfer, wget is designed for one thing: downloading files robustly.
If you have a shaky internet connection or need to download a massive file, wget is superior.
Basic Usage
wget https://example.com/big-file.zip
It downloads the file and shows a nice progress bar.
Why wget is amazing for weak connections
- Resuming Downloads (
-c): Imagine downloading a 4GB ISO file. At 99%, your WiFi drops. With a browser, you often have to restart. Withwget:wget -c [https://example.com/big-file.zip](https://example.com/big-file.zip)The-c(continue) flag checks what you already have and finishes the rest. This is a lifesaver.
Background Downloading (-b)
Downloading a huge file but need to close the terminal?
wget -b https://example.com/big-file.zip
It sends the process to the background. You can check the status by reading the wget-log file.
Recursive Downloading (-r)
Want to download an entire website for offline viewing? (Be polite with this!)
wget -r https://www.example.site
This follows every link and downloads the structure.
The Great Debate: Curl vs. Wget
You will often see discussions on which is better. Here is the verdict:
| Feature | curl | wget |
|---|---|---|
| Primary Use | Data transfer, API testing, debugging | Downloading files, mirroring sites |
| Interactive | No (mostly pipe to stdout) | Yes (progress bars, easy handling) |
| Recursive | No (cannot download whole sites) | Yes (King of mirroring) |
| Protocols | Massive support (IMAP, POP3, SMTP…) | Good support (HTTP, HTTPS, FTP) |
| Best For… | Developers & Admins | General Users & Archiving |
The Rule of Thumb:
- If you need to test a connection or debug a server: Use
curl. - If you need to save a file to your disk: Use
wget.
Real-World Workflow: Putting it All Together
Let’s simulate a Day 13 troubleshooting scenario. You are trying to connect to a web server, but it’s not working.
Step 1: Check your own house.
ip addr
Do I have an IP address? Is my interface UP?
Step 2: Check the road.
ping 8.8.8.8
Can I reach Google’s DNS? If yes, the internet is working.
Step 3: Check the destination.
ping myserver.com
Is the server online? If it says “Unknown Host,” my DNS is broken. If “Request Timeout,” the server is down or blocking ping.
Step 4: Check the application.
curl -I myserver.com
The server responds to ping, but is the website actually running? If I get a 500 Error, the server is broken internally. If I get a 200 OK, we are good.
Summary of Day 13
ip addr: Shows your IP and MAC address. Replacesifconfig.ping: Checks connectivity using ICMP. UseCtrl+Cto stop.curl: Transfers data. Great for APIs, headers, and quick checks.wget: Downloads files. Great for large files, resuming, and recursive downloads.
Homework for Day 13:
- Find your computer’s local IP address.
- Ping
google.comand stop it after 3 counts. - Use
wgetto download a random image from the internet. - Use
curlto fetch the headers of your favorite website.
You are now connected to the world. Tomorrow, we wrap up with a massive recap and look at where your Linux journey goes next. Keep exploring!








