I pinged every IP address that wasn’t reserved. The image is 8k by 8k and is re-encoded as an AVIF to be friendlier to mobile devices. Like every other survey done, it is using a Hilbert Curve to convert the linear address space to a contiguous 2d space. The hotter the colors (blue is coolest), the denser the ping responses were.

(If you are interested the full-resolution pyramidal-tiled TIFF can be downloaded and viewed in QuPath on desktop. I’ve also compressed the ping response data into its own format down to about 150 MB. PM me for a link)

Non-proxied image

Here is a 2006 survey to compare.

Some observations: Big Tech (USA) is in the top left. US government allocations, for the most part, did not respond to any pings. And maybe you didn’t realize this before, but Multicast (Class D) & Class E consume a whopping 12% of the IPv4 range.

  • melsaskca@lemmy.ca
    link
    fedilink
    arrow-up
    1
    ·
    7 days ago

    Forgive me if this is an ignorant question. How did you do the incremental address to address search? In my head I would start with “000.000.000.000” and then “000.000.000.001” and so on but that doesn’t account for the “000.000.000.1” scenario, or any combination thereof.

    • poolcritter@pawb.social
      link
      fedilink
      arrow-up
      1
      ·
      7 days ago

      Essentially, IPv4 addresses[2] are just numbers from 1 to 2147483647, for example 3405804031. However, since address routing is often based on common binary prefix, more intuitive methods like 203.0.113.255 are used. This notation is just a length-4 list of integers from 0 to 255. To convert from an integer to a common IP address, you divide-with-remainder with a constant divisor of 256. For example, 3405804031 /% 256 = (13303921,256), 13303921 /% 256 = (51968,113), 51968 /% 256 = (203,0), and 203 /% 256 = (0,203).[1] Collecting all the remainders in reverse order, then joining them with periods, produces 203.0.113.255. (This notation is just for people to read; aside from parsing code, none of IPv4 uses this notation.) When you enter an IPv4 address, the opposite happens — an expression like ((203 * 256 + 0) * 256 + 113) * 256 + 255, which evaluates to 3405804031, is performed. These octets are just numbers — using 203.000.113.255 or 203.00.113.255 in place of 203.0.113.255 is merely a choice of how to write the address, as 203 * 256 + 0 = 203 * 256 + 000. mraow

      [1]: this operation can be omitted; I include it for symmetry. [2]: though all of this holds true for IPv6, I really didn’t feel like going through 128 bits of address

    • MagicShel@lemmy.zip
      link
      fedilink
      English
      arrow-up
      0
      ·
      7 days ago

      Writing it out like 000 is just a convention. .1 is the same as .001. They are actually hex numbers from 0 to FF.

        • MagicShel@lemmy.zip
          link
          fedilink
          English
          arrow-up
          0
          ·
          edit-2
          7 days ago

          What communicates what they need to know at the level they’re at? I can get technical about octets and bounded decimals, or I can give a simple answer that puts those values into a familiar context.

              • atzanteol@sh.itjust.works
                link
                fedilink
                English
                arrow-up
                1
                ·
                7 days ago

                I mean - they are “numbers”. Numbers are not in hex or decimal. Saying “they’re really hex numbers” is not just wrong it’s kinda meaningless since ff == 255.

                You’ve explained it badly.

                • nebeker@programming.dev
                  link
                  fedilink
                  English
                  arrow-up
                  0
                  ·
                  6 days ago

                  Lie-to-children. See also “perfect is the enemy of good.”

                  This was very hard for me to understand, particularly when the simple answer in school that was provided for the benefit of the rest of the class didn’t come with a deeper follow-up, but I now recognize the great value in meeting people where they are.

                  • atzanteol@sh.itjust.works
                    link
                    fedilink
                    English
                    arrow-up
                    1
                    ·
                    6 days ago

                    This wasn’t a “lie to children” - that’s a simplification. This was like explaining the Pythagorean theorem by introducing imaginary numbers.

                    Almost nobody ever uses hex to represent IP addresses ever. There is no reason to bring up hex. It complicates things rather than simplifies.

                    And to say “[t]hey are actually hex numbers from 0 to FF” is just misleading to the point of wrong. Numbers are not “hex” or “base 10” or “binary”. They’re numbers. We only represent them as hex or base10. They aren’t “different numbers”.

                    And in this case we almost always use base10. SO WHY ARE WE TALKING ABOUT HEX?