How to understand Subnet Masks

Understanding subnet mask

An IP address is a unique identifier for a device connected to a network. It’s a 32 bits number that converted in decimal covers the range 0-4.294.967.296 (i.e. 2 power 32). If the addressing space wasn’t hierarchically organized, it would be possible to connect around 4.3 billions network devices.

To simplify the use of the IP addresses, the binary number is often split in 4 octets. An octet is a group of 8 bits, and the different octets are separated by dots. Each octet, being composed by 8 bits, can cover the decimal range 0-255. An example of IP address in dotted notation is where each number is an octet.


Think about a car odometer!

IP subnettingA simple way to imagine the IP addresses is thinking of them as they were the numbers of an old fashioned odometer. The cylinders spin around and after a full cycle they start again from the same initial number. The first value is a zero and rotating around it reaches 255 before starting again from zero.


IP addresses are binary numbers

It’s very important understanding how the IP addresses are natively binary numbers (being used in electronic devices) so each increment is done bitwise. For that reason, in the next table when an octet reaches 255, the next value is again zero. The octets are composed by 8 bits each, so they can only cover decimal values in the range 0-255. The following table shows how the IP addresses are incremented…doesn’t remind of an odometer?
….keeping incrementing….
….keeping incrementing….
….keeping incrementing….


Valid subnet masks

The IP subnet mask is a key component to determine the length of a subnet. The subnet mask is basically a mask of continguos bits all set to ‘1’ starting from the left side. All other bits are set to ‘0’. The next table illustrates all the valid subnet masks:

Subnet Mask
Subnet Mask (binary) Subnet Mask
(CIDR) 11111111.00000000.00000000.00000000 /8 11111111.10000000.00000000.00000000 /9 11111111.11000000.00000000.00000000 /10 11111111.11100000.00000000.00000000 /11 11111111.11110000.00000000.00000000 /12 11111111.11111000.00000000.00000000 /13 11111111.11111100.00000000.00000000 /14 11111111.11111110.00000000.00000000 /15 11111111.11111111.00000000.00000000 /16 11111111.11111111.10000000.00000000 /17 11111111.11111111.11000000.00000000 /18 11111111.11111111.11100000.00000000 /19 11111111.11111111.11110000.00000000 /20 11111111.11111111.11111000.00000000 /21 11111111.11111111.11111100.00000000 /22 11111111.11111111.11111110.00000000 /23 11111111.11111111.11111111.00000000 /24 11111111.11111111.11111111.10000000 /25 11111111.11111111.11111111.11000000 /26 11111111.11111111.11111111.11100000 /27 11111111.11111111.11111111.11110000 /28 11111111.11111111.11111111.11111000 /29 11111111.11111111.11111111.11111100 /30 11111111.11111111.11111111.11111110 /31 11111111.11111111.11111111.11111111 /32

Since the ‘1’ bits need to be contiguous, the octets of the subnet mask can only have the following values: 128, 192, 224, 240, 248, 252, 254, 255. As shown in the table, the shortest subnet mask has a length of /8 (corresponding to while the longest has a length of  /32 (corresponding to


Default subnet masks

IP Addresses are divided in classes and the following subnet masks are the defaults for the classes A-B-C:

  • Class A:
  • Class B:
  • Class C:

It’s very important understanding how the binary/decimal/CIDR notations are different expressions of the same concept. For example:

11111111.11111111.00000000.00000000  =  =  /16

In the example presented just above, the subnet mask is the same but it can be expressed using three different notations: binary, decimal, CIDR.

For the sake of the IP subnetting, it’s fundamental remembering that a decimal value of 255 corresponds to a ‘1111 1111′ so eight bits all set to one. The following rapid conversions need to be memorized:  =  /8  =  /16  =  /24


Non-default subnet masks

In case of a subnet mask with a non-default value, it’s easy understanding how the mechanisms work. For example:

can be converted into CIDR notation thinking that the two octets with 255 value correspond to 8+8 bits set to one, while 192 corresponds to two additional bits (see subnet mask table presented above) so a total of 8+8+2 = 18. In summary:  =  /18


The subnet mask is a fundamental component of IP subnetting, even though many Network Engineers struggle in fully understanding the meaning. If you are not familiar on how to calculate the subnetting presented in the table above, you might want to have a look at our Easy Subnetting Technique that allows to solve any subnetting problem in less than a minute.

Have you ever had an IP addressing problem in your network?

Daniele Besana

Daniele Besana

Daniele is a freelancer consultant with 15 years of experience in network security, customer support, Linux and Salsa. He worked for Juniper Networks in Netherlands, providing support and consultancy on security projects across Europe and Middle-East.

What do you think about this article?


  1. Hi can you please tell where and how we use subnet mask


  2. In the above illustration how can they be CLass A, B and C
    Class A:
    Class B:
    Class C:

    As far as my knowledge Class A has a range of only 0-127, where as 255 is shown as Class A, please make me understand

Leave a Reply

Your email address will not be published. Required fields are marked *

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

About us

RouterFreak is a blog dedicated to professional network engineers. We
focus on network fundamentals, product/service reviews, and career advancements.


As an Amazon Associate, I earn from qualifying purchases.

RouterFreak is supported by its audience. We may receive a small commission from the affiliate links in this post, at no extra cost to our readers.