This comes up again and again and I wanted to write a post which tries to simplify this as much as possible as it’s continually been a useful skill to have as well as a reference when out and about if needed 🙂
An IP (Internet Protocol) address is a unique identifier for a node or host connection on an IP network. An IP address is a 32 bit binary number usually represented as 4 decimal values, each representing 8 bits, in the range 0 to 255 (known as octets) separated by decimal points. This is known as “dotted decimal” notation
Address classes
Class | Description | Binary | Decimal | No of Networks | Number of addresses |
A | Universal Unicast | 0xxx | 1-126 | 27 = 128 | 224 = 16777216 |
B | Universal Unicast | 10xx | 128-191 | 214 = 16384 | 216 = 65536 |
C | Universal Unicast | 110x | 192-223 | 221 = 2097152 | 28 = 256 |
D | Multicast | 1110 | 224-239 | tbc | tbc |
E | Not used | 1111 | 240-254 | tbc | tbc |
Example
X is the network address and n is the node address on that network
Class | Network and Node Address |
A | XXXXXXXX.nnnnnnnn.nnnnnnnn.nnnnnnnn |
B | XXXXXXXX.XXXXXXXX.nnnnnnnn.nnnnnnnn |
C | XXXXXXXX.XXXXXXXX.XXXXXXXX.nnnnnnnn |
Private IP Addresses
These are non routable on the internet and are assigned as internal IP Addresses within a company/Private network
Address Range | Subnet Mask |
10.0.0.0 – 10.255.255.255 | 255.0.0.0 |
172.16.0.0 – 172.31.255.255 | 255.240.0.0 |
192.168.0.0 to 192.168.255.255 | 255.255.0.0 |
APIPA
APIPA is a DHCP failover mechanism for local networks. With APIPA, DHCP clients can obtain IP addresses when DHCP servers are non-functional. APIPA exists in all modern versions of Windows except Windows NT.
When a DHCP server fails, APIPA allocates IP addresses in the private range
169.254.0.1 to 169.254.255.254.
Clients verify their address is unique on the network using ARP. When the DHCP server is again able to service requests, clients update their addresses automatically.
Binary Finary
A major stumbling block to successful subnetting is often a lack of understanding of the underlying binary math. IP Addressing is based on the Power of 2 binary maths as seen below
x | 2x | 2x |
0 | 20 | 1 |
1 | 21 | 2 |
2 | 22 | 4 |
3 | 23 | 8 |
4 | 24 | 16 |
5 | 25 | 32 |
6 | 26 | 64 |
7 | 27 | 128 |
An IP Address actually looks like the below when you write it out
10001100. 10110011.11011100.11001000
140 | 179 | 220 | 200 |
10001100 | 10110011 | 11011100 | 11001000 |
Each numerical value for the 8 1’s and 0’s can be seen in the table below. You have to add together each value in the top column where it is 1 in the octet to reach the binary address number.
So for E.g 140 above in the first octet
128 + 8+ 4 = 140
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
Subnet Masks
Subnetting an IP Network can be done for a variety of reasons, including organization, use of different physical media (such as Ethernet, FDDI, WAN, etc.), preservation of address space, and security. The most common reason is to control network traffic. In an Ethernet network, all nodes on a segment see all the packets transmitted by all the other nodes on that segment. Performance can be adversely affected under heavy traffic loads, due to collisions and the resulting retransmissions. A router is used to connect IP networks to minimize the amount of traffic each segment must receive
Applying a subnet mask to an IP address allows you to identify the network and node parts of the address. The network bits are represented by the 1s in the mask, and the node bits are represented by the 0s.
Default Subnet Masks
Class | Address | Binary Address |
Class A | 255.0.0.0 | 11111111.00000000.00000000.00000000 |
Class B | 255.255.0.0 | 11111111.11111111.00000000.00000000 |
Class C | 255.255.255.0 | 11111111.11111111.11111111.00000000 |
Performing a bitwise logical AND operation between the IP address and the subnet mask results in the Network Address or Number.
For example, using our test IP address and the default Class B subnet mask and doing the AND operation, we get
IP Address | 10001100.10110011.11110000.11001000 | 140.179.220.200 |
Subnet Mask | 11111111.11111111.00000000.00000000 | 255.255.0.0 |
Network Address | 10001100.10110011.00000000.00000000 | 140.179.0.0 |
If both operands have nonzero values, the result has the value 1. Otherwise, the result has the value 0 so if both the IP Address and the subnet Mask have 1’s in the same part of the octet, the result is a 1. Convert to binary to find your network address.
Subnetting
In order to subnet a network, extend the natural mask using some of the bits from the host ID portion of the address to create a subnetwork ID. See the Submask row below in red
In this example we want to extend network address 204.17.5.0
IP Address | 11001100.00010001.00000101.11001000 | 204.17.5.200 |
Subnet Mask | 11111111.11111111.11111111.11100000 | 255.255.255.224 |
Network Address | 11001100.00010001.00000101.00000000 | 204.17.5.0 |
Broadcast Address | 11001100.00010001.00000101.11111111 | 204.17.5.255 |
In this example a 3 bit subnet mask was used. There are 8 (23)- 2 subnets available with this size mask however there are 2 taken for the network ID and Broadcast ID reserved addresses so 6 available subnets
The amount of bits left = 5 therefore the amount of usable addresses on this is (25)- 2 nodes = 30. (Remember that addresses with all 0’s and all 1’s are not allowed hence the -2).
So, with this in mind, these subnets have been created
Subnet addresses | Host Addresses |
204.17.5.0 / 255.255.255.224 | 1-30 |
204.17.5.32 / 255.255.255.224 | 33-62 |
204.17.5.64 / 255.255.255.224 | 65-94 |
204.17.5.96 / 255.255.255.224 | 97-126 |
204.17.5.128 / 255.255.255.224 | 129-158 |
204.17.5.160 / 255.255.255.224 | 161-190 |
204.17.5.192 / 255.255.255.224 | 193-222 |
204.17.5.224 / 255.255.255.224 | 225-254 |
CIDR Notation
Subnet Masks can also be described as slash notation as per below
Prefix Length in Slash Notation | Equivalent Subnet Mask |
/1 | 128.0.0.0 |
/2 | 192.0.0.0 |
/3 | 224.0.0.0 |
/4 | 240.0.0.0 |
/5 | 248.0.0.0 |
/6 | 252.0.0.0 |
/7 | 254.0.0.0 |
/8 | 255.0.0.0 |
/9 | 255.128.0.0 |
/10 | 255.292.0.0 |
/11 | 255.224.0.0 |
/12 | 255.240.0.0 |
/13 | 255.248.0.0 |
/14 | 255.252.0.0 |
/15 | 255.254.0.0 |
/16 | 255.255.0.0 |
/17 | 255.255.128.0 |
/18 | 255.255.192.0 |
/19 | 255.255.224.0 |
/20 | 255.255.240.0 |
/21 | 255.255.248.0.0 |
/22 | 255.255.252.0 |
/23 | 255.255.254.0 |
/24 | 255.255.255.0 |
/25 | 255.255.255.128 |
/26 | 255.255.255.192 |
/27 | 255.255.255.224 |
/28 | 255.255.255.240 |
/29 | 255.255.255.248 |
/30 | 255.255.255.252 |
Subnetting Tricks
1. How to work out your subnet range
Lets say you have a subnet Mask 255.255.255.240 (/28)
You need to do 256-240 = 16
Then your subnets are 0, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240
For the subnetwork 208 – 223 is the broadcast and 209-222 are the useable addresses on that subnet.