**What is Subnetting** ?-**Subnetting** is the process of diving a network into small networks and is a common task on IPV4 networks.

Before we discuss how to implement it it is useful to understand why and when we need to do it and to do that we are first going to work through a simple analogy to illustrate the problem subnetting solves

### Subnetting Analogy

As an analogy imagine a school and we need to split it into class rooms.

**But why split it into class rooms?** The answer is to stop classes interfering with one another.

Now each classroom has a desk with a computer and we have been tasked with creating a labeling system for the computers.

Now say we have 30 classrooms each with a maximum of 30 students and computers.

If we assign numbers to our classrooms and computers then we could have for example:

computer 11, classroom 24

We need two digits for the classroom which would allow for a maximum of 100 classrooms (0-99).

We need two digits for the computer which would allow for a maximum of 100 computers (0-99).

If we also say that classroom numbers 0 and 99 and computer numbers 0 and 99 were reserved and not allowed to be assigned then we now have a maximum of 98 classrooms and 98 computers which is enough for own requirements.

So lets create our label we could use the following scheme:

- computer 11, classroom 24
- 24-11
- 11-24
- 2411
- etc

There are many possible permutations we just need to pick one and tell every one about out labeling scheme.

Lets assume we go for 2411 where 24 is the classroom and 11 is the computer.

So now when we see the following **0223** we now know that this refers to **classroom 2** and **computer 23.**

This we do easily in our heads once we know the labelling scheme.

We could even make it easier for ourselves by creating a paper mask that we put over the label that would reveal the classroom.

### IP Addresses and Subnetting

Just like in our classroom example an IP address is split into two components a **network component** and a **node component.**

So the address 10.0.2.1 is split into Network plus Node.

So is the network number 10, or 10.2 or 10.0.2 ?

In early IPv4 networks address classes were used to identify the number of bytes allocated to the network component.

The main classes were class A,B,C. With the allocation as follows:

**Class A** **network**,**node,node,node**

**Class B** **network,network**,**node,node**

**Class C** **network,network,network**,**node**

To determine the class you needed to examine the most significant byte (far left).

- 0-127
**Class A** - 128-191
**Class B** - 192-ccc
**Class C**

### IP Subnetting- Problems with Large Networks

All modern networks use the Ethernet data link protocol.

Ethernet uses a shared media and is negatively effected when a large number of nodes are connected to the same media.

This is just the same as having too many kids in the same classroom.

You can equate a **network and node address** to our** classroom **and** desk number**

What would happen if you had a classroom with 100’s of desks i.e. hundreds of pupils?

So even though a **Class A** address can accommodate thousands of nodes it it totally impractical to put this many nodes on a single network.

The solution to the problem was to split the network into small networks called sub networks or subnets.

Take for example a **class A** address which uses 1 byte for the **network ID** and 3 bytes for the **Node ID**. Written

**Net.Node.Node.Node**

It is important to understand that the network part of the address is only used for** routing IP packets** on the public internet.

Once the packet **enters the private network** then the **Node address is used** and the public Network address is not used.

Now a network administrator can interpret the node address any way they want, and so it is possible to **split the node address** into **subnet and Node**. So we could have

**Net**.**Subnet**.**Node.Node** or **Net**.**Subnet.Subnet**.**Node.**

The technique used to create subnets is to use a Mask.

The mask effectively hides the Node component and leaves the network and sub network components.

If the IP address was printed on paper we could hide the last byte by placing a paper mask over the number with three holes.

**Note**: if your binary is a little rusty see the binary numbers tutorial

To do this on a computer we use a number which we then **logically AND** with with IP address.

Here is the logic table for AND

1 and 1 =1

1 and 0 =0

0 and 1 =0

0 and 0 =0

So our mask to hide the last byte is 255.255.255.0 **As 0 and Anything is always 0**

The best way to see this is to write the numbers out in binary

000001011.00000001.00000001.00010101 = 11.1.1.21

11111111.11111111.11111111.00000000 =255.255.255.0

and then do a logical AND

the Network address is 11.1.1.0 which corresponds to network 11 subnet **1.1**

The **Subnet mask** determines how the IPv4 address is split.

Th example above used a class A IP address we can do the same with a class B address.

**Net.Net.Node.Node —->Net.Net.Subnet.Node **Using Mas**k 255.255.255.0
**

Subnetting on a byte boundary is the easiest to do and understand but we can also subnet on** non byte** boundaries.

#### Worked Examples

1- You have been allocated a class A network address of **29.0.0.0**. You need to create at least 20 networks and each network will support a maximum of 160 hosts. Would the following two subnet masks Work?

**255.255.0.0** and or **255.255.255.0**

Yes both would work.

Mask **255.255.0.0** has 8 bits for the subnet and 16 bits for the host

8 bits would accommodate 2^{8}=256 subnets

16 bits would accommodate 2^{16}= over 64000 hosts

Mask 255.255.255.0 has 16 bits for the subnet and 8 bits of the host.

Have possible 2^{8} -2 hosts =254 which is enough.

2. – You have been allocated a class B network address of 135.1.0.0 and and need to create 4 subnets each with around 200 hosts what is the easiest mask to use to satisfy the criteria?

Easiest is to sub net on a byte boundary which would mean a subnet mask of **255.255.255.0**

This would allocate **8 bits** for the **subnet** and** 8 bits** for the **host.**

We need to accommodate around 200 hosts which requires 8 bits which we have.

We need 4 subnets which requires 4 bits and we have 8 bits. So we have more than enough.

### Classless Inter-Domain Routing (CIDR)

**Classless Inter-Domain Routing** was introduced in 1993 to replace the classful network design.

Instead of allocating network addresses using address classes based on 8 bit groups it uses** variable length subnet masking**.

It also introduced a new method of denoting network masks.

**Example:**

A **class C** network would have a subnet mask of **255.255.255.0** which means that **24 bits** are used for the network.

In **CIDR** notation this is designated by a **/24** following the IP address. So:

IP address **192.168.1.168** subnet mask **255.255.255.0** is written as: **192.168.1.168/24** in **CIDR** notation.

Address Class | No of Network Bits | No of Host Bits | Subnet mask | CIDR notation |

A | 8 | 24 | 255.0.0.0 | /8 |

A | 9 | 23 | 255.128.0.0 | /9 |

A | 12 | 20 | 255.240.0.0 | /12 |

A | 14 | 18 | 255.252.0.0 | /14 |

B | 16 | 16 | 255.255.0.0 | /16 |

B | 17 | 15 | 255.255.128.0 | /17 |

B | 20 | 12 | 255.255.240.0 | /20 |

B | 22 | 10 | 255.255.252.0 | /22 |

C | 24 | 8 | 255.255.255.0 | /24 |

C | 25 | 7 | 255.255.255.128 | /25 |

C | 28 | 4 | 255.255.255.240 | /28 |

C | 30 | 2 | 255.255.255.252 | /30 |

### Worked Examples

- Write the IP address 222.1.1.20 mask 255.255.255.192 in CIDR notation

Decimal 192 =11000000 binary which means that 2 bits of this octet are used for the subnet. Now add the 24 bits 255.255.255 and we have 26 bits. So we write:

222.1.1.20/26

2. Write is the IP address 135.1.1.25 mask 255.255. 248.0 in CIDR notation

Decimal 248 =11111000 binary which means that 5 bits of this octet are used for the subnet. Now add the 16 bits 255.255. and we have 21 bits. So we write:

135..1.1.25/21

### Simple Subnetting Exercise Questions

The best way to learn to do subnetting is to try some examples. We will look a some common subnetting problems that arise when creating networks.

1 – You have been allocated a class C network address of 201.1.1.0 how may hosts can you have?

2- You have been allocated a class A network address of **21.0.0.0**. You need create at least 10 networks and each network will support a maximum of 100 hosts. Would the following two subnet masks Work.

255.255.0.0 and or 255.255.255.0

3 – You have been allocated a Class B network address of 129.1.0.0. You have subnetted it using the subnet mask 255.255.255.0 How many networks can you Have and how many hosts can you place on each network?

**Answers**

**A1**– 255-2= 254 – Why? host addresses of all 0’s and all 1’s are not allowed.

**A2-** Yes you only need 8 bits for 100 hosts and both subnet masks would give you that.

A subnet mask of 255.255.255.0 would give you lots of networks (2 ^{16}) and 254 hosts.

A subnet of 255.255.0.0 would give you lots of hosts (approx 2^{16}) and 256 networks.

**A3 –** the network has 8 bits and so does the node component. This means that you have have 2^{8} =256 networks and 256 -2 = 254 hosts

### Subnetting Class C Addresses

So far we have been subnetting on a byte boundary using class A and B addresses.

Now we are going to look at how we subnet on a non-byte boundary using a** Class C Address**.

**Exercise-** You have been allocated a class C network address of 195.1.1.0.

You need to create 5 sub networks each network has a maximum of 10 hosts.

Now our current subnet mask is 255.255.255.0

We can only use the first 8 bits for out subnets as these 8 bits have been allocated as host addresses.

So for 10 hosts we need 4 bits (16-2 =14 hosts)

for 5 subnets we need 3 bits (8 networks possible)

possible masks:

11100000=224 (**Note:** 3 bits for sub networks)

11110000=240 (**Note:** 4 bits for sub networks)

So Subnet masks of 255.255.255.224 and 255.255.255.240 would both work.

In CIDR notation we have 195.1.1.0/27 and 195.1.1.0/28

### Subnet Table and Calculator

Below is a simple subnet table that makes it easier for calculating subnets.

There are also many online subnet calculators available like this one

### Subnet Worked Examples

Subnetting Worked Examples and Exercises

### Subnet Quizes

Test you knowledge using these online quizes

**Related Tutorials and Resources:**

this article has greatly helped me..in ma research

very precise and easy to understand

This article helped me so much. Appreciate your work

wow, just wow, i have spent 3 days in classes trying to understand all this stuff and this page has just explained everything to me in about an hour! God bless you Steve!

I thank you a lot Steve with this great effort. You made it easy for us.

Many thanks.

Mohamud

real that’s wonderful calculations about /on submitting

Thank you for posting. This was very well written and easy to understand.

Yeah nicely done. Much appreciated. Managed to grasp CIDR – even after a couple pilsner. 😉 Now I’m a cider fan too.

Really helped me to understand the concept of subnet masks and how they work. Thank you!

Great analogy Steven, really made the whole concept much clearer to me, thanks.

Very great analogy, thank you

It really sound well,of the subnet mask,the explanation give me a better understand, so much appreciate

“Well in early IPv4 networks address classes were used to identify the number of bytes allocated to the network component.” Please note that a comma is needed here and depending on where you will place it the provided information will be entirely different.

On the other hand, great explanation, I’m one step forward in understanding netmask

Tks for the feedback I’ll correct the text

rgds

steve

In the process of simplifying, you over complicated the whole process.

Content is really good. but explanation is over complicated

Lol gosh thought it was just me lost and confused

Thank you for the tutorial with examples

For decades I roamed the earth with the horrible awareness that I don’t grasp subnet masks and CIDR notations … 20 mins on this page and now it all seems so clear. Thanks!

Hi Steve

Thank you for this explanation, it is good as always. It was one part that I didn’t quite understand though. How do i know how many networks and hosts I can place on each network?

Hi

If you take a class c network as an example the starting subnet mask is 255.255.255.0

The lower 8 bits you can use for subnetting.

if you use 4 bits for the sub network and 4 for hosts you get a subnet mask of

255.255.255.240

128+64+32+16=240

the network uses the high order bits

anyway 4 are for the network. With 4 bits you can have 16 values 0000 to 1111

now 0000 and 1111 are normally not allowed for network or host addresses therefore you can have 14 subnets and 14 hosts.

Hope that makes sense

You might also want to look at the worked examples

http://www.steves-internet-guide.com/subnetting-worked-examples/

Do you have to subtract 2 addresses from the network addresses as well as the host addresses? In the main post, A3 for the exercise questions, it says that you have 256 networks and 254 hosts. You’re only subtracting the all 1 and all 0 addresses from the hosts. What am I missing?

Yes That is correct. It wasn’t previously possible to use the all1’s or all0s for subnets or hosts with classfull addressing. That situation changed with classless addressing. However use of all1s and all 0s is discouraged. See this very good cisco discussion on the subject

https://www.cisco.com/c/en/us/support/docs/ip/dynamic-address-allocation-resolution/13711-40.html

If you are worried about exam questions then you might find they state if all 1s and all 0s can be used.

Personally I would avoid all 1’s and all 0s

rgds

steve

I thought I could never understand networking concepts. Your article is making me think, if things are explained in a way as you have done, I can and everyone can understand anything. Thanks Steve!!

Thank you, the clearest explanation of masks and sub-netting I’ve found.

your blog is very helpful steve,u made me understand subnetting within 30 minutes yet i have been readin gjunks for almost 8 years without gasping anything