DEV Community

Cover image for Learning DevOps from First Principles: MAC Addresses vs IP Addresses — The Difference Finally Clicked
Micheal Angelo
Micheal Angelo

Posted on

Learning DevOps from First Principles: MAC Addresses vs IP Addresses — The Difference Finally Clicked

One of the first networking concepts that confused me was this:

Why does a computer need both a MAC address and an IP address?

At first glance, they seem to solve the same problem.

Both appear to identify a device.

Both show up in networking tools.

Both appear in packet captures.

So why do we need two different addresses?

While exploring Linux networking tools and Wireshark, the distinction finally started making sense.

This article summarizes the mental model that helped me understand the difference.


Looking Inside the Machine

Before discussing addresses, it helps to understand where they come from.

If you open a typical laptop, you will usually find components such as:

  • Battery
  • RAM
  • Storage
  • Processor
  • Cooling system
  • Network interfaces

One of those network interfaces is typically:

  • A Wi-Fi card
  • An Ethernet controller

These components are responsible for network communication.

They are the parts of the machine that actually send and receive data across a network.


Every Network Interface Has an Identity

A network interface needs a way to identify itself.

This is where the MAC address comes in.

A MAC address is associated with a network interface card (NIC).

Example:

```text id="q3d9nm"
2C:9C:58:8B:2D:7B




Think of it as the identity of the network interface itself.

Not the operating system.

Not the browser.

Not the application.

The network hardware.

---

## What Is a MAC Address?

MAC stands for:

**Media Access Control**

A MAC address operates at the **Data Link Layer** of the OSI model.

Its primary purpose is to help devices communicate within a local network.

Examples include:

* Laptop to router
* Router to switch
* Switch to printer

In other words:

> MAC addresses help devices find each other on the same local network.

---

## What Is an IP Address?

An IP address serves a different purpose.

Example:



```text id="g8x4tc"
192.168.1.20
Enter fullscreen mode Exit fullscreen mode

or

```text id="v6u7mz"
2405:201:8000::1




IP addresses operate at the **Network Layer**.

Their job is to identify where a device exists within a larger network.

This allows communication beyond a single local network.

For example:

* Home network → Internet
* Office network → Cloud server
* Laptop → GitHub

---

## The Question That Helped Me

The mental model that helped me most was:

**MAC Address answers:**

> Which physical device on this local network should receive this data?

**IP Address answers:**

> Which device anywhere in the world should receive this data?

They solve related but different problems.

---

## Hardware Identity vs Logical Identity

This is where things finally clicked for me.

A MAC address is tied to a network interface.

An IP address is assigned by the network.

Think of it this way:

### MAC Address



```text id="w2l7fa"
Identity of the network hardware
Enter fullscreen mode Exit fullscreen mode

IP Address

```text id="h5r3ek"
Identity assigned within a network




One identifies the hardware.

The other identifies the location.

---

## Why Not Use Only MAC Addresses?

Initially, I wondered:

> Why not simply use MAC addresses everywhere?

The problem is scale.

Imagine trying to communicate with a server on another continent.

Routers across the internet cannot practically route traffic based on MAC addresses alone.

Instead:

* IP addresses handle routing across networks.
* MAC addresses handle delivery within local networks.

This division of responsibility makes networking scalable.

---

## Seeing It in Linux

One of the easiest ways to observe this is:



```bash id="j8r4np"
ip addr show
Enter fullscreen mode Exit fullscreen mode

Typical output includes interfaces such as:

```text id="f2q7xs"
lo
eth0
wlp2s0




You may also see:

### MAC Address



```text id="c9m5vn"
link/ether 2c:9c:58:8b:2d:7b
Enter fullscreen mode Exit fullscreen mode

IPv4 Address

```text id="u4x6la"
inet 192.168.1.20




### IPv6 Address



```text id="b7p8dw"
inet6 2405:201:8000::1
Enter fullscreen mode Exit fullscreen mode

Seeing both together helped reinforce that they serve different purposes.


Where Wireshark Made It Click

While experimenting with Wireshark, I noticed that packets often contained both:

  • Source MAC Address
  • Destination MAC Address

and

  • Source IP Address
  • Destination IP Address

At first this felt redundant.

But it eventually became clear:

The packet needs:

  • IP information to determine where it should go globally.
  • MAC information to determine which device should receive it locally.

Both are necessary.


A Simple Analogy

Imagine sending a letter.

The city and street address represent the IP address.

They help the postal system route the letter across large distances.

The person's name on the mailbox resembles the MAC address.

Once the letter arrives at the correct location, it still needs to reach the correct recipient.

The analogy is not perfect, but it helped me visualize the distinction.


A Useful Mental Model

The way I currently think about it is:

```text id="n8y3vk"
IP Address

Find the correct network

MAC Address

Find the correct device




Together they allow communication to scale from local networks to the global internet.

---

## Why This Matters for DevOps

At first glance, MAC addresses and IP addresses seem like purely networking topics.

But they appear everywhere:

* Cloud servers
* Containers
* Virtual machines
* Kubernetes networking
* Load balancers
* VPNs

Understanding the distinction makes many higher-level networking concepts easier to grasp.

---

## Final Thoughts

For a long time, MAC addresses and IP addresses felt like two different labels describing the same thing.

They are not.

A MAC address identifies a network interface on a local network.

An IP address identifies a device's location within a larger network.

One focuses on hardware-level delivery.

The other focuses on network-level routing.

And once that distinction clicked, many networking concepts suddenly became much easier to understand.
Enter fullscreen mode Exit fullscreen mode

Top comments (0)