Advanced IPv4 Concepts and Examples
This article is a continuation of where “IP Subnetting Basics” stopped. This includes a longer discussion of how subnetting is used to separate a larger address space into smaller pieces for more efficient assignment and routing. This will include a discussion of how to perform the binary math that is required for more complex subnetting.
So What is Binary Math?
For most people, the idea of binary math and understanding the binary numeral system is what sounds the scariest. Binary math is used for many things related to modern electronics; this is because within the system only two numbers are used: 0 and 1. All “normal” decimal numbers that people are used to can be represented but only using 0 and 1’s. Figure 1 shows a few examples of how a decimal number is represented in binary:
Figure 1 Binary Examples
Binary to Decimal Conversion
So the next big question is where did these numbers come from and what is the easiest way to convert a number from decimal to binary or binary to decimal. For many people, the conversion from binary to decimal is an easier process to understand, because of this it will be covered first. As is shown in Figure 2, each of the different binary digits, when formatted, represents a specific decimal number. When learning subnetting, the most important digits to remember and understand are the first eight.
Figure 2 Binary to Decimal Conversion Examples
As long as the person performing the conversion can do a little simple addition, they should be able to convert a binary number into decimal.
Decimal to Binary Conversion
The process of converting a decimal number into binary is considered by many to be a bit more complex as it requires more than simple addition. There is, however, no amount of math above grade school level that is required. Figure 3 shows the decimal to binary representation chart for reference; even the most experienced engineers will typically write this chart down before performing conversion.
Figure 3 Decimal to Binary (or vise versa)
The big thing to remember when converting a number from decimal to binary is that numbers should be considered from the left to right. The first number that will be shown converted from decimal to binary is 34.
Moving from the left to the right:
Is 34 < 128? Yes. This digit will be 0.
Is 34 < 64? Yes. This digit will be 0.
Is 34 < 32? No. This digit will be 1, the remainder is then considered moving forward: 34 – 32 = 2.
Is 2 < 16? Yes. This digit will be 0.
Is 2 < 8? Yes. This digit will be 0.
Is 2 < 4? Yes. This digit will be 0.
Is 2 < 2? No. This digit will be 1.At this point the remainder is 0, once this happens all remaining numbers are 0.
The completed conversion shows that 34 in binary would be 00100010.
In this second example, the number 170 will be converted from decimal to binary.
Moving from the left to the right:
Is 170 < 128? No. This digit will be 1; the remainder is 170 – 128 = 42.
Is 42 < 64? Yes. This digit will be 0.
Is 42 < 32? No. This digit will be 1; the remainder is 42 – 32 = 10.
Is 10 < 16? Yes. This digit will be 0.
Is 10 < 8? No. This digit will be 1; the remainder is 10 – 8 = 2.
Is 2 < 4? Yes. This digit will be 0.
Is 2 < 2? No. This digit will be 1; the remainder is 2 – 2 = 0 so the last digit is 0.
The completed conversion shows that 170 in binary would be 10101010.
Relating Binary Math to Subnetting
So why does a network engineer even care how to convert binary and decimal? When performing IP network planning, it is often required to understand and/or perform subnetting on a network. As an example, imagine an organization that has a C class address space that needs to be separated and assigned to 4 different separate departments. Using the C class address without subnetting would require that all of the devices in each of the departments be on the same network, for example 192.0.0.0/24.
To ensure that each department is not on the same network using only classful networks, each department would need to be assigned a separate C class address space; but what if each department only required 40 IP addresses. Using a separate classful C class address space for each department would waste several IP addresses. The solution for this is subnetting, which provides the ability to create separate classless address spaces using a single classful address space. It does this by ‘borrowing’ host bits and using them to create the subnetworks.
The first thing that must be covered is what a subnet mask is and how are they represented. Typically, a subnet mask is seen notated one of two ways: either using a decimal number (255.255.255.192) or using CIDR notation (/26). The subnet mask is used to calculate which of the bits are used for the network, subnetwork and host ranges when performing subnetting; this is shown in Figure 4.
Figure 4 Subnet Mask Notation Example
Subnet masks will always be written in binary (from left to right) as a group of ‘1’s followed by a group of ‘0’s, all of the digits that are represented with a ‘1’ indicate a network (or subnet) bit and all of the digits that are represented with a ‘0’ indicate a host bit.
Figure 5 below shows an example which takes the 192.0.0.0/24 network and splits it into 4 different equal subnetworks. To separate the single C class address space that contains 256 total addresses and get four equal address ranges requires the ‘borrowing’ of 2 of the host bits for the subnetwork, this ‘borrowing’ is always done from left to right. So how was the number of ‘borrowed’ bits calculated? The binary math section above shows that a single binary digit can represent 2 different values: ‘0’ and ‘1’. So to achieve 4 different values a second bit is required, this is shown in binary as ‘00’, ’01’, ‘10’, ‘11’. The formula that is used to calculate how many bits to borrow is 2x where x is the number of ‘borrowed’ subnet bits, for example 22 = 4. These ‘borrowed’ host bits are taken from left to right and are also shown in Figure 5.
Figure 5 Subnetting Example
Once these 2 bits are ‘borrowed’ that leaves each subnetwork with 6 bits for host addressing providing a total of 64 addresses.
Calculating IP Network Ranges
The next thing that a future engineer needs to learn is how to take the information provided above and find the proper IP addresses to use and to break up these address ranges into useable addresses. An example calculation of the subnetwork boundaries is shown in Figure 5 above, giving the subnetwork address for each of the 4 ranges: 192.0.0.0, 18.104.22.168, 22.214.171.124 and 126.96.36.199. The first (subnet address) and last (subnet broadcast address) network addresses in a range are not able to be assigned to hosts and are always reserved. Figure 6 below shows an example of how the subnet and broadcast addresses are calculated for the 192.0.0.0/26 network.
Figure 6 Subnet Range Reserved Addresses
To calculate the total number of usable hosts in a range use the 2x – 2 formula, where x is the number of host bits. Using a subnet mask of 255.255.255.192 (as shown in the above examples), the total number of host bits is 6, 26 – 2 = 62 total assignable host addresses in each subnetwork. Figure 7 shows the first and last usable addresses for a range starting at 192.0.0.0 and ending at 188.8.131.52.
Figure 7 First and Last Usable Address Example
It is important for any new network engineer to not get scared away by the math, and practice as much as possible using simple networks (C class or shorter); once these are mastered, move up to B class and so on. Take it slow and remember that the math is rather simple when you look at the calculations; the trick is to ignore the whole network and to just calculate the numbers at the lowest levels first. After these are mastered, thinking of the network as a whole becomes less overwhelming and easier to perceive. The next article in this series, “Creating a Basic IP Addressing Scheme” takes a look at a real world example, using a sample organization with defined addressing requirements.