Each octet is 8 bits.

The /23 CIDR means the 23 leftmost bits in the subnet mask are 1, so:

Binary: 11111111 11111111 11111110 00000000

Decimal: 8 + 8 + 7 + 0 = 23

That's the subnet mask. Now you need to convert the subnet itself into binary, like so:

Binary: 00001010 00001010 00001010 00000000

Decimal: 10 10 10 0

Next you need to line up the subnet mask and the subnet, like this:

Subnet mask: 11111111 11111111 11111110 00000000

Subnet: 00001010 00001010 00001010 00000000

10 10 10 0

Now here's how you determine the subnet range. To find the low end, for every bit where the subnet mask is 0, make the subnet 0. That's what's already written above, hence, 10.10.10.0 is the lowest address in the subnet.

To find the highest address, for every bit where the subnet mask is 0, make the subnet bit 1:

Subnet mask: 11111111 11111111 11111110 00000000

Highest address: 00001010 00001010 00001011 11111111

10 10 11 255

So the highest address would be 10.10.11.255.

Hence the range for 10.10.10.0/23 is 10.10.10.0-10.10.11.255.

]]>