Subnetting
Although the conceptual notion of subnetting by utilizing host bits is straightforward, the actual mechanics of subnetting are a bit more complicated. Subnetting requires a three step procedure:

Determine the number of host bits to be used for the subnetting.

Enumerate the new subnetted network IDs.

Enumerate the IP addresses for each new subnetted network ID.
Step 1: Determining the Number of Host Bits
The number of host bits being used for subnetting determines the possible number of subnets and hosts per subnet. Before you choose the number of host bits, you should have a good idea of the number of subnets and hosts you will have in the future. Using more bits for the subnet mask than required saves you the time of reassigning IP addresses in the future.
The more host bits that are used, the more subnets (subnetted network IDs) you can have — but with fewer hosts. Using too many host bits allows for growth in the number of subnets but limits the growth in the number of hosts. Using too few hosts allows for growth in the number of hosts but limits the growth in the number of subnets.
For example, Figure 1.9 illustrates the subnetting of up to the first 8 host bits of a class B network ID. If you choose one host bit for subnetting, you obtain 2 subnetted network IDs with 16,382 hosts per subnetted network ID. If you choose 8 host bits for subnetting, you obtain 256 subnetted network IDs with 254 hosts per subnetted network ID.
Figure 1.9 Subnetting a Class B Network ID
In practice, network administrators define a maximum number of nodes they want on a single network. Recall that all nodes on a single network share all the same broadcast traffic; they reside in the same broadcast domain. Therefore, growth in the number of subnets is favored over growth in the number of hosts per subnet.
Follow these guidelines to determine the number of host bits to use for subnetting.

Determine how many subnets you need now and will need in the future. Each physical network is a subnet. WAN connections can also count as subnets depending on whether your routers support unnumbered connections.

Use additional bits for the subnet mask if:

You will never require as many hosts per subnet as allowed by the remaining bits.

The number of subnets will increase in the future, requiring additional host bits.

To determine the desired subnetting scheme, start with an existing network ID to be subnetted. The network ID to be subnetted can be a classbased network ID, a subnetted network ID, or a supernet. The existing network ID contains a series of network ID bits that are fixed and a series of host ID bits that are variable. Based on your requirements for the number of subnets and the number of hosts per subnet, choose a specific number of host bits to be used for the subnetting.
Table 1.16 shows the subnetting of a class A network ID. Based on a required number of subnets, and a maximum number of hosts per subnet, a subnetting scheme can be chosen.
Table 1.16 Subnetting a Class A Network ID
Required Number of Subnets 
Number of Subnet Bits 
Subnet Mask 
Number of Hosts per Subnet 

12 
1 
255.128.0.0 or /9 
8,388,606 
34 
2 
255.192.0.0 or /10 
4,194,302 
58 
3 
255.224.0.0 or /11 
2,097,150 
916 
4 
255.240.0.0 or /12 
1,048,574 
1732 
5 
255.248.0.0 or /13 
524,286 
3364 
6 
255.252.0.0 or /14 
262,142 
65128 
7 
255.254.0.0 or /15 
131,070 
129256 
8 
255.255.0.0 or /16 
65,534 
257512 
9 
255.255.128.0 or /17 
32,766 
5131,024 
10 
255.255.192.0 or /18 
16,382 
1,0252,048 
11 
255.255.224.0 or /19 
8,190 
2,0494,096 
12 
255.255.240.0 or /20 
4,094 
4,0978,192 
13 
255.255.248.0 or /21 
2,046 
8,19316,384 
14 
255.255.252.0 or /22 
1,022 
16,38532,768 
15 
255.255.254.0 or /23 
510 
32,76965,536 
16 
255.255.255.0 or /24 
254 
65,537131,072 
17 
255.255.255.128 or /25 
126 
131,073262,144 
18 
255.255.255.192 or /26 
62 
262,145524,288 
19 
255.255.255.224 or /27 
30 
524,2891,048,576 
20 
255.255.255.240 or /28 
14 
1,048,5772,097,152 
21 
255.255.255.248 or /29 
6 
2,097,1534,194,304 
22 
255.255.255.252 or /30 
2 
Table 1.17 shows the subnetting of a class B network ID.
Table 1.17 Subnetting a Class B Network ID
Required Number of Subnets 
Number of Subnet Bits 
Subnet Mask 
Number of Hosts per Subnet 

12 
1 
255.255.128.0 or /17 
32,766 
34 
2 
255.255.192.0 or /18 
16,382 
58 
3 
255.255.224.0 or /19 
8,190 
916 
4 
255.255.240.0 or /20 
4,094 
1732 
5 
255.255.248.0 or /21 
2,046 
3364 
6 
255.255.252.0 or /22 
1,022 
65128 
7 
255.255.254.0 or /23 
510 
129256 
8 
255.255.255.0 or /24 
254 
257512 
9 
255.255.255.128 or /25 
126 
5131,024 
10 
255.255.255.192 or /26 
62 
1,0252,048 
11 
255.255.255.224 or /27 
30 
2,0494,096 
12 
255.255.255.240 or /28 
14 
4,0978,192 
13 
255.255.255.248 or /29 
6 
8,19316,384 
14 
255.255.255.252 or /30 
2 
Table 1.18 shows the subnetting of a class C network ID.
Table 1.18 Subnetting a Class C Network ID
Required Number of Subnets 
Number of Subnet Bits 
Subnet Mask 
Number of Hosts per Subnet 

12 
1 
255.255.255.128 or /25 
126 
34 
2 
255.255.255.192 or /26 
62 
58 
3 
255.255.255.224 or /27 
30 
916 
4 
255.255.255.240 or /28 
14 
1732 
5 
255.255.255.248 or /29 
6 
3364 
6 
255.255.255.252 or /30 
2 
Step 2: Enumerating Subnetted Network IDs
Based on the number of host bits you use for your subnetting, you must list the new subnetted network IDs. There are two main approaches:

Binary—List all possible combinations of the host bits chosen for subnetting and convert each combination to dotted decimal notation.

Decimal—Add a calculated increment value to each successive subnetted network ID and convert to dotted decimal notation.
Either method produces the same result: the enumerated list of subnetted network IDs.
Note
There are a variety of documented shortcut techniques for subnetting. However, they only work under a specific set of constraints (for example, only up to 8 bits of a classbased network ID). The following methods described are designed to work for any subnetting situation (classbased, more than 8 bits, supernetting, variable length subnetting).
To create the enumerated list of subnetted network IDs using the binary method

Based on n , the number of host bits chosen for subnetting, create a threecolumn table with 2 n entries. The first column is the subnet number (starting with 1), the second column is the binary representation of the subnetted network ID, and the third column is the dotted decimal representation of the subnetted network ID.
For each binary representation, the bits of the network ID being subnetted are fixed to their appropriate values and the remaining host bits are set to all 0's. The host bits chosen for subnetting vary. 
In the first table entry, set the subnet bits to all 0's and convert to dotted decimal notation. The original network ID is subnetted with its new subnet mask.

In the next table entry, increase the value within the subnet bits.

Convert the binary result to dotted decimal notation.

Repeat steps 3 and 4 until the table is complete.
For example, create a 3bit subnet of the private network ID 192.168.0.0. The subnet mask for the new subnetted network IDs is 255.255.224.0 or /19. Based on n = 3, construct a table with 8 (= 2 3 ) entries. The entry for subnet 1 is the all 0's subnet. Additional entries in the table are successive increments of the subnet bits, as shown in Table 1.19. The host bits used for subnetting are underlined.
Table 1.19 Binary Subnetting Technique for Network ID 192.168.0.0
Subnet 
Binary Representation 
Subnetted Network ID 

1 
11000000.10101000. 000 00000.00000000 
192.168.0.0/19 
2 
11000000.10101000. 001 00000.00000000 
192.168.32.0/19 
3 
11000000.10101000. 010 00000.00000000 
192.168.64.0/19 
4 
11000000.10101000. 011 00000.00000000 
192.168.96.0/19 
5 
11000000.10101000. 100 00000.00000000 
192.168.128.0/19 
6 
11000000.10101000. 101 00000.00000000 
192.168.160.0/19 
7 
11000000.10101000. 110 00000.00000000 
192.168.192.0/19 
8 
11000000.10101000. 111 00000.00000000 
192.168.224.0/19 
To create the enumerated list of subnetted network IDs using the decimal method

Based on n , the number of host bits chosen for subnetting, create a threecolumn table with 2 n entries. The first column is the subnet number (starting with 1), the second column is the decimal (Base 10 numbering system) representation of the 32bit subnetted network ID, and the third column is the dotted decimal representation of the subnetted network ID.

Convert the network ID ( w.x.y.z ) being subnetted from dotted decimal notation to N , a decimal representation of the 32bit network ID:
N = w *16777216 + x *65536 + y *256 + z 
Compute the increment value I based on h , the number of host bits remaining:
I = 2 h 
In the first table entry, the decimal representation of the subnetted network ID is N and the subnetted network ID is w.x.y.z with its new subnet mask.

In the next table entry, add I to the previous table entry's decimal representation.

Convert the decimal representation of the subnetted network ID to dotted decimal notation ( W.X.Y.Z ) through the following formula (where s is the decimal representation of the subnetted network ID):
W = INT( s /16777216)
X = INT(( s mod(16777216))/65536)
Y = INT(( s mod(65536))/256)
Z = s mod(256)
INT( ) denotes integer division, mod( ) denotes the modulus, the remainder upon division. 
Repeat steps 5 and 6 until the table is complete.
For example, create a 3bit subnet of the private network ID 192.168.0.0. Based on n = 3, construct a table with 8 entries. The entry for subnet 1 is the all 0's subnet. N , the decimal representation of 192.168.0.0, is 3232235520, the result of 192*16777216 + 168*65536. Because there are 13 host bits remaining, the increment I is 2 13 = 8192. Additional entries in the table are successive increments of 8192 as shown in Table 1.20.
Table 1.20 Decimal Subnetting Technique for Network ID 192.168.0.0
Subnet 
Decimal Representation 
Subnetted Network ID 

1 
3232235520 
192.168.0.0/19 
2 
3232243712 
192.168.32.0/19 
3 
3232251904 
192.168.64.0/19 
4 
3232260096 
192.168.96.0/19 
5 
3232268288 
192.168.128.0/19 
6 
3232276480 
192.168.160.0/19 
7 
3232284672 
192.168.192.0/19 
8 
3232292864 
192.168.224.0/19 
Note
RFC 950 forbade the use of the subnetted network IDs where the bits being used for subnetting are set to all 0's (the allzeros subnet ) and all 1's (the allones subnet ). The allzeros subnet caused problems for early routing protocols and the allones subnet conflicts with a special broadcast address called the allsubnets directed broadcast address.
However, RFC 1812 now permits the use of the allzeros and allones subnets in a CIDRcompliant environment. CIDRcompliant environments use modern routing protocols that do not have a problem with the allzeros subnet and the allsubnets directed broadcast is no longer relevant.
The allzeros and allones subnets may cause problems for hosts or routers operating in a classful mode. Before you use the allzeros and allones subnets, verify that they are supported by your hosts and routers. Windows 2000 and Windows NT support the use of the allzeros and allones subnets.
Step 3: Enumerating IP Addresses for Each Subnetted Network ID
Based on the enumeration of the subnetted network IDs, you must now list the valid IP addresses for new subnetted network IDs. To list each IP address individually would be too tedious. Instead, enumerate the IP addresses for each subnetted network ID by defining the range of IP addresses (the first and the last) for each subnetted network ID. There are two main approaches:

Binary—Write down the first and last IP address for each subnetted network ID and convert to dotted decimal notation.

Decimal—Add values incrementally, corresponding to the first and last IP addresses for each subnetted network ID and convert to dotted decimal notation.
Either method produces the same result: the range of IP addresses for each subnetted network ID.
To create the range of IP addresses using the binary method

Based on n , the number of host bits chosen for subnetting, create a threecolumn table with 2 n entries. The first column is the subnet number (starting with 1), the second column is the binary representation of the first and last IP address for the subnetted network ID, and the third column is the dotted decimal representation of the first and last IP address of the subnetted network ID. Alternately, add two columns to the previous table used for enumerating the subnetted network IDs.

For each binary representation, the first IP address is the address in which all the host bits are set to 0 except for the last host bit. The last IP address is the address in which all the host bits are set to 1 except for the last host bit.

Convert the binary representation to dotted decimal notation.

Repeat steps 2 and 3 until the table is complete.
For example, the range of IP addresses for the 3 bit subnetting of 192.168.0.0 is shown in Table 1.21. The bits used for subnetting are underlined.
Table 1.21 Binary Enumeration of IP Addresses
Subnet 
Binary Representation 
Range of IP Addresses 

1 
11000000.10101000. 000 00000.00000001  11000000.10101000. 000 11111.11111110 
192.168.0.1  192.168.31.254 
2 
11000000.10101000. 001 00000.00000001  11000000.10101000. 001 11111.11111110 
192.168.32.1  192.168.63.254 
3 
11000000.10101000. 010 00000.00000001  11000000.10101000. 010 11111.11111110 
192.168.64.1  192.168.95.254 
4 
11000000.10101000. 011 00000.00000001  11000000.10101000. 011 11111.11111110 
192.168.96.1  192.168.127.254 
5 
11000000.10101000. 100 00000.00000001  11000000.10101000. 100 11111.11111110 
192.168.128.1  192.168.159.254 
6 
11000000.10101000. 101 00000.00000001  11000000.10101000. 101 11111.11111110 
192.168.160.1  192.168.191.254 
7 
11000000.10101000. 110 00000.00000001  11000000.10101000. 110 11111.11111110 
192.168.192.1  192.168.223.254 
8 
11000000.10101000. 111 00000.00000001  11000000.10101000. 111 11111.11111110 
192.168.224.1  192.168.255.254 
To create the range of IP addresses using the decimal method

Based on n , the number of host bits chosen for subnetting, create a threecolumn table with 2 n entries. The first column is the subnet number (starting with 1), the second column is the decimal representation of the first and last IP address for the subnetted network ID, and the third column is the dotted decimal representation of the first and last IP address of the subnetted network ID. Alternately, add two columns to the previous table used for enumerating the subnetted network IDs.

Compute the increment value J based on h , the number of host bits remaining:
J = 2 h  2 
For each decimal representation, the first IP address is N + 1 where N is the decimal representation of the subnetted network ID. The last IP address is N + J .

Convert the decimal representation of the first and last IP addresses to dotted decimal notation ( W.X.Y.Z ) through the following formula (where s is the decimal representation of the first or last IP address):
W = INT( s /16777216)
X = INT(( s mod(16777216))/65536)
Y = INT(( s mod(65536))/256)
Z = s mod(256)
INT( ) denotes integer division, mod( ) denotes the modulus, the remainder upon division. 
Repeat steps 3 and 4 until the table is complete.
For example, the range of IP addresses for the 3bit subnetting of 192.168.0.0 is shown in Table 1.22. The increment J is 2 13  2 = 8190.
Table 1.22 Decimal Enumeration of IP Addresses
Subnet 
Decimal Representation 
Range of IP Addresses 

1 
3232235521  3232243710 
192.168.0.1  192.168.31.254 
2 
3232243713  3232251902 
192.168.32.1  192.168.63.254 
3 
3232251905  3232260094 
192.168.64.1  192.168.95.254 
4 
3232260097  3232268286 
192.168.96.1  192.168.127.254 
5 
3232268289  3232276478 
192.168.128.1  192.168.159.254 
6 
3232276481  3232284670 
192.168.160.1  192.168.191.254 
7 
3232284673  3232292862 
192.168.192.1  192.168.223.254 
8 
3232292865  3232301054 
192.168.224.1  192.168.255.254 