IP Addressing and Subnet Masking
IP Addressing and Subnet Masking
IP Addressing and Subnet Masking
IP addresses are 32 bits long and are represented as a quad octet set. Each octet represents 1
byte (8 bits) and has a range of 0-255 for 256 values ( 2 8 = 256 ). IP networks are divided into classes,
with each class having a network ID and host range. Each class uses bits from the first octet as part of
the network ID and depending on the network class can use up to two other octets for the network ID with
the remaining octets reserved for hosts on the network. For example, class A networks use the first octet
as the network range and the other three octets are for hosts on the networks and class C networks use
the first three octets from the left as the network ID, leaving only one octet available for hosts. The
Network classes are divided into classes as follows.
IP Address Classes
First Octet's First Octet's
Default Subnet
Class Range Binary Network Host
Mask
Decimal Range
Network.Host.Host.Host
00000000 -
A 0-126 Example 255.0.0.0
01111110
10.128.22.100
Network.Network.Host.Host
10000000 -
B 128-191 Example 255.255.0.0
10111111
172.12.15.65
Network.Network.Network.Host
11000000 -
C 192-223 Example 255.255.255.0
11011111
209.38.1.2
Some IP addresses are reserved for special use and are not to be used as networks.
Reserved IP Addresses
Address Use
IP Network addressing
This table has one example with the other fields left blank for your practice.
199.2.2.10
189.88.25.1
16.12.1.84
145.1.40.2
221.220.21.20
(255.255.255.192) = (11111111.1111111.1111111.11000000)
1. (22)-2 = 2 Subnets
Class A
Network Bits Subnet Mask Number of Subnets Number of Hosts
/8 255.0.0.0 0 16777214
Class B
Class C
Class C
Number of Class C
CIDR Block Supernet Mask Number of Hosts
Addresses
The first thing you must know is that the common number system used world wide
is the decimal system (otherwise known as base 10). What makes the decimal
system a base 10 system is that it is based on grouping numbers by 10's. It is
believed that the system evolved because we have ten fingers and ten toes which
over the years we have used for counting. I use mine all the time (grin). We name
the ten digits: zero, one, two, three, four, five, six, seven, eight and nine.
The decimal system has a 1's place, a 10's place, a 100's place, a 1000's place
and so on. We say the number places are grouped by 10's because multiplying
each number place by 10 gives you the next number place. So: 1x10=10
(the 10's place), 10x10=100 (the 100's place), 100x10=1000 (the 1000's place)
etc.
Let's look at the decimal number 103 by place.
Thus: 100+0+3=103
By now you probably feel like you have attended Kindergarten for the second time
in your life? Sorry about that but it is very important that you understand the
concept of what a number system is, and what it is based on before we look at
binary.
[Understanding binary - base 2]
Binary is a base 2 system, and thus groups numbers by 2's and not by 10's like the
decimal system. We name the two digits: zero and one. The binary system has a
1's place, a 2's place, a 4's place, an 8's place, a 16's place and so on. We say the
number places are grouped by 2's because multiplying each number place by 2
gives you the next number place. So: 1x2=2 (the 2's place), 2x2=4 (the 4's
place), 4x2=8 (the 8's place), 8x2=16 (the 16's place) etc.
Let's look at the decimal number Let's look at the decimal number 103 in binary
format:
Thus: 0+64+32+0+0+4+2+1=103
Okay, Let's test your skills. Here is a list of binary numbers, try converting them to
decimal and check your answers at the end of this post.
10000000
11000000
11100000
01000000
10000011
10010001
11111111
If you were able to convert these numbers to decimal then congratulations! You're
ready to move on to the next section.
Now that you understand what binary is, let's have a look at our two subnet masks
from the beginning of my post:
192.168.1.0 / 255.255.255.0
192.168.1.0/24
The concept of a subnet mask is simple. You have a network and you have hosts on
the network (anything with an IP address is a host). The subnet mask
determines what portion of the TCP/IP address represents your network
and what portion can be used for your hosts. Because I am a simple person, I
think of it like this; The network number represents the street I live on, and the
host portion is used for the numbers on all the houses on my street.
A subnet mask of 255.255.255.0 means that the first three octets of the address
will be used for the network, and thus our network number is 192.168.1. This
means we can have 254 computers on this network, because the fourth octet is not
being used by the network portion of the address. We know this because of the 0 in
the subnet mask (255.255.255.0).
We call each of the number sections an octet because we think of them in binary,
and there are eight possible bits in each section. Eight bits is an octet. 11111111
in binary is 255 in decimal (did you do the conversions?). So our decimal subnet
mask 255.255.255.0 displayed in binary is going to be:
11111111.11111111.11111111.00000000
If you count all the ones, you will find that there are 24 of them. Now look at the
subnet mask examples again.
192.168.1.0/255.255.255.0
192.168.1.0/24
Do you see why both subnet masks are the same? The number 24 is the number of
bits used in the network portion of the address, and is short-hand for writing the
address/subnet mask combination. It becomes important to understand this when
you start dividing your network into multiple sub networks.
[Understanding Subnetting]
Before reading this section, you should have a good understanding of what a
subnet mask is and how binary bits represent the subnet mask.
Simply put, subnetting is dividing your network into multiple sub networks. To
go back to my silly example about houses and streets, subnetting gives you
multiple streets in your neighborhood.
There are two methods for dividing your network into multiple sub networks; One is
to simply change your network numbers keeping the same subnet mask. The other
is to subnet your network into smaller sub networks.
Example:
192.168.1.0/255.255.255.0
192.168.2.0/255.255.255.0
Doing this would give you two separate networks with 254 hosts per network.
This is a very common method of dealing with multiple networks. However, back in
the good old days you had to pay for every IP address you used, and if you had 25
computers on your network you probably would not want to pay for 254 addresses!
The answer to the problem is...subnetting.
Subnetting a network:
Subnetting is when you use bits from the host portion of your address as
part of your network number. This let's you subdivide your network at the cost
of host addresses, which is great if you're paying for every host IP address. It will
save you money because you pay for fewer TCP/IP addresses. Confused? Here is
where understanding binary is important.
Lets look at a new subnet mask:
255.255.255.224
As you can see in the fourth octet, some of the host portion of this subnet mask is
now being used for part of the network address. Which means we are now using
some of the binary bits in the fourth octet for our network numbers, and
that gives us fewer hosts than our old mask (which gave us 254), but gives us
more networks (which is why we call it subnetting).
How can we tell how many networks and hosts per network this new subnet mask
will give us? Well... we shall have to use some of our newly acquired binary skills.
The first task is to find out how many bits in the fourth octet are being used?
The decimal number is 224, what is the decimal number 224 as represented in
binary?
Thus: 128+64+32+0+0+0+0+0=224
We now know that three bits from the fourth octet are used. How can we tell how
many sub networks we're going to have? This requires some math- sorry. The
formula is: 2n-2, where n is the number of bits being used from the host portion of
our subnet mask.
Note: We subtract 2 from the total because you do not count all 0's or all 1's.
In simpler terms:
(2x2x2)-2=6
So our network is sub divided into 6 networks. Next, we want to know what the
network numbers are, and how many hosts we can have on each of the 6
networks?
What is the first subnet? Let's have a look at the bits in our fourth octet again. The
bit that gives us the answer is the (1) closest to the first zero, and in this case it is
the 3rd bit from the left.
11100000
The 3rd bit will start our first network, and the 3rd bit is in the 32's place
(remember binary). Start adding the value 32 to itself six times to get the six
network numbers.
Note: A quicker way to find our starting network number is to subtract our mask
from 256.
256-224=32
32
64
96
128
160
192
192.168.1.32
192.168.1.64
192.168.1.96
192.168.1.128
192.168.1.160
192.168.1.192
The host addresses will fall between the network numbers, so we will have 30 hosts
per network. You're probably wondering why it's not 31? The answer is that the
last address of each subnet is used as the broadcast address for that subnet.
Example:
Subnet:192.168.1.32 / 255.255.255.224
Address Range: 192.168.1.33 through 192.168.1.62 (30 hosts)
Subnet Broadcast Address:192.168.1.63
Quiz:
Let's test your skills- write the address range and broadcast address for the
following subnet. You will find the answer at the end of this post.
If we we're paying for our TCP/IP addresses, we would only pay for one network
and host combination, thus paying for 30 hosts and not 254. It could mean some
real savings, it also frees up the remaining addresses for other organizations to
use.
How many bits are used from the host portion? To find this out, we need to know
how the decimal number 240 is represented in binary.
So four bits are taken from the host portion of our mask. We do the same math as
before:
24-2=14
In simpler terms:
(2x2x2x2)-2=14
We will have 14 sub networks, and what will the network numbers be? Look at
the fourth bit, it's in the 16's place:
11110000
Note: A quicker way to find our starting network number is to subtract the value of
our mask from 256. So: 256-240=16
16,32,48,64,80,96,112,128,144.160,176,192,208,224
192.168.1.16
192.168.1.32
192.168.1.48
192.168.1.64
192.168.1.80
192.168.1.96
192.168.1.112
192.168.1.128
192.168.1.144
192.168.1.160
192.168.1.176
192.168.1.192
192.168.1.208
192.168.1.224
The host addresses fall between the network numbers. So we will have 14 host
addresses on each of our 14 sub networks (remember: the last or 15th address is
the broadcast address for that subnet).
If you had a small company with 10 hosts and needed to have a static IP address
for all of your hosts, you would be assigned a network/subnet mask and a valid IP
address range.
Network: 205.112.10.16/.255.255.255.240
Address Range: 205.112.10.17 through 205.112.10.30
Subnet Broadcast Address: 205.112.10.31
10000000 = 128
11000000 = 192
11100000 = 224
01000000 = 64
10000011 = 131
10010001 = 145
11111111 = 255
Subnet:192.168.1.128 / 255.255.255.224
Address Range: 192.168.1.129 through 192.168.1.158
Subnet Broadcast Address: 192.168.1.159
The netmask shorthand notation (the /##'s) just specifies how many 1's to _keep_ to
determine the _network_ address of an interface. Each octet has eight 1's. With no
masking, that's "11111111.11111111.11111111.11111111". The netmask would be
0.0.0.0 or just /0, meaning look at all the ones in all the octets -- the entire Internet.
Again, we generally do not want a NIC to listen for the entire Internet.
The netmask is called a "mask" because it also tells how many 1's on the left-hand side
to mask-out when figuring out a specific _host_ address.
For a "Class C" or "8-bit" subnet (32-24=8), the network interfaces only care about the
last octet. So we use 255.255.255.0, or its shorthand equivalent, /24.
For a Class B or "16-bit" subnet (32-16=16), we need the details of the last two octets.
So we use 255.255.0.0, or /16.
Answer:
213
-- =
213 - 9 = 24 = 16
29
With a Class B of 65+ thousand host addresses (256x256) to burn up, efficiency isn't
often much of an issue for a "private" subnet. However, note that the 7-bit (32-25=7)
subnets 172.16.2.128/25 and 172.16.3.128/25 are going unused. Sticking to "plain jane"
8-bit ("Class C") subnetting would simplify life. On the private network, we'd have 254
possible 8-bit subnets.
The reverse is a little bit like long division. For each octet, just keep grabbing the biggest
power of two in whatever's left till we get to 0.