Networking Basics: What is IPv4 Subnetting?
Quick Definition: Subnetting is the process of taking a network and splitting it into smaller networks, known as subnets. It's used to free up more public IPv4 addresses and segment networks for security and easier management.
Subnetting is a fundamental aspect of IP network design and administration. This practice offers numerous benefits, including the more efficient use of IP addresses, reduced network traffic, improved security, and scalability.
To understand subnetting, you first need to understand the decimal and binary structure of an IP address.
A Quick Rundown of IP Addresses and Binary
To understand subnetting, you should first understand an IP address's decimal and binary structure.
Let's start with the basics. Here's what an IP address looks like: 192.168.1.20
An IPv4 address is a 32-bit number. To simplify addresses, they are divided into four 8-bit numbers — or octets — separated by a decimal point. These octets range in number from zero to 255.
Why do octets only go up to 255? Because they're binary.
The biggest IP address possible is 255.255.255.255
In binary, this IP address looks like this: 11111111.11111111.11111111.11111111
Note that there are eight numbers between the decimal points. Each number represents a bit. Hence, the term octet or the 8-bit number grouping.
Binary corresponds to this table:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|
Let's use this binary number, for example: 10000001
Every 1 in a binary number "turns on" the number in its position. So, 1 in the first and last positions "turn on" 128 and 1.
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Add up all the positions to get the decimal number: 128 + 1 = 129
When all the positions are "turned on," they add up to 255.
You can see how it works here. These are the most common octets you'll encounter in subnetting:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
How to Define the Network Portion of a Subnet IP Address
During the early stages of the internet, organizations assigned IP addresses like crazy until we nearly ran out. Luckily, the designers of IP addressing came up with a way to end this wasteful practice: Dividing networks using subnetting.
The process of taking an extensive network and splitting it into smaller networks is known as subnetting — and it's freeing up more public IPv4 addresses.
There are two parts to an IP address: The network portion and the host portion.
It's like the address for a house. The network portion is like the city, state, and zip code. The host portion is like the house and street number.
A subnet defines the number of bits, out of 32, used for the "network portion" of the address. Subnet masks can also be defined in a more common 'slash' representation called CIDR notation.
In the following table, the red digits represent the bits used for the network. The black digits will be used for device IP addresses. Note that the 255.0.0.0 mask can also be represented as a '/8' because it reserves 8 bits of the overall 32 bits used to describe an IPv4 address as the network portion.
Bits used for mask | Default netmask | Subnet binary |
---|---|---|
/8 | 255.0.0.0 | 11111111.00000000.00000000.00000000 |
/16 | 255.255.0.0 | 11111111.11111111.00000000.00000000 |
/24 | 255.255.255.0 | 11111111.11111111.11111111.00000000 |
For example, you might have a network with devices (known as hosts) with the following IP addresses:
Network: 172.16.56.0
Computer 1: 172.16.56.40
Computer 2: 172.16.56.55
Printer 1: 172.16.56.100
In this case, the network uses 24 bits (or three octets). Notice that every host device in the network has the same first three octets. That's the network portion of the IP address with a /24 mask.
IP address: 172.16.56.40
Mask: 255.255.255.0
Binary mask: 11111111.11111111.11111111.00000000
The last octet is the host portion of the IP address. That's where you'd assign your devices. In this case, you could assign up to 254 hosts. (More on that later.)
IP address: 172.16.56.40
Mask: 255.255.255.0
Binary mask: 11111111.11111111.11111111.00000000
Let's look at the table again. If it were /16, the first two octets would be the network portion, and the host portion would occupy the last two octets.
Bits used for mask | Default netmask | Subnet binary |
---|---|---|
/16 | 255.255.0.0 | 11111111.11111111.00000000.00000000 |
If it were an /8 network, then only the first octet would be the network portion.
Bits used for mask | Default netmask | Subnet binary |
---|---|---|
/8 | 255.0.0.0 | 11111111.00000000.00000000.00000000 |
These are the most common masks because they're the simplest, but you have to subnet when you need more than one network. Subnetting lets you choose the number of bits for the Network portion. You can even steal bits from the host portion of the network.
Here's what the full subnet mask table looks like. In this table, 1s represent the network portion, and 0s represent the host portion.
Slash | Netmask | 1st Octet | 2nd Octet | 3rd Octet | 4th Octet |
---|---|---|---|---|---|
/30 | 255.255.255.252 | 11111111 | 11111111 | 11111111 | 11111100 |
/29 | 255.255.255.248 | 11111111 | 11111111 | 11111111 | 11111000 |
/28 | 255.255.255.240 | 11111111 | 11111111 | 11111111 | 11110000 |
/27 | 255.255.255.224 | 11111111 | 11111111 | 11111111 | 11100000 |
/26 | 255.255.255.192 | 11111111 | 11111111 | 11111111 | 11000000 |
/25 | 255.255.255.128 | 11111111 | 11111111 | 11111111 | 10000000 |
/24 | 255.255.255.0 | 11111111 | 11111111 | 11111111 | 00000000 |
/23 | 255.255.254.0 | 11111111 | 11111111 | 11111110 | 00000000 |
/22 | 255.255.252.0 | 11111111 | 11111111 | 11111100 | 00000000 |
/21 | 255.255.248.0 | 11111111 | 11111111 | 11111000 | 00000000 |
/20 | 255.255.240.0 | 11111111 | 11111111 | 11110000 | 00000000 |
/19 | 255.255.224.0 | 11111111 | 11111111 | 11100000 | 00000000 |
/18 | 255.255.192.0 | 11111111 | 11111111 | 11000000 | 00000000 |
/17 | 255.255.128.0 | 11111111 | 11111111 | 10000000 | 00000000 |
/16 | 255.255.0.0 | 11111111 | 11111111 | 00000000 | 00000000 |
/15 | 255.254.0.0 | 11111111 | 11111110 | 00000000 | 00000000 |
/14 | 255.252.0.0 | 11111111 | 11111100 | 00000000 | 00000000 |
/13 | 255.248.0.0 | 11111111 | 11111000 | 00000000 | 00000000 |
/12 | 255.240.0.0 | 11111111 | 11110000 | 00000000 | 00000000 |
/11 | 255.224.0.0 | 11111111 | 11100000 | 00000000 | 00000000 |
/10 | 255.192.0.0 | 11111111 | 11000000 | 00000000 | 00000000 |
/9 | 255.128.0.0 | 11111111 | 10000000 | 00000000 | 00000000 |
/8 | 255.0.0.0 | 11111111 | 00000000 | 00000000 | 00000000 |
/7 | 254.0.0.0 | 11111110 | 00000000 | 00000000 | 00000000 |
/6 | 252.0.0.0 | 11111100 | 00000000 | 00000000 | 00000000 |
/5 | 248.0.0.0 | 11111000 | 00000000 | 00000000 | 00000000 |
/4 | 240.0.0.0 | 11110000 | 00000000 | 00000000 | 00000000 |
/3 | 224.0.0.0 | 11100000 | 00000000 | 00000000 | 00000000 |
/2 | 192.0.0.0 | 11000000 | 00000000 | 00000000 | 00000000 |
/1 | 128.0.0.0 | 10000000 | 00000000 | 00000000 | 00000000 |
What are IP Address Classes?
To complicate things further, IP addresses have five classes, but only three are applicable to subnetting — A, B, C.
Here are the IP address ranges by class:
Class A = 1.0.0.0 to 127.0.0.0
Class B = 128.0.0.0 to 191.255.0.0
Class C = 192.0.0.0 to 223.255.255.0
Remember, these IP addresses are represented in binary.
Here are the largest subnet IP addresses in these ranges:
Class | Netmask | 1st Octet | 2nd Octet | 3rd Octet | 4th Octet |
---|---|---|---|---|---|
Class A | 127.0.0.0 | 01111110 | 00000000 | 00000000 | 00000000 |
Class B | 191.255.0.0 | 10111111 | 11111111 | 00000000 | 00000000 |
Class C | 223.255.255.0 | 11011111 | 11111111 | 11111111 | 00000000 |
This is important because it affects the number of hosts and subnets available in a network.
Notice that Class A addresses provide the most room for host addresses (the black digits). That's because the network portion only occupies the first octet. Most large enterprises use Class A IP addresses for this reason. You can connect more devices to a Class A network than a Class C.
Class | Netmask | 1st Octet | 2nd Octet | 3rd Octet | 4th Octet |
---|---|---|---|---|---|
Class A | 127.0.0.0 | 01111111 | 00000000 | 00000000 | 00000000 |
In every class, you can steal bits from the hosts to create more subnets but also reduce the number of hosts. Notice how stealing just one bit for the network significantly drops the number of hosts.
Class A Subnet Netmasks and Hosts
Network Bits | Subnet Mask | Number of Subnets | Number of Hosts |
---|---|---|---|
/8 | 255.0.0.0 | 0 | 16,777,214 |
/9 | 255.128.0.0 | 0 | 8,388,606 |
/10 | 255.192.0.0 | 2 | 4,194,302 |
/11 | 255.224.0.0 | 6 | 2,097,150 |
/12 | 255.240.0.0 | 14 | 1,048,574 |
/13 | 255.248.0.0 | 30 | 524,286 |
/14 | 255.252.0.0 | 62 | 262,142 |
/15 | 255.254.0.0 | 126 | 131,070 |
/16 | 255.255.0.0 | 254 | 65,534 |
/17 | 255.255.128.0 | 510 | 32,766 |
/18 | 255.255.192.0 | 1,022 | 16,382 |
/19 | 255.255.224.0 | 2,046 | 8,190 |
/20 | 255.255.240.0 | 4,094 | 4,094 |
/21 | 255.255.248.0 | 8,190 | 2,046 |
/22 | 255.255.252.0 | 16,382 | 1,022 |
/23 | 255.255.254.0 | 32,766 | 510 |
/24 | 255.255.255.0 | 65,534 | 254 |
/25 | 255.255.255.128 | 131,070 | 126 |
/26 | 255.255.255.192 | 262,142 | 62 |
/27 | 255.255.255.224 | 524,286 | 30 |
/28 | 255.255.255.240 | 1,048,574 | 14 |
/29 | 255.255.255.248 | 2,097,150 | 6 |
/30 | 255.255.255.252 | 4,194,302 | 2 |
Class B IP addresses offer fewer hosts than Class A because its network portion occupies the first two octets.
Class | Netmask | 1st Octet | 2nd Octet | 3rd Octet | 4th Octet |
---|---|---|---|---|---|
Class B | 191.255.0.0 | 10111111 | 11111111 | 00000000 | 00000000 |
Class B Subnet Netmasks and Hosts
Network Bits | Subnet Mask | Number of Subnets | Number of Hosts |
---|---|---|---|
/16 | 255.255.0.0 | 0 | 65,534 |
/17 | 255.255.128.0 | 0 | 32,766 |
/18 | 255.255.192.0 | 2 | 16,382 |
/19 | 255.255.224.0 | 6 | 8,190 |
/20 | 255.255.240.0 | 14 | 4,094 |
/21 | 255.255.248.0 | 30 | 2,046 |
/22 | 255.255.252.0 | 62 | 1,022 |
/23 | 255.255.254.0 | 126 | 510 |
/24 | 255.255.255.0 | 254 | 254 |
/25 | 255.255.255.128 | 510 | 126 |
/26 | 255.255.255.192 | 1,022 | 62 |
/27 | 255.255.255.224 | 2,046 | 30 |
/28 | 255.255.255.240 | 4,094 | 14 |
/29 | 255.255.255.248 | 8,190 | 6 |
/30 | 255.255.255.252 | 16,382 | 2 |
Class C IP addresses offer the fewest hosts because the network portion occupies three octets.
Class | Netmask | 1st Octet | 2nd Octet | 3rd Octet | 4th Octet |
---|---|---|---|---|---|
Class C | 223.255.255.0 | 11011111 | 11111111 | 11111111 | 00000000 |
You might notice that your home router's default IP address falls into the Class C category. This special subnet is reserved for private IP addresses; you can read why in the Network Address Translation article.
Class C Subnet Netmasks and Hosts
Network Bits | Subnet Mask | Number of Subnets | Number of Hosts |
---|---|---|---|
/24 | 255.255.255.0 | 0 | 254 |
/25 | 255.255.255.128 | 0 | 126 |
/26 | 255.255.255.192 | 2 | 62 |
/27 | 255.255.255.224 | 6 | 30 |
/28 | 255.255.255.240 | 14 | 14 |
/29 | 255.255.255.248 | 30 | 6 |
/30 | 255.255.255.252 | 62 | 2 |
These standards make subnetting a little easier. For example, if you choose a Class 'C' address, you know it uses at least 24 bits (/24) of the 32 available bits for the network portion of the address.
How to Subnet in IPv4
Now that we know about classes, binary, and subnets. Let's dive into a subnet.
Here's the IP address we'll use: 43.17.255.71/27
Here's what it looks like in binary:
00101011.000100011.111111.01000111
From the IP address, we already know two things:
It's a Class A IP Address
It must have at least eight network bits, but we're giving it 27 bits
In that case, we know the network portion of the subnet will occupy these bits:
Network Bits | Subnet Mask | 1st Octet | 2nd Octet | 3rd Octet | 4th Octet |
---|---|---|---|---|---|
/27 | 255.255.255.224 | 11111111 | 11111111 | 11111111 | 11100000 |
Let's reverse engineer this last octet to determine the network portion of the address or what the subnet is for this address.
Here's what we want to do:
Determine the number of allowed subnets using the /27 network mask
Determine what subnet the address lies in
Here's an example:
1. Determine number of allowed subnets using /27 network mask.
Here's the binary representation of the possibilities for the last octet with a /27 mask:
000|0 0000 | 001|0 0000 | 010|0 0000 | 011|0 0000 | 100|0 0000 | 101|0 0000 | 110|0 0000 | 111|0 0000 |
---|---|---|---|---|---|---|---|
0 | 32 | 64 | 96 | 128 | 160 | 192 | 224 |
This gives us eight possible subnets with the /27 mask.
2. How to determine what subnet your IP address lives
Now, let's find the subnet address where this IP address resides.
Remember that the IP address is 43.17.255.71
We are only looking at the last octet because the first three octets are the network portion.
43.17.255.71
We just have to take a look at our table again. 71 falls above the 43.17.255.64 subnet and below the 43.17.255.96 subnet. So it belongs in the 43.17.255.64 subnet.
Subnet | Last Octet | Block size | IP Address | |
---|---|---|---|---|
1 | 0 | + | 32 | 43.17.255.0 |
2 | 32 | + | 32 | 43.17.255.32 |
3 | 64 | + | 32 | 43.17.255.64 |
4 | 96 | + | 32 | 43.17.255.96 |
5 | 128 | + | 32 | 43.17.255.128 |
6 | 160 | + | 32 | 43.17.255.160 |
7 | 192 | + | 32 | 43.17.255.192 |
8 | 224 | + | 32 | 43.17.255.224 |
We now have the subnet for 43.17.255.71: 43.17.255.64.
That seemed like a lot of work, right? If you are logged in to a Cisco router that's connected to the subnet, there's a more efficient and easier way to get the subnet. Using the command "show ip route" in the Cisco router command line, the output includes the subnet for the IP address.
Of course, you won't always have the command line at your fingertips. That's why it's important to understand how IPv4 addressing works and be able to calculate subnets. Using a chart like the one above and the method we covered makes that process easier. You can identify addresses from subnets in minutes, even seconds. Who knows, you'll want to tackle IPv6 subnetting at that point.
For now, Keith Barker explains how to reverse engineer an IPv4 address.
delivered to your inbox.
By submitting this form you agree to receive marketing emails from CBT Nuggets and that you have read, understood and are able to consent to our privacy policy.