Elf Qrin's Lair



Subnet Masking and Addressing Quick Intro
=========================================
(c) 1999 Mixter		members.xoom.com/i0wnu

Ok, this file explains subnet addressing which is useful
if you run a scanner, a firewall, a router or anything
else that is bound to IP subnet addressing. Note that
this only describes IPv4 subnets.

Reading binary values
=====================

Normally, you read binary numbers bytewise (8 bit wise).
Start at the last bit, bit 0.
If it is 1, add 2^0 to your number, else add 0.
Then the next bit, bit 1,
If it is 1, add 2^1 (2) to your number,
If bit 3 is 1 add 2^2 (4) to your number,
if bit 4 is 1 add 2^3 (8) to your number ...
if bit 8 is 1 add 2^7 (128) to your number.
You see, the base is always 2 because it can be either 0 or 1.
Example 1: 10100100 = 2^7+0+2^5+0+0+0+2^2+0+0 = 164
Example 2: 11111111 = 2^7+2^6+2^5+2^4+2^3+2^2+2^1+2^0 = 255
Thats it! Now to subnet addressing.

-----------------------------------

When you state a host including a subnet (example: nmap),
you do it like this: 1.2.3.4/24,
where /24 is the subnet. Lets have a look at what this means:
an IP address is a 32 bit address. It is divided into
4 bytes (each 8 bits meaning they can be 0 to 255) in general
notation:
00000001 00000010 00000011 00000100  =  "1.2.3.4"
now, IP uses one part of this address to specify which Net it is
on. Most of the time, this is a physical Net like an ethernet
LAN that is linked to the internet. Nets that link to the internet
get dedicated IPs for each of their hosts from the IANA.org.
/24 means that the first 24 bits are the Net address and
the remaining 8 bits are the Host address. This looks like this:
Net: 000000010000001000000011 Host: 00000100
Meaning, we are on the net 1.2.3.0 (0 used as a wildcard here) and
on the host 4 of 256.
SUBNET MASK: In this case, the subnet mask would be 255.255.255.0.
A subnet mask is created simply by filling all NET address bits with 1
and the HOST bits with 0. (11111111 = 255). There are 4 "Classes" on the
Internet, which are the standard Subnets.
Class A: "0" + 7 net bits + 24 host bits, hosts 0.0.0.0 to 126.255.255.255
Net IDs: 0 0000000 to 0 1111111 (which is 127 => 127.0.0.0 reserved for local loopback)
Class B: "10" + 14 net bits + 14 host bits, hosts 128.1.0.0 to 191.254.0.0
Net IDs: 10 00000000000000 to 10 11111111111111
Class C: "110" + 21 net bits(=24) + 8 host bits, hosts 192.0.1.0 to 223.255.254
Class D: "1110" + 28 bits for multicast addresses (reserved), hosts 224.0.0.0 to 239.255.255.254
Class E: "1111" + 28 bits for unused addresses ("martians"), hosts 240.0.0.1 to 255.255.255.254
0.0.0.0/255.255.255.255 = broadcast packets (0 and 255 are used for "all hosts")


One more example:

If you address a subnet with the mask:
255.255.192.0 (which is 111111111111111111 00000000000000), you
can specify a subnet with: 190.136.64.0/18 (18 net id bits)
which would address 190.136.64.0 to 190.136.127.255 or:
101111101000100001 00000000000000 to 101111101000100001 11111111111111.
Other nets on that subnet would be:
          Subnet mask 190.136.0.0/18  Net ID  Host ID
190.136.0.0    1011111010001000 00 00000000000000
190.136.64.0   1011111010001000 01 00000000000000
190.136.128.0  1011111010001000 10 00000000000000
190.136.192.0  1011111010001000 11 00000000000000

Note: The first and the last subnet could not be used because Net ID 00 and 11
would be interpreted as broadcasts (like broadcast ids 0 (00000000) and 255 (11111111)).

For further info check the RFC 791 (www.internic.net/rfcs).

Mixter



Issued on Elf Qrin's Hacking Lab
Legal notices and disclaimer