IP Subnetting
What is Subnetting
Subnetting is a way of partitioning a network at the IP level by dividing a block of addresses into a number of smaller sets.
100  109
110  119
120  129
The first two digits represent the subnet number (10,11,12), while the final digit gives the address within the subnet.
Since computers use binary representation (base 2) rather than decimal (base 10) an equivalent pattern only emerges if the addresses are put into their binary form and the sets are broken into powers of 2 rather than powers of 10. (See below for an explanation of binary numbers.)
Looking at the first few addresses in the set, if the numbers are broken after the fifth digit then the two subnets, 01100 and 01101, are clearly visible. (Note that the network does not split into the same subnets as above.)
Decimal 
Binary 
Subnet/address 
100 
01100100 
01100 100 
101 
01100101 
01100 101 
102 
01100110 
01100 110 
103 
01100111 
01100 111 
104 
01101000 
01101 000 
105 
01101001 
01101 001 
106 
01101010 
01101 010 
107 
01101011 
01101 011 
etc.
Since an address could be split into network address and host number at any point, the boundary for a particular network must be known. This is achieved using a subnet mask that is the same length as the address, and has ones in the subnet address position and zeroes afterwards. For the above example the subnet mask would be 11111000  five ones for the five digits of the subnet and zeroes for the remainder of the address  or equivalent to 248 in decimal.
Full Length Examples
If the principle is extended to full length IP addresses, it produces longer addresses and masks. An IP address is four bytes long and these four bytes hold both the network address and the host number within the network. The associated mask defines the extent of each part of the IP address.
Considering the IP addresses 193.62.83.10 and 193.62.83.108 and an associated mask of 255.255.255.224:
The first becomes: 
11000001 00111100 01010011 00001010 
193.62.83.10 
With a mask of 
11111111 11111111 11111111 11100000 
255.255.255.224 
ANDing gives 

Subnet address of 
11000001 00111100 01010011 00000000 
193.62.83.0 
So IP address 193.62.83.10 lies within the subnet that starts at 193.62.83.0. 

The second becomes: 
11000001 00111100 01010011 01101100 
193.62.83.108 
With a mask of 
11111111 11111111 11111111 11100000 
255.255.255.224 
ANDing gives 

Subnet address of 
11000001 00111100 01010011 01100000 
193.62.83.96 
So IP address 193.62.83.108 lies within the subnet that starts at 193.62.83.96
Note that the mask used above contains 27 ones. An alternative way of specifying the mask that is associated with an address is to append that number, which is known as the 'prefix length', to the IP address: e.g. 193.62.83.10/27
Defining Subnets
Name 
The relative position* in this address space at which this subnet starts 
The subnet mask of this subnet 
Maximum size of subnet (power of 2) 
Host IP Address range 
Faculties 
0.0.0.0 
255.255.255.128 
128 
193.62.83.1  193.62.83.126 
Administration 
0.0.0.128 
255.255.255.224 
32 
193.62.83.129  193.62.83.158 
Computing 
0.0.0.160 
255.255.255.224 
32 
193.62.83.161  193.62.83.191 
* The relative position of the first subnet is always given as 0.0.0.0, i.e., the start of the address space allocated to the college (but see note below). For each subsequent subnet the start position is selected to allow for the maximum possible number of hosts in the subnets that precede it.
NOTE: Historically the use of 'all ones' or 'all zeros' in either the subnet or the host part of the address was not allowed. The restriction on using 'all ones' in the host part remains as this represents the subnet broadcast address (i.e. 193.62.83.127 is a broadcast on 193.62.83.0/25). The restriction on the use of the 'all zeros' address may still be in place for older equipment.
The subnet mask defines the number of hosts available on a subnet. The mask 255.255.255.224 leaves five bits for the host address, which could theoretically hold 32 addresses. However, in practice there are only 30 generally available addresses on the two small subnets and 126 on the large one.
Decoding IP Addresses
The following table gives examples of IP addresses in Anycollege's small networks.
Network 
Host 

Mask 
255.255.255.224 
11111111.11111111.11111111.111 
0000 
Address (1) 
193.62.83.135 
11000001.00111100.01010011.100 
00111 
Address (2) 
193.62.83.164 
11000001.00111100.01010011.101 
00100 
Address (3) 
193.62.83.144 
11000001.00111100.01010011.100 
10000 
ANDing the mask and addresses shows clearly which subnet the IPaddress belongs to: addresses 1 and 3 belong to the subnet starting at (1000 0000) or .128; address 2 belongs to the subnet starting at (1010 0000) or .160.
The following table shows an IP address in the larger subnet. Note that the mask used is shorter, thereby allowing for more hosts.
Network 
Host 

Mask 
255.255.255.128 
11111111.11111111.11111111.1 
00000 
Address (4) 
193.62.83.96 
11000001.00111100.01010011.0 
110 0000 
ANDing the mask and address shows clearly that IP address 4 belongs to the subnet starting at (0000 0000) or .0, i.e. the 'start' of the network (but see note above for restrictions on older equipment).
RFC 1219 On the assignment of subnet numbers describes a way of flexibly allocating subnets that defers having to decide where to draw the subnet boundary.
Binary Numbers
Binary numbers use base 2 rather than base 10, which is used for decimal numbers. So rather than needing 10 characters to represent a number (various combinations of 09), the binary system needs only two (0 and 1) and similarly the position of a character indicates multiplication by powers of 2 rather than powers of 10.
So 101 in decimal means 1*100 + 0*10 + 1*1, making a hundred and one.
And 101 in binary means 1*4 + 0*2 + 1*1, making five.
The rightmost character of a binary number represents the number of ones (20), the next digit to the left the number of twos (21), the next digit the number of fours (22), and so on.
To convert binary to decimal
Identify what each position represents (work from right to left starting at 1 and multiplying by two on each left shift):
1 
1 
1 
0 
0 
1 
0 
1 
128 
64, 
32, 
16, 
8,, 
4,, 
2,, 
1,, 
Multiply and sum:
1*128 + 1*64 + 1*32 + 0*16 + 0*8 + 1*4 + 0*2 + 1*1 = 128+64+32+4+1 = 229 base 10 (decimal)
For speed, ignore the multiplication and just add the value of columns with a one in them, but the full method works for any base and is worth knowing.
To convert decimal to binary
For those familiar with it, this conversion is most quickly done using the hexadecimal system (see below). Otherwise it can be simply achieved by repeated division by two, recording the remainder each time.
Starting with 229 base 10 (decimal) so that we can check the result with the previous example:
229 / 2 = 114 remainder 1
114 / 2 = 57 remainder 0
57 / 2 = 28 remainder 1
28 / 2 = 14 remainder 0
14 / 2 = 7 remainder 0
7 / 2 = 3 remainder 1
3 / 2 = 1 remainder 1
1 / 2 = 0 remainder 1
The binary equivalent reads from the bottom up, so 229 base 10 (decimal) = 11100101 base 2 (binary).
Hexadecimal numbers use base 16 rather than base 10, which is used for decimal numbers. So rather than needing 10 characters to represent a number (various combinations of 09), the hexadecimal system needs 16 and similarly the position of a character indicates multiplication by powers of 16 rather than powers of 10.
So 
101 in decimal means 
1*100 + 0*10 + 1*1 making a hundred and one 
And 
101 in hexadecimal means 
1*256 + 0*16 + 1*1 making two hundred and fifty seven. 
The rightmost character of a hexadecimal number represents the number of ones (16^0), the next digit to the left the number of 16s (16^1), the next digit the number of 256s (22), and so on.
Since hexadecimal requires 16 characters to represent its digits rather than the 10 used for decimal notation, the first six letters of the alphabet are also used.
In addition, because 16 is a power of 2 (2^4) there is a direct relationship between hexadecimal and binary numbers: each hexadecimal digit representing a group of four binary digits as shown in the following table.
Decimal 
Binary 
Hexadecimal 
0 
0000 
0 
1 
0001 
1 
2 
0010 
2 
3 
0011 
3 
4 
0100 
4 
5 
0101 
5 
6 
0110 
6 
7 
0111 
7 
8 
1000 
8 
9 
1001 
9 
10 
1010 
A 
11 
1011 
B 
12 
1100 
C 
13 
1101 
D 
14 
1110 
E 
15 
1111 
F 
Any binary number can therefore be represented as a (much shorter and more memorable) string of hexadecimal digits, e.g. using the previous example, the binary number 11100101 appears in hexadecimal as E5 (using the conversion table above, 1110 = E, 0101 = 5).
To Convert Hexadecimal to Decimal
E (or 14)*16 + 5*1 = 224 + 5 = 229 base 10 (decimal)
To Convert Hexadecimal to Binary

Equally, the reverse conversion from the address C1.3E.53.96 to binary is a simple matter of substituting the binary equivalents from the same table  much more straightforward than converting from the decimal, 193.62.83.96.
C 
1 
3 
E 
5 
3 
9 
6 
1100 
0001 
0011 
1110 
0101 
0011 
1001 
0110 