CIDR

You use CIDR notation to get the # of IP addresses that are available in that block. It does not, however, specify where the range has to begin or end – the only requirement is that they be sequential.

Say, for example, that you wanted to assign 8 IP addresses for friends when coming to visit for a LAN party. You also want them to start at the 192.168.1.16 IP address. That means they'd get .16 through .23 as their own. Here's what the CIDR would look like:

192.168.1.16/29

The mathematical formula for determining the size of the range of IP addresses is:

2 ^ (32 - /$x)

where $x represents the /29 above.

Using that case, 32-29 is 3, so 2 to the power of 3 (or, 2x2x2) is 8.

See this table on Wikipedia for a better example.

You can move the starting around point all you want, but they are still going to be assigned the same number of IP addresses.

So, if you wanted them to have 75 through 82, here's the notation:

192.168.1.75/29

192.168.1.75 is the starting point, with the range extending to 2^(32-29), or, 2^3, or, 2x2x2, or 8.

So here's the IP addresses they'd have:

192.168.1.75
192.168.1.76
192.168.1.77
192.168.1.78
192.168.1.79
192.168.1.80
192.168.1.81
192.168.1.82

Now, let's look at expanding past the 192.168.1 subnet into 192.168.2 as well. Since you have 256 IP addresses available on the first one (192.168.1.1 through 192.168.1.255), then the next range would start at 192.168.2.1. If you wanted to add those 256 as well, 192.168.2.1 through 192.168.2.255, then you would use notation /23, for 512.

So if you wrote 192.168.1.0/23, it would mean these IP addresses:

192.168.1.1
192.168.1.2
...
...
192.168.2.254
192.168.2.255

Now, remember that everything is increased by the power of 2, so your options are always going to be doubled:

2^0 = 1
2^2 = 2
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
2^9 = 512
2^10 = 1024
2^11 = 2048
2^12 = 4096
2^13 = 8192
2^14 = 16384
2^15 = 32768
2^16 = 65536

With that in mind, you can easily know that whatever # of IP addresses available you have in your range, the next amount number available is going to be double what you currently have.

That is, if you have 192.168.1.0/21, which gives you 8, then if you go down one # – from 192.168.1.0/21 to 192.168.1.0/20 – 20 being the next possible range size, then your number 8 is going to double to 16.

The opposite is also true, going from 192.168.1.0/21 to 192.168.1.0/22 is going to give you less addresess – 4.

The reason this can get confusing, trying to keep track of which numbers are higher or lower, remember that the higher the number on the CIDR, the lower the amount of possible IPs. Instinct may tell you that /32 is higher than /24 and so a /32 notation means more. The opposite is true. It's like a see-saw! Only one can be high.

192.168.1.0/32 - the notation is high, so the IPs is low
192.168.1.0/16 - the notation is low, so the IPs is high

The power of 2 is also evident when crossing the first 256 # of IP addresses. If starting at 192.168.1.0, and extending to 512, then you're only adding one set of 256s. So 1.0 would expand to 2.0. But what if you wanted to add more? The power of 2 applies, so you'd then have to jump by 4, next. 192.168.1.0 now goes to 192.168.4.0. The next one would be 4 times 2, so 8 is the next possible block. Going from 192.168.1.0 to 192.168.8.0. And so on, and so on: 192.168.16.0, 192.168.32.0, 192.168.64.0, 192.168.128.0, etc.