IP Subnetting made easy – A subnetting tutorial

I’ve been asked to help people understand subetting and CIDR a few times.  In this post I give a short tutorial. Subnetting is explained in many places, with a large variety of methods. The key to working out valid subnets however is simply a matter of understanding the binary maths behind it.

This guide teaches you a simple method, suitable for the Cisco CCNA or ICND1 exam.

My Method

The method I use when subnetting starts with the table below. The first row shows the decreasing powers of 2, or to put it simpler – starting with 1 on the right, keep doubling the number 8 times, you should end up with 128. The row under it is easily calculated by adding up the numbers in the row above. For example, the 2nd cell from the left on the 2nd row (192), is calculated by adding 128 and 64 from the row above. The 3rd number (224) is 128+64+32, or to simplify, it’s the previously calculated 192, added to 32. This explanation might sound a little complicated, but that’s just because I wanted to be sure you understand the table below fully. The numbers in this table will become second nature to you after a little practice.

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

If you are using this method for a Cisco exam, I would suggest writing this table down as soon as you start the exam, as it will be a useful reference for any subnetting questions you get.

Example 1

The usage of the above chart is best explained by example, so I will start by talking though the following:

The number of interest here is the ‘254’ – which in the chart above is in the 7th column. Working out the CIDR notation for this is simple now; we know that the first 16 bits must be 1 (to give 255.255), and we simply add on the 7 found in our chart. This would give us a prefix of 16+7, which is 23.

In binary, this would mean that the subnet mask would look like:

11111111.11111111.11111110.00000000

The broadcast address in a subnet is the last address in the range, so to work though this question we need to figure out the valid subnets – this is where the chart comes in useful. The top number in the chart above ‘254’ is 2 – which is the increment to the network part of the address. This means the following are valid subnets:

172.21.0.0 / 23
172.21.2.0 / 23
172.21.4.0 / 23
172.21.6.0 / 23
... keeps going up in 2s  ...
172.21.150.0 / 23
172.21.152.0 / 23
... continues going up in 2s ...

Example 2

What is the first valid host on the subnetwork that the node 192.168.23.121/29 belongs to?

As a subnet mask is a 32 bit binary mask, a subnet mask length of 29, means we have 29 1’s, followed by 3 0’s. So here it is in binary:

11111111 11111111 11111111 11111000

We can see that the first 3 octets are 255, and therefore it’s only the last octet we are interested in. To find the matching row on the table above, we divide 29 by 8, and work with the remainder – which is 5. Looking at the chart, the 5th number along on the 2nd row is 248, so the subnet mask expressed in dotted notation is:

255.255.255.248

Above the number ‘248’ on the chart is the number 8, which means the network addresses go up in increments of 8:

192.168.23.0 / 29
192.168.23.8 / 29
192.168.23.16 / 29
...
192.168.23.120 / 29
192.168.23.128 / 29
...

We can see that the address 192.168.23.121 must be part of the network 192.168.23.120/29, who’s first valid address would be 192.168.23.121

Tip

To quickly calculate valid subnets, you can again use the table above. In this example, we know the networks increment by 8 each time, but you might not know your 8 times table very well to quickly establish that 192.168.23.120 is valid. Look at the table below, which is a modified version of the one at the top of the page.

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

It might not be obvious on your screen that the number ‘4’ in the top row is striked out!

All of the numbers above in bold that are not striked out are multiples of 8. The logic behind this is that all the numbers in the top row to the left of the number 8 are doubles of the number on the right, therefore everything must be divisible by 8. The bottom row, having been calculated by summing up the numbers on the top row, are also all multiples of 8 up until the 6th column. In the above example we are looking to see what subnet 192.168.23.121 is part of, so we can quickly see from the modified table above that 128 is a multiple of 8 , and therefore a good starting point to figure out the subnet for 192.168.23.121, in this case we just need to minus 8 from 128, which gives us 120.

This might be a little confusing at first, but when understand it will help you solve some questions a lot quicker.

Final Example

Minimal text is used to explain the method in this example, to show just how simple it is.

What valid host range is the IP address 172.18.36.81/22 a part of?

22 bits for for the subnet mask, 22/8 gives a remainder of 6. 6th column means subnet mask is 255.255.252.0. Network increment is 4, nearest multiple of 4 to 36 is 36, next is 40. Range is 172.18.36.0 – 172.18.39.255, first and last can’t be used, therefore valid host range is:

172.18.36.1 - 172.18.39.254

Conclusion

The method above might seem a little wordy and long winded, but that’s just because I’m trying to explain it as well as I can. However, mastering this method is simple. In order to help you practice, try this very useful site to generate questions.

36 thoughts on “IP Subnetting made easy – A subnetting tutorial”

1. john says:

Thanks a lot dude. You helped me understand it in a very simple way

2. ana says:

thanks a lot. a great help for a newbie like me…

3. inno says:

thanx a lot

4. Jonathon says:

AH HA! a light goes on. one Q tho. when using 2 to the power of 8th, how do you arrive at 256? please.

1. martin says:

2x2x2x2x2x2x2x2

5. Bill Thackrey says:

Great guide. I’m curious about your notation though. In Example 1, you write (32 – 23)^2 – 2, which reduces to 9^2, which you indicate reduces to 512. Shouldn’t that be 2^9 (which is 512) and 2^(32-23)?

6. Anita says:

Thks for your comment Bill. I was trying to figure out how 9^2=512!

7. YOH says:

8. mahesh says:

thanks sir,

mahesh

9. Henry says:

Well I think you have to have knowledge here anyway, cos as a person with no knowledge of subnetting ot whatever at all I didn’t get where you got half your numbers from.
For instance,
*As we can see above, the next network on from 172.21.150.0 is 172.21.152.0, which means the broadcast address must be 172.21.151.255*
Why must it be 151? You don’t explain where 151 comes from.

10. ben says:

11. Matt says:

THANK YOU!!! Subnetting has been a ‘skeleton in the closet’ for me for quite a while…your chart is awesome and finally made the light bulb go on. I appreciate your post.

12. rik says:

Best way explained yet!!! Thank you so much

13. stiofan says:

cheers very well explained

14. Mike says:

In your first example you have a typo. You have 512 unique addresses which implies 2^9 not 9^2.

15. Bob M says:

or to quote the text “(32-23)^2-2” is incorrect, it should be 2^(32-23)-2, the general formula being 2^X-2 = number of hosts

16. 3rd octet says:

I clueless on how to subnet in the 3rd octet i get the basic question but don’t have any clue as to the other octet PLZ HELP

17. Leo says:

Hi, I still don’t get the “which means the broadcast address must be 172.21.151.255*” where does 151 come from.
Thanks!

1. Adam says:

If you understand how the subnets were calculated then the subnet for 172.21.150.0 extends from 172.21.150.0 to the next subnet which is 172.21.152.0 (but does not include 172.21.152.0).

So the IP addresses available in this subnet are from 172.21.150.0 to 172.21.151.255.

18. lim says:

i dont get the part where you mention “….22/8 gives a remainder of 6.” how do you get 6?

1. pookey says:

22 divided by 8 – it goes twice. 22 – (2*8) is 6.

19. John says:

brillianr it makes it so easy

20. TIny says:

Thank you very much, I Have no problem dowing Class C address, But Cass A & B I was lost,But Now I understand. Again Thank You. I can now finish My CCNA and move onto CCNP.

21. marc says:

i seem to struggle on these questions, the rest i got to a tea:

How many subnets and hosts per subnet can you get from the network 172.16.0.0 255.255.255.128?

could you supply an explaination to help me with this type of question, thx.

22. qurat says:

Thankz alot …………….

23. sudheer says:

thank u sir

24. Aneela says:

Thank you so much Sir. But can you help me to find valid host bits in detail?

25. Allan says:

thank you very much sir

26. brook says:

thanks a lot. you makes my life easy

27. Sam says:

I have no idea how you got the network increment of 4 in the final example its so confusing!

28. Vasu says:

Thanks you very much to understand us in a very easy way!!!!! 🙂

29. Arpit says:

Brilliant article! I think I’ve finally understood subnetting & CIDR notation.

Thanks a lot!

30. so says:

thanks for the nice article really helped me

31. Laksh KR says:

to find out how many subnets can be formed or created…
Eg 1 :

You need to figure out how many bits are for the subnet and how many are for hosts. If they give CIDR notation, it is easy: 172.17.128.0/25 would have 9 borrowed bit for the subnet (Class B’s usually use 16 bits), so 2^n = 2 ^ 9 = 512 subnets. 7 bits are used for the host, so 2 ^ n – 2 = 2 ^ 7 – 2 = 128 – 2 = 126 hosts.

One more example :

How to find the total number of subnets available for one subnet mask.
For example, take this subnet mask: 255.255.255.224 and IP address as 192.168.5.139, ICND1 boook shows that there are 6 subnet for the given subnet mask, ranging from 192.168.5.32 to 192.168.5.192 , how 6 ? what to consider in ?

The default mask for the class C address of 192.x.x.x is 255.255.255.0

The mask in the example is 255.255.255.224 (using 3 extra bits for subnetting, above and beyond the default).

2^3 is 8 combinations:

000
001
010
011
100
101
110
111

In the old days, we couldn’t use the all 000 or all 111 combination for subnetting, so the formula was 2^extra bits used for custom subnetting, or 2^3 in our example, -2 (for the 2 that used to not be able to be used), which would leave 6.

Today, current IOS has the ability to use the 000 and 111 option with an option called subnet zero, and so on current IOS there would be 8 possible subnets, not just 6.

The possible subnets would be 192.168.5.0/27
the next subnet would jump by 32, to 192.168.5.32/27,
and they would continue to increase by 32 until the subnet of 192.168.5.224/27 was reached, for a total of 8 subnets

32. Michael Sullivan says:

Thanks for taking the time to write up your method. I’ve been struggling with the math of it and this is giving me a good place to start conducting more meaningful practice.

33. kibet says:

You made it look so simple

This site uses Akismet to reduce spam. Learn how your comment data is processed.