로만

A Practical Subnetting Guide

1 . Introduction

When I initially began studying for the CCNA 200-301 exam, I was enrolled in an instructor-led program that follows the material of Cisco's NetAcad course. This is an official course provided by Cisco for aspiring networking professionals to learn the material of the CCNA exam. This course is very well-known and widely taught, and it's where many networking professionals begin their studies.

However, a criticism that the NetAcad curriculum often receives is for its emphasis on rote procedures over conceptual understanding. Many topics, including subnetting, are presented in a prescriptive, step-by-step format that prioritizes passing the exam rather than fostering a deeper comprehension of how networks operate in practice.

The traditional subnetting approach in NetAcad relies heavily on binary conversion and bitwise operations. While this is a technically  correct way of understanding subnetting, it doesn't have any practical utility or value for a real network engineer. Most concepts that are taught in NetAcad are things I could find a way to do on the spot, in my head. Subnetting was the first and one of the only challenges that couldn't receive this same treatment.

This is the conventional method that many beginners are taught:

1 — Converting the IPv4 to binary

Given — 192.168.10.77 /27:

192 = 11000000
168 = 10101000
010 = 00001010
077 = 01001101

Combined: 11000000 . 10101000 . 00001010 . 01001101

2 — Apply the same to the subnet mask

255 = 11111111
255 = 11111111
255 = 11111111
224 = 11100000

Combined: 11111111.11111111.11111111.11100000

3 — Perform a bitwise "AND"

IP = 11000000.10101000.00001010.01001101
Mask = 11111111.11111111.11111111.11100000
Network = 11000000.10101000.00001010.01000000 → 192.168.10.64

4 — Determine block size

256 − 224 = 32 ---> block size # Determine broadcast address 192.168.10.64 + 32 − 1 = 192.168.10.95 # Determine usable host range 192.168.10.65 – 192.168.10.94

2 . Why This Method Is Inefficient

While the traditional subnetting process isn’t wrong, it’s just unnecessarily complex for most real-world situations. Here’s why:


3 . My Alternative

The main purpose of this post is to demonstrate how one can both effectively perform subnetting and tackle a wide range of networking questions/scenarios while maximizing the most practical and realistic value. The method I'll be showing leverages a simple, memorized set of block sizes that can be used to quickly identify subnet masks, usable ranges, and broadcast addresses.

I'll start this section by showcasing how you can perform this starting with /25 - /32, and later on, for other ranges going into the third and second octet.

Here's the step by step guide for understanding it:

— Step 1 —

First, we're gonna skip the binary conversion altogether.

There's a very simple formula you can follow for this, however, I recommend you memorize these block sizes so you can always jot it down on the spot.

2^8 = 256 (Total # of possible values in an octet) ------------------------------------------------------------
2^7 = 128
2^6 = 64
2^5 = 32
2^4 = 16
2^3 = 8
2^2 = 4
2 = 2
1

This gives us: 128, 64, 32, 16, 8, 4, 2, 1

These will be the # of addresses in each subnet.

— Step 2 —

Next, we're going to subtract each of these values from the 256 we got earlier:

256 - 128 = 128
256 - 64 = 192
256 - 32 = 224
256 - 16 = 240
256 - 8 = 248
256 - 4 = 252
256 - 2 = 254
- 1 = 255

This gives us: 128, 192, 224, 240, 248, 252, 254

These values will represent the subnet mask for that octet.

— Step 3 —

Lastly, you will want to list the CIDR notation starting from /25, and go up until you hit /32.

This will let us list everything out like this:

CIDR Subnet Mask Block Size
/25 .128 128
/26 .192 64
/27 .224 32
/28 .240 16
/29 .248 8
/30 .252 4
/31 .254 2
/32 .255 1

I highly recommend that you first memorize how to write this down. As you become better at subnetting, the subnet masks with their associated CIDR notation & block size will start to come very natural. You will reach a point where you can solve a majority of these questions without needing to write much down at all.

Lastly, always remember that the total # of addresses is not the total # of usable hosts. You will want to subtract 2 from the block size to get that value. (1 for the Network ID, and 1 for the Broadcast address.)


That's it, this reveals all of the info needed to subnet in the /25 - /32 range. Later on, I'll explain how you can expand this to be used for any range.

For the CCNA Exam in particular, you will not need to know how to subnet in any range beyond this.


4 . How To Solve Any Subnetting Problem

Firstly, when I say any subnetting problem, I truly mean any subnetting problem.

As it pertains to the CCNA, the majority of the questions you will need to answer are related to router next-hop decisions, and identifying the correct subnet mask.

In this section I'll be going over the different types of questions you can expect and covering how you can answer them conveniently using my method.

• 4.1 Identification Questions

This is the simplest type of problem you'll have relating to subnetting. These can be solved by simply using our cheat sheet as a reference without much additional calculation.

These are also the simplest questions you can expect to get on a Cisco exam pertaining to subnetting. A chunk of quiz questions will be simple tests at your knowledge like these ones.

- Question #1

What is the subnet mask for a /25 prefix?

➤   Explanation

Using our cheat sheet, we can see that the /25 is associated with the .128 subnet mask. (256 - 128 = .128)

✓ Answer: 255.255.255.128

- Question #2

What is the subnet mask 255.255.255.192 in CIDR notation?

➤   Explanation

Referencing our cheat sheet, we're able to see that a .192 subnet mask corresponds to the /26 CIDR notation

✓ Answer: /26

- Question #3

How many usable hosts are in a /30?

➤   Explanation

Referencing our cheat sheet, we know that the /30 CIDR notation has a block size of 4 (the total # of addresses).

Since the question is asking for the # of usable hosts, we'll need to subtract 2 from 4 (1 for the Broadcast IP and 1 for the Network ID)

4 - 2 = 2

✓ Answer: there are 2 usable hosts.

- Question #4

A company asks you to assign a subnet mask that supports no more than 30 hosts. What subnet mask is needed for this?

➤   Explanation

Referencing our cheat sheet block sizes, /27 is the first subnet mask that allows for 30 hosts (The block size being 32).

Since there are 32 addresses total, we'll need to subtract 2 to determine the amount of usable hosts.

32 - 2 = 30 , the exact amount of hosts needed for the network.

✓ Answer: 255.255.255.224


• 4.2 Standard Subnetting Questions

These are the 2nd simplest types of problems and the most common you'll have relating to subnetting. These are questions that require you to determine what subnetwork certain addresses belong to.

These questions rely on your knowledge and understanding of CIDR logic and subnet ranges.

- Question #1

While configuring an interface, you receive this error:

Router(config-if)# ip address 192.168.1.63 255.255.255.192
% Invalid mask

Problem: Why is this IP rejected?

➤   Explanation

Using our cheat sheet, we can see that a .192 subnet mask corresponds to /26 CIDR notation.

Since a /26 can only have 64 addresses (our block size), let's list out the possible subnetworks:

.0 .64 .128 .192 .256
Subnetwork #1
Subnetwork #2
Subnetwork #3
Subnetwork #4

The address trying to be assigned is 192.168.1.63, and since .64 is the start of a new subnetwork, (Subnetwork #2) .63 is the last possible address for the .0 - .64 range

The last address will always be the broadcast address, since the # of usable addresses is determined by subtracting two from the total address amount (leaving us with 62)

Answer:

✓ Because it's the broadcast address of the 192.168.1.0/26 network, it cannot be assigned. The actual usable host range is .1 - .62

- Question #2

A company provides you with the subnet 192.168.10.32/28 and gives you these instructions:

What addresses do you assign?

➤   Explanation

Since we're working with a /28 subnet mask, our corresponding block size is 16. We can identify the subnet ranges as so:

.0 .16 .32 .48 .64
Subnetwork #1
Subnetwork #2
Subnetwork #3
Subnetwork #4

We can see that the subnet we were given falls in the .32 - .48 network. Because 192.168.10.32 is the network ID, .33 will be the first host in this network.

Since our block size is 16, 32 + 16 gives us 48, which is the start of the next subnet, we'll need to subtract 2 to get the last usable host address.

48 - 2 = .46, our last usable address.

Referencing our cheat sheet, we know that a /28 is a 255.255.255.240 subnet mask, so we would assign that to the interfaces as well.

Together, we now have:

.33 = First usable address, .46 Last usable address, and a .240 subnet mask.

Answer:

  • Router A interface: 192.168.10.33 /28
  • Server A: 192.168.10.46 /28

- Question #3

Which subnet does host 12.120.1.185/25 belong to?

➤   Explanation

Using our sheet, we know that /25 has a block size of 128.

Let's list out the possible subnets:

.0 .128 .255 <-- Maximum, the next network would be 192.168.2.0/25

The host # is .185, which is right in between .128 and .256.

So we know that .185 is in the .128 subnet.

Answer: The host is in the 12.120.1.128 /25 subnet.

- Question #4

What is the broadcast address of the subnet 192.168.10.64/26?

➤   Explanation

Using our sheet, /26 = block size of 64.

.0 .64  .128 .192 .256
Subnetwork #1
Subnetwork #2
Subnetwork #3
Subnetwork #4

Since we know our subnet range is .64 - .128 (The start of subnet #3), our last address will be .127.

Answer: The broadcast address is 192.168.10.127 /26


• 4.3 Applied VLSM Subnetting

The following questions are likely going to be the hardest questions you'll get when first learning how to subnet.

You can also expect for these to be the highest ceiling questions on the CCNA 200-301 exam. (however, you can expect them to be rare.)

The purpose of these questions is to apply subnetting knowledge to practical network design problems from the ground-up.

- Question #1

You are given 192.168.1.0/24 by your company. You need subnets for:

➤   Explanation

All we'll do for VLSM is use different subnet masks to accommodate for different # of hosts under the same network.

For example, if I need 50 hosts, I will have to use a /26, since it has a block size of 64.

Since we can only subnet in powers of 2, we can't create a subnet with exactly 50 hosts, but /26 will give us what we need. Apply this to every network, and you're doing VLSM.

Assigning block sizes:

  • For Sales --> /26 (62 usable)
  • For HR --> /27 (30 usable)
  • For Guest --> /28 (14 usable)
  • For Admin --> /29 (6 usable)

That's it. You've determined what subnet masks will be needed, all you need to do is allocate them.

NOTE: When allocating the subnets, you want to start with the lowest CIDR first, and work your way up, as seen here:

Answer:

Subnets:

  • Sales --> 192.168.1.0 /26
  • HR --> 192.168.1.64 /27
  • Guest --> 192.168.1.96 /28
  • Admin --> 192.168.1.112 /29

- Question #2

You are given 172.16.0.0/24 by your company. You need subnets for:

➤   Explanation

We follow the same process: start with the largest block and work down, assigning subnet masks that meet or exceed the required host count.

For example, Research needs 60 hosts. The smallest block that can fit 60 is a /26 (64 total addresses, 62 usable).

Assigning block sizes:

  • Research --> /26 (62 usable)
  • Sales --> /27 (30 usable)
  • HR --> /27 (30 usable)
  • Support --> /28 (14 usable)
  • Admin --> /29 (6 usable)
  • Guest --> /30 (2 usable)

Now allocate them sequentially from 172.16.0.0 onward:

Answer:

Subnets:

  • Research --> 172.16.0.0 /26
  • Sales --> 172.16.0.64 /27
  • HR --> 172.16.0.96 /27
  • Support --> 172.16.0.128 /28
  • Admin --> 172.16.0.144 /29
  • Guest --> 172.16.0.152 /30

5 . Subnetting beyond /24

The reason I left out these further ranges for later is because you're less likely to come across them in beginner subnetting courses, and are not required for the CCNA exam. However the method that I introduced applies the exact same. The only caveat is shifting your focus to an earlier octet.

You'll typically see subnetting in the /17 - /24 range in larger enterprise networks, and are still a realistic range to know & learn.

/1 - /16 however, are much less common and usually reserved for route summarization or ISP allocations.

To expand our use, you'll simply want to list out the CIDR notations once again. As so:

CIDR CIDR CIDR Subnet Mask Block Size
/9 /17 /25 .128 128
/10 /18 /26 .192 64
/11 /19 /27 .224 32
/12 /20 /28 .240 16
/13 /21 /29 .248 8
/14 /22 /30 .252 4
/15 /23 /31 .254 2
/16 /24 /32 .255 1

After laying out the ranges in the table, notice that nothing about the math itself has changed. The only difference is where you start counting from.

Here are some important key notes & differences to keep in mind before I give examples:

  • In the /17 – /24 range, the same process applies, but instead of breaking down the last octet, you’re now working in the third octet. For example, a /20 STILL has a block size of 16, but it's now in the third octet. Which means you can have networks like 192.168.16.0/20. After 192.168.16.255, it carries over into 192.168.17.0, and continues to be a subnet. It only reaches its limit once you've exceeded the block size in that third octet.
  • For /1 – /16, the method is still identical, except now you’re shifting even further left.
  • Our only major caveat from before is going to be our method of calculating the # of addresses, which I have an explanation for here.

Before, we were limited by the maximum # of addresses in a /24 (255), but now, we can go from 192.168.1.255, into 192.168.2.0, and it continues to be its own subnet.


5.1 Calculating hosts for /1 - /23

The process for calculating hosts in these ranges is extremely intuitive and won't require much thought once you've understood it.

It's recommended that you have a calculator for this.

Steps:

1 - Subtract the CIDR prefix of your subnet mask from 32.

For example, given /17 --> 32 - 17 = 15

2 - Then, raise 2 to the power of that result. -> 2^15 = 32,768 total addresses.

If you're wanting to calculate for usable hosts, simply subtract 2 like before.


5.2 Subnetting Questions 2.0

Here are some example questions for subnetting in these ranges. The structure and nature of the questions all remain the same.

- Question #1

You are configuring a network with 10.0.0.0/18.

What is the subnet mask in dotted decimal notation for this network?

➤   Explanation

Referencing our sheet with the added CIDR notation, we can see that /18 is associated with the .192 subnet mask.

Since /18 indicates that we're working with the third octet, the subnet mask will be 255.255.192.0

Answer: 255.255.192.0

- Question #2

You are asked: "How many total addresses and usable hosts are available in a 172.16.0.0/19 network?"

➤   Explanation

Our process remains the same:

Step 1:

Subtract the CIDR notation itself from 32 (you will always need to do this).

32 - 19 = 13

Step 2:

Raise 2 to the power of the answer.

Total addresses = 2^13 = 8,192.

Subtract 2 for the # of usable hosts.

8,192 - 2 = 8,190

Answer: There are 8,190 usable hosts for 172.16.0.0/19.

- Question #3

Given the network 192.168.0.0/22, determine:

  • Network Address
  • Broadcast Address
  • Usable Host range
➤   Explanation

Step 1 — Identify associated subnet mask:

  • Using our sheet --> /22 = 255.255.252.0

Step 2 — Identify the block size:

  • .252 block size = block size 4

Step 3 — Find the network address:

    Let's list out our possible subnetworks:

    .0 .4 .8 .12 .16
    Subnetwork #1
    Subnetwork #2
    Subnetwork #3
    Subnetwork #4

    Remember that this is in the 3rd octet.

    192.168.X.0

                    ^

    Now we know that 192.168.4.0 is the start of the next network.

  • So, our network ID = 192.168.0.0

Step 4 — Find the broadcast address:

  • Because the next network is 192.168.4.0, the broadcast address will be the previous address.
  • Our subnet covers 192.168.0.0 all the way to 192.168.3.XXX
  • Broadcast = 192.168.3.255

Step 5 — Determine usable host range:

  • First usable = Network + 1 = 192.168.0.1
  • Last usable = Broadcast − 1 = 192.168.3.254

Answer:
Network = 192.168.0.0
Broadcast = 192.168.3.255
Usable range = 192.168.0.1 – 192.168.3.254

- Question #4

You are assigned 10.0.0.0/16 and need to create:

  • Network A: 500 hosts
  • Network B: 200 hosts
  • Network C: 50 hosts

Assign the appropriate subnets.

➤   Explanation

Network A:

Our usual /24 can only cover 254 hosts, so we'll need to expand into the third octet.

If we go down to a /23 (with the block size of 2), this doubles our addresses, into 10.0.0.0 - 10.0.1.255

We can infer from doubling the amount, 255 x 2 = 510, that /23 will be enough to accommodate for the # of needed hosts.

Network B:

Since we need 200 hosts, we know we won't need to go into the third octet to accommodate for the amount needed. A single octet of 255 will work.

Since a /24 covers 255 without using anymore address space, we will have to use it for Network B.

Network C:

Using our sheet, we know the block size that will let us accommodate for at least 50 hosts is /26, so we will use it for Network C

Allocation

Starting with the largest subnet first:

1. Network A: 10.0.0.0/23 --> covers 10.0.0.0 – 10.0.1.255

2. Network B: 10.0.2.0/24 --> covers 10.0.2.0 – 10.0.2.255

3. Network C: 10.0.3.0/26 --> covers 10.0.3.0 – 10.0.3.63


6 . Closing Thoughts

I wanted to make this post both to serve as a reference page for people learning to subnet and to highlight some of the difficulties and problems I had with learning how to subnet using NetAcad.

Subnetting is often seen as a very intimidating part of networking for many who are first learning, especially when it's primarily taught through rigid, step-by-step procedures that emphasize dogmatic steps over practical intuition and reasoning. Through my own experience preparing for the exam, I came to discover that this simpler method continued to prove itself reasonable and consistent across the board in subnetting exercises. To the point of never even thinking about binary, bits, or needing to write anything down.

Subnetting doesn’t have to be a barrier—with a different approach, it becomes a tool and process that can blend seamlessly into your workflow as an engineer or admin.

I recommend for those who're still learning, to use as many resources and practice questions as you can—and try to see if you can solve them using solely this method. I'm sure that as you get better, you'll find that you can extract all of the info you need just from practicing this approach. With enough practice, it becomes muscle memory.

Thank you to those who took the time to read, I hope it helps!


If you have any questions or suggestions regarding this post, you can contact me here.

Roman Todd   —   08-28-25