Please Whitelist This Site?

I know everyone hates ads. But please understand that I am providing premium content for free that takes hundreds of hours of time to research and write. I don't want to go to a pay-only model like some sites, but when more and more people block ads, I end up working for free. And I have a family to support, just like you. :)

If you like The TCP/IP Guide, please consider the download version. It's priced very economically and you can read all of it in a convenient format without ads.

If you want to use this site for free, I'd be grateful if you could add the site to the whitelist for Adblock. To do so, just open the Adblock menu and select "Disable on tcpipguide.com". Or go to the Tools menu and select "Adblock Plus Preferences...". Then click "Add Filter..." at the bottom, and add this string: "@@||tcpipguide.com^$document". Then just click OK.

Thanks for your understanding!

Sincerely, Charles Kozierok
Author and Publisher, The TCP/IP Guide

NOTE: Using software to mass-download the site degrades the server and is prohibited.If you want to read The TCP/IP Guide offline, please consider licensing it. Thank you.

Subnetting
divides an organization's network into a two-level structure of subnets
and hosts. This division is entirely internal and hidden from all other
organizations on the Internet. One of the many advantages of this is
that each organization gets to make their own choice about how to divide
the classful host ID into subnet ID and host ID.

In a non-subnetted classful
environment, routers
use the first octet of the IP address
to determine what the class is of the address, and from this they know
which bits are the network ID and which are the host ID. When we use
subnetting, these routers also need to know how that host ID is divided
into subnet ID and host ID. However, this division can be arbitrary
for each network. Furthermore, there is no way to tell how many bits
belong to each simply by looking at the IP address.

In a subnetting environment, the
additional information about which bits are for the subnet ID and which
for the host ID must be communicated to devices that interpret IP addresses.
This information is given in the form of a 32-bit binary number called
a subnet mask. The term mask comes from the binary
mathematics concept called bit masking. This is a technique where
a special pattern of ones and zeroes can be used in combination with
boolean functions such as AND and OR to select or clear
certain bits in a number. I
explain bit masking in the background section on binary numbers and
mathematics.

Function of the Subnet Mask

There's something about subnet masks
that seems to set people's hair on end, especially if they aren't that
familiar with binary numbers. However, the idea behind them is quite
straight-forward. The mask is a 32-bit number, just as the IP address
is a 32-bit number. Each of the 32 bits in the subnet mask corresponds
to the bit in the IP address in the same location in the number. The
bits of the mask in any given subnetted network are chosen so that the
bits used for either the network ID or subnet ID are ones, while the
bits used for the host ID are zeroes.

Key Concept: The subnet mask is a 32-bit binary number that accompanies an IP address. It is created so that it has a one bit for each corresponding bit of the IP address that is part of its network ID or subnet ID, and a zero for each bit of the IP addresss host ID. The mask thus tells TCP/IP devices which bits in that IP address belong to the network ID and subnet ID, and which are part of the host ID.

Why bother doing this with a 32-bit
binary number? The answer is the magic of boolean
logic. We use the subnet mask by applying
the boolean AND function between it and the IP address. For each
of the 32 bit pairs in the IP address and subnet mask we
employ the AND function, the output of which is 1 only if both
bits are 1. What this means in practical terms is the following, for
each of the 32 bits:

Subnet Bit Is A One: In this case, we
are ANDing either a 0 or 1 in the IP address with a 1. If the
IP address bit is a 0, the result of the AND will be 0, and if it is
a 1, the AND will be 1. In other words, where the subnet bit is a
1, the IP address is preserved unchanged.

Subnet Bit Is A Zero: Here, we are ANDing
with a 0, so the result is always 0 regardless of what the IP address
is. Thus, when the subnet bit is a 0, the IP address bit is always
cleared to 0.

So, when we use the subnet mask on
an IP address, the bits in the network ID and subnet ID are left intact,
while the host ID bits are removed. Like a mask that blocks part of
your face but lets other parts show, the subnet mask blocks some of
the address bits (the host bits) and leaves others alone (the network
and subnet bits). A router that performs this function is left with
the address of the subnet. Since it knows from the class of the network
what part is the network ID, it also knows what subnet the address is
on.

Key Concept: To use a subnet mask, a device performs a boolean AND operation between each bit of the subnet mask and each corresponding bit of an IP address. The resulting 32-bit number contains only the network ID and subnet ID of the address, with the host ID cleared to zero.

If you find The TCP/IP Guide useful, please consider making a small Paypal donation to help the site, using one of the buttons below. You can also donate a custom amount using the far right button (not less than $1 please, or PayPal gets most/all of your money!) In lieu of a larger donation, you may wish to consider purchasing a download license of The TCP/IP Guide. Thanks for your support!