Zend certified PHP/Magento developer

Is 172.16/12 contiguous?

I’m confused.

From RFC 1918:

10.0.0.0        -   10.255.255.255  (10/8 prefix)
172.16.0.0      -   172.31.255.255  (172.16/12 prefix)
192.168.0.0     -   192.168.255.255 (192.168/16 prefix)

The prefix 172.16/12 seems strange to me for the range 1631. Masks are supposed to use contiguous binary 1s.

A prefix of /12 for contiguous 1s should indicate:

11111111.11110000

Only 172.16 (10101100.00010000) is masked by that range. All non-16 bits for oclets 1731 are not protected by the mask.

But, the binary mask to cover 172.16172.31 is

11111111.00011111

List of 172.16172.31:

10101100.00010000
10101100.00011111
10101100.00011110
10101100.00011101
10101100.00011100
10101100.00011011
10101100.00011010
10101100.00011001
10101100.00011000
10101100.00010111
10101100.00010110
10101100.00010101
10101100.00010100
10101100.00010011
10101100.00010010
10101100.00010001

So, a prefix of 172.16/16 (11111111.11111111) to mask all these makes more sense to me.

Is this RFC 1918 range of 172.16.0.0172.31.255.255 not contiguous?

Or does a /12 prefix actually indicate:

11111111.00001111

But, that number range only goes to 15, in which case we need:

11111111.00011111

And, that should be 172.16/13, if it is not contiguous.

Someone please sort this out for me.