In this
article, we will learn how to subnet and make subnetting an easy task.
The table
below summarizes the possible network numbers, the total number of each type,
and the number of hosts in each Class A, B, and C network.
Default subnet mask
|
Range
|
|
Class A
|
255.0.0.0 (/8)
|
1.0.0.0 – 126.255.255.255
|
Class B
|
255.255.0.0 (/16)
|
128.0.0.0 –
191.255.255.255
|
Class C
|
255.255.255.0 (/24)
|
192.0.0.0 – 223.255.255.255
|
Table 1 –
Default subnet mask & range of each class
Class A
addresses begin with a 0 bit. Therefore, all addresses from 1.0.0.0 to
126.255.255.255 belong to class A (1=0000 0001; 126 = 0111
1110).
The 0.0.0.0 address is reserved for default routing and the 127.0.0.0 address is reserved for loopback testing so they don’t belong to any class.
Class B addresses begin with a 1 bit and a 0 bit. Therefore, all addresses from 128.0.0.0 to 191.255.255.255 belong to class B (128=1000 0000; 191 =1011 1111).
Class C addresses begin with two 1 bits and a 0 bit. Class C addresses range from 192.0.0.0 to 223.255.255.255 (192 = 1100 0000; 223 = 1101 1111).
The 0.0.0.0 address is reserved for default routing and the 127.0.0.0 address is reserved for loopback testing so they don’t belong to any class.
Class B addresses begin with a 1 bit and a 0 bit. Therefore, all addresses from 128.0.0.0 to 191.255.255.255 belong to class B (128=1000 0000; 191 =1011 1111).
Class C addresses begin with two 1 bits and a 0 bit. Class C addresses range from 192.0.0.0 to 223.255.255.255 (192 = 1100 0000; 223 = 1101 1111).
Class D
& E are used for Multicast and Research purposes and we are not allowed to
subnet them so they are not mentioned here.
Note: The
number behind the slash notation (/) specifies how many bits are turned on (bit
1). For example:
+ “/8″
equals “1111 1111.0000 0000.0000 0000.0000 0000″ -> 8 bits are turned on
(bit 1)
+ “/12″ equals “1111 1111.1111 0000.0000 0000.0000 0000″ -> 12 bits are turned on (bit 1)
+ “/28″ equals “1111 1111.1111 1111.1111 1111.1111 0000″ -> 28 bits are turned on (bit 1)
+ “/32″ equals “1111 1111.1111 1111.1111 1111.1111 1111″ -> 32 bits are turned on (bit 1) and this is also the maximum value because all bits are turned on.
+ “/12″ equals “1111 1111.1111 0000.0000 0000.0000 0000″ -> 12 bits are turned on (bit 1)
+ “/28″ equals “1111 1111.1111 1111.1111 1111.1111 0000″ -> 28 bits are turned on (bit 1)
+ “/32″ equals “1111 1111.1111 1111.1111 1111.1111 1111″ -> 32 bits are turned on (bit 1) and this is also the maximum value because all bits are turned on.
The slash
notation (following with a number) is equivalent to a subnet mask. If you know
the slash notation you can figure out the subnet mask and vice versa. For
example, “/8″ is equivalent to “255.0.0.0″; “/12″ is equivalent to
“255.240.0.0″; “/28″ is equivalent to “255.255.255.240″; “/32″ is equivalent to
“255.255.255.255″.
The Network & Host parts of each class by
default
From the
“default subnet mask” shown above, we can identify the network and host part of
each class. Notice that in the subnet mask, bit 1 represents for Network part
while bit 0 presents for Host part (255 equals to 1111 1111 and 0 equals to
0000 0000 in binary form).
What is “subnetting”?
When
changing a number in the Network part of an IP address we will be in a
different network from the previous address. For example, the IP address
11.0.0.1 belongs to class A and has a default subnet mask of 255.0.0.0; if we
change the number in the first octet (a block of 8 bits, the first octet is the
leftmost 8 bits) we will create a different network. For example, 12.0.0.1
is in a different network from 11.0.0.1. But if we change a number
in the Host part, we are still in the same Network. For example, 11.1.0.1
is in the same network of 11.0.0.1.
The
problem here is if we want to create 300 networks how can we do that? In the
above example, we can only create different networks when changing the first
octet so we can create a maximum of 255 networks because the first octet can
only range from 1 to 255 (in fact it is much smaller because class A only range
from 1 to 126). Now we have to use a technique called “subnetting” to achieve
our purpose.
“Subnetting”
means we borrow some bits from the Host part to add to the Network part.
This allows us to have more networks than using the default subnet mask. For
example, we can borrow some bits in the next octet to make the address 11.1.0.1
belong to a different network from 11.0.0.1.
How to subnet?
Do you
remember that I said “in the subnet mask, bit 1 represents for Network part
while bit 0 presents for Host part”? Well, this also means that we can specify
how many bits we want to borrow by changing how many bit 0 to bit 1 in the
subnet mask.
Let’s
come back to our example with the IP 11.0.0.1, we will write all numbers in
binary form to reveal what a computer really sees in an IP address.
Now you
can clearly see that the subnet mask will decide which is the Network part,
which is the Host part. By borrowing 8 bits, our subnet mask will be like this:
After
changing the second octet of the subnet mask from all “0″ to all “1″, the
Network part is now extended. Now we can create new networks by changing number
in the first or second octet. This greatly increases the number of networks we
can create. With this new subnet mask, IP 11.1.0.1 is in different
network from IP 11.0.0.1 because “1″ in the second octet now belongs to
the Network part.
So, in
conclusion we “subnet” by borrowing bit “0″ in the Host portion and converting
them to bit “1″. The number of borrowed bits is depended on how many networks
we need.
Note: A
rule of borrowing bits is we can only borrow bit 0 from the left to the right
without skipping any bit 0. For example, you can borrow like this: “1111 1111.
1100 0000.0000 0000.0000 0000″ but not this: “1111 1111. 1010 0000.0000
0000.0000 0000″. In general, just make sure all your bit “1″s are successive on
the left and all your bit “0″s are successive on the right.
Calculate how many
networks and hosts-per-subnet
In our example, you
may raise a question: “when we borrow 8 bits, how many sub-networks and how
many hosts per sub-network do it create?”
Note: From now, we
will call sub-networks “subnets”. This term is very popular so you should be
familiar with it.
How many new subnets?
Because we can change
any bit in the second octet to create a new subnet, each bit can be “0″ or “1″
so with this subnet mask (255.255.0.0) we can create 28 more
subnets. From here we can deduce the formula to calculate the newly created
subnets. Suppose n is the number of bits we borrow:
The number of newly created subnets =
2n
|
In our example, we
borrow 8 bits so we will have 2n = 28 = 256
subnets!
How many hosts per
subnet?
The number of hosts
per subnet is depended on the Host part, which is indicated by the “0″ part of
the subnet mask. So suppose k is the number of bits “0″ in the subnet
mask. The formula to calculate the number of hosts is 2k. But
notice that with each subnet, there are two addresses we can’t assign for hosts
because they are used for network address & broadcast address. Thus we must
subtract the result to 2. Therefore the formula should be:
The number of hosts per subnet = 2k –
2
|
In our example, the
number of bit “0″ in the subnet mask 255.255.0.0 (in binary form) is 16 so we
will have 2k – 2 = 216 – 2 = 65534
hosts-per-subnet!
Some other examples
Well, practice makes
perfect so we should have some more exercises to be familiar with them. But
remember that this is only the beginning in your journey to become a subnetting
guru :)
Exercise 1
Your company has just
been assigned the network 4.0.0.0. How many subnets and hosts-per-subnet you
can create with a subnet mask of 255.255.255.0?
(Please try to solve
by yourself before reading the solution ^^)
Solution
First of all you have
to specify which class this network belongs to. According to Table
1, it belongs to class A (simply, class A ranges from 1 to 126) and its default
subnet mask is 255.0.0.0. Therefore if we use a subnet mask of 255.255.255.0,
it means we borrowed 16 bits (to convert from 0 to 1).
255.0.0.0 = 1111
1111.0000 0000.0000 0000.0000 0000
255.255.255.0 = 1111 1111.1111 1111.1111 1111.0000 0000
255.255.255.0 = 1111 1111.1111 1111.1111 1111.0000 0000
Now use our above
formulas to find the answers:
The number of newly
created subnets = 216 = 65536 (with 16 is the borrowed bits)
The number of hosts per subnet = 28 – 2 = 254 (with 8 is the bit “0″s left in the 255.255.255.0 subnet mask)
The number of hosts per subnet = 28 – 2 = 254 (with 8 is the bit “0″s left in the 255.255.255.0 subnet mask)
Exercise 2
Your company has just
been assigned the network 130.0.0.0. How many subnets and hosts-per-subnet you
can create with a subnet mask of 255.255.128.0?
(Please try to solve
by yourself before reading the solution ^^)
Solution
130.0.0.0 belongs to
class B with the default subnet mask of 255.255.0.0. But is the subnet mask of
255.255.128.0 strange? Ok, let’s write all subnet masks in binary:
255.255.128.0 = 1111
1111.1111 1111.1000 0000.0000 0000
This is a valid
subnet because all bit “1″s and “0″s are successive. Comparing to the default
subnet mask, we borrowed only 1 bit:
255.255.0.0 = 1111
1111.1111 1111.0000 0000.0000 0000
Therefore:
The number of newly
created subnets = 21 = 2 (with 1 is the borrowed bits)
The number of hosts per subnet = 215 – 2 = 32766 (with 15 is the bit “0″s left in the 255.255.128.0 subnet mask)
The number of hosts per subnet = 215 – 2 = 32766 (with 15 is the bit “0″s left in the 255.255.128.0 subnet mask)
Exercise 3
Your company has just
been assigned the network 198.23.16.0/28. How many subnets and hosts-per-subnet
you can create with a subnet mask of 255.255.255.252?
(Please try to solve
by yourself before reading the solution ^^)
Solution
In this exercise,
your company was given a “subnetted” network from the beginning and it is not
using the default subnet mask. So we will compare two subnet masks above:
/28 = 1111 1111.1111
1111.1111 1111.1111 0000 (=255.255.255.240)
255.255.255.252 = 1111 1111.1111 1111.1111 1111.1111 1100 (= /30)
255.255.255.252 = 1111 1111.1111 1111.1111 1111.1111 1100 (= /30)
In this case we
borrowed 2 bits. Therefore:
The number of newly
created subnets = 22 = 4 (with 2 is the borrowed bits)
The number of hosts per subnet = 22 – 2 = 2 (with 2 is the bit “0″s left in the 255.255.255.252 subnet mask)
The number of hosts per subnet = 22 – 2 = 2 (with 2 is the bit “0″s left in the 255.255.255.252 subnet mask)
In this exercise I
want to go a bit deeper into the subnets created. We learned there are 4
created subnets but what are they? To find out, we should write all things in
binary:
Because two subnet
masks (/28 & /30) only affect the 4th octet so we don’t care about the
first three octets. In the 4th octet we are allowed to change 2 bits (in the
green box) of the IP address to create a new subnet. So there are 4 values we
can use: 00, 01, 10 & 11. After changing, we convert them back to decimal
numbers. We get 4 subnets:
+ First subnet:
198.23.16.0/30 (the 4th octet is 00000000)
+ Second subnet: 198.23.16.4/30 (the 4th octet is 00000100)
+ Third subnet: 198.23.16.8/30 (the 4th octet is 00001000)
+ Fourth subnet: 198.23.16.12/30 (the 4th octet is 00001100)
+ Second subnet: 198.23.16.4/30 (the 4th octet is 00000100)
+ Third subnet: 198.23.16.8/30 (the 4th octet is 00001000)
+ Fourth subnet: 198.23.16.12/30 (the 4th octet is 00001100)
So how about hosts
per subnet? Please notice that all these 4 subnets are successive. So we can
deduce the range of these subnets:
+ First subnet:
ranges from 198.23.16.0 to 198.23.16.3
+ Second subnet: ranges from 198.23.16.4 to 198.23.16.7
+ Third subnet: ranges from 198.23.16.8 to 198.23.16.11
+ Fourth subnet: ranges from 198.23.16.12 to 198.23.16.15
+ Second subnet: ranges from 198.23.16.4 to 198.23.16.7
+ Third subnet: ranges from 198.23.16.8 to 198.23.16.11
+ Fourth subnet: ranges from 198.23.16.12 to 198.23.16.15
Let’s analyze the
first subnet which ranges from 198.23.16.0 to 198.23.16.3. Notice that all
networks (and subnets) have a network address and a broadcast address. In this
case, the network address is 198.23.16.0 and the broadcast address is
198.23.16.3 and they are not assignable or usable for hosts. This is the reason
why we have to subtract 2 in the formula “The number of hosts per subnet = 2k –
2″. After eliminating these 2 addresses we have 2 addresses left (which are
198.23.16.1 & 198.23.16.2) as calculated above.
In the previous
examples, we have to write all subnet masks and IP addresses in binary numbers
to find out the results. It is a boring and time-consuming task. In this part I
will show you a shortcut to subnet without using a calculator or rough paper!
Subnetting – The
quick & easy way
One important thing
we should notice is that a valid subnet mask must have all bit “1″s and “0″s
successive, in which bit “1″s must be on the left; bit “0″s must be on the
right. Therefore we only have 8 situations:
Table 2 – lists all valid subnet masks
This is a very
important table to do subnet quickly! Please take some time to learn it by
heart. Make sure you remember the right-most bit “1″ position (the least
significant bit 1, which are in red in the above table) and their equivalent
decimal values.
In most cases, this
table is used to quickly convert a number from decimal to binary value without
any calculation. For example, you can quickly convert the 4th octet of the
subnet mask 255.255.255.248 to 11111000. Or if you are given
a subnet of /29 you will know it equals to 255.255.255.248 (by thinking “/24 is
the default subnet mask of class C so /29 will have the right-most bit “1″ at
5th position).
Try to practice with
these questions:
+ “/28″ in binary
form?
+ “255.255.224.0″ in binary form?
+ “255.192.0.0″ in slash notation form?
+ “/26″ in binary form?
+ “255.128.0.0″ in binary form?
+ “248.0.0.0″ in slash notation form?
+ “255.255.224.0″ in binary form?
+ “255.192.0.0″ in slash notation form?
+ “/26″ in binary form?
+ “255.128.0.0″ in binary form?
+ “248.0.0.0″ in slash notation form?
(Please try to solve
by yourself before reading the solution)
Answers:
+ /28 -> 1111
1111.1111 1111.1111 1111.1111 0000
+ 255.255.224.0 -> 1111 1111.1111 1111.1110 0000.0000 0000
+ 255.192.0.0 -> /10
+ /26 -> 1111 1111.1111 1111.1111 1111.1100 0000
+ 255.128.0.0 -> 1111 1111.1000 0000.0000 0000.0000 0000
+ 248.0.0.0 -> /5
+ 255.255.224.0 -> 1111 1111.1111 1111.1110 0000.0000 0000
+ 255.192.0.0 -> /10
+ /26 -> 1111 1111.1111 1111.1111 1111.1100 0000
+ 255.128.0.0 -> 1111 1111.1000 0000.0000 0000.0000 0000
+ 248.0.0.0 -> /5
How to find out the
increment number?
The increment is the
heart of subnetting; if you can find out the increment, you can find all the
information to solve a subnetting question. So it is usually the first thing
you must find out in a subnetting question.
The increment number
is the number specifying how “big” your subnets are. Let’s take an example of
the increment number! Did you remember the subnets in “Exercise 3″ in the
previous part? By changing bits in the Network part, we found out 4 subnets:
+ First subnet:
198.23.16.0/30 (the 4th octet is 00000000)
+ Second subnet: 198.23.16.4/30 (the 4th octet is 00000100)
+ Third subnet: 198.23.16.8/30 (the 4th octet is 00001000)
+ Fourth subnet: 198.23.16.12/30 (the 4th octet is 00001100)
+ Second subnet: 198.23.16.4/30 (the 4th octet is 00000100)
+ Third subnet: 198.23.16.8/30 (the 4th octet is 00001000)
+ Fourth subnet: 198.23.16.12/30 (the 4th octet is 00001100)
In this case the
increment is 4 (in the 4th octet) because the “difference” between two
successive subnets is 4 (from 0 -> 4; from 4 -> 8; from 8 -> 12)
There are 2 popular
ways to find out the increment number:
1) Use the formula:
Increment = 256 – x
|
In which “x” is the
first octet (counting from the left) which is smaller than 255 in a subnet
mask. For example:
+ In a subnet mask of
255.224.0.0 -> x = 224
+ In a subnet mask of /29 -> x = 248 (because /29 = 255.255.255.248)
+ In a subnet mask of 1111 1111.1111 1100.0000 0000.0000 0000 -> x = 252
+ In a subnet mask of /29 -> x = 248 (because /29 = 255.255.255.248)
+ In a subnet mask of 1111 1111.1111 1100.0000 0000.0000 0000 -> x = 252
In the case you see a
subnet mask of 255.255.255.255 (which is very rare in CCNA), x = 255
Note: Also remember
which octet “x” belongs to because we have to plus the increment to that octet.
Now let’s solve
Exercise 3 again by using this formula:
Exercise 3 one again (with the
formula 256 – x):
Your company has just
been assigned the network 198.23.16.0/28. How many subnets and hosts-per-subnet
you can create with a subnet mask of 255.255.255.252?
The subnet mask is
255.255.255.252 -> x = 252 (x belongs to 4th octet)
Therefore the
Increment = 256 – 252 = 4
The initial network
198.23.16.0/28 is also the first subnet, so:
+ The first subnet: 198.23.16.0/30
+ The second subnet: 198.23.16.4/30 because the increment is 4 so we plus the network address with it to get the next network address (0 + 4 = 4)
+ The third subnet: 198.23.16.8/30 (4 + 4 = 8)
+ The fourth subnet: 198.23.16.12/30 (8 + 4 = 12)
+ The first subnet: 198.23.16.0/30
+ The second subnet: 198.23.16.4/30 because the increment is 4 so we plus the network address with it to get the next network address (0 + 4 = 4)
+ The third subnet: 198.23.16.8/30 (4 + 4 = 8)
+ The fourth subnet: 198.23.16.12/30 (8 + 4 = 12)
Note: We know there
are only 4 subnets because we borrow 2 bits.
2) Learn by heart the
decimal value of the rightmost bit “1″ in the subnet mask:
Another way to find
the increment value is to write “x” in binary: 11110000. Consider the rightmost
bit “1″, the decimal value of this bit is the increment value. In this case it
equals to 16.
The table below
summarizes the decimal values of bit “1″ depending on its position. To use this
method, you should learn by heart this table:
Table
3 – How to find out increment based on the “least-significant” (rightmost) bit
1
Now let’s solve
Exercise 3 again by using this method:
Exercise 3 one again (with the
“decimal value of the rightmost bit 1″ method):
Your company has just
been assigned the network 198.23.16.0/28. How many subnets and hosts-per-subnet
you can create with a subnet mask of 255.255.255.252?
First use Table 2 to
convert 252 to 1111 1100. The decimal value of the rightmost bit “1″ is
4 (according to Table 3) -> The Increment is 4.
After finding out the
increment we can deduce 4 subnets it creates.
The initial network
198.23.16.0/28 is also the first subnet, so:
+ The first subnet: 198.23.16.0/30
+ The second subnet: 198.23.16.4/30 because the increment is 4 so we plus the network address with it to get the next network address (0 + 4 = 4)
+ The third subnet: 198.23.16.8/30 (4 + 4 = 8)
+ The fourth subnet: 198.23.16.12/30 (8 + 4 = 12)
+ The first subnet: 198.23.16.0/30
+ The second subnet: 198.23.16.4/30 because the increment is 4 so we plus the network address with it to get the next network address (0 + 4 = 4)
+ The third subnet: 198.23.16.8/30 (4 + 4 = 8)
+ The fourth subnet: 198.23.16.12/30 (8 + 4 = 12)
Note: We should only
choose one method to use and try to practice, practice & practice more with
it. Practice until you can solve any subnetting questions within 20 seconds!
Maybe you will ask
why 256 can help you find the increment. In fact, by using the formula
Increment = 256 – x you are trying to separate the rightmost bit “1″ from other
bits:
256 – x = 255 – x + 1
In which “255 – x”
will convert all bit “0″s to bit “1″s and all bit “1″s to “0″s while “+1″ part
will make our result have only one bit “1″ left. For example, if x = 240 then:
So in fact we can say
two above methods are the same!