Unlabeled grey square at the bottom
This was a ping scan, so it wasn't probing any TCP/UDP ports (see shodan.io). I suppose you could use ICMP control messages (Destination Unreachable) to determine if something was unused, but that assumes the other side is being friendly.
Comparison is the thief of joy 🙃
Though if I push my scanner hard it could probably do 16k/sec on the single core and 1gig connection it is on. The problem is how reliably I could do 16k/sec over the network, since a good portion would be dropped even if the host's hardware could keep up.
I'd probably need access to enterprise-level equipment that could handle the routing load if I were to do it in 5 seconds lol, it's insane they managed to do that
about a month, since I ran it at about 6000 addresses / sec checking distinct addresses 4 times (round robin) or 1500 finished / sec. This was the fastest I went to avoid silent UDP drops and to hopefully not annoy my VPS hoster too much.
I left details out to be less verbose.
commenting because it may interest you, but have you looked at the pintos project? It is an educational OS framework with the instructions on how to implement basic things like threading, user programs, file systems

Here you go!!! Purple is reserved range. It's a Hilbert curve as seen here https://www.caida.org/archive/id-consumption/census-map/images/20061108.png
I gave it some further thought and I might be completely misguided to try and max throughput. Datagrams are completely connectionless and therefore can’t know if your router’s send buffer is full or not, unless I’m missing something internal between the kernel and the router that makes sendto block (which AFAIK only happens when the socket’s send buffer is full). Therefore most “extra” datagrams I send would just be dropped anyways. I know ICMP was a dated method of congestion control but have no idea if it would still be in use for simple pings.
Edit: apparently source quench is a thing but still, no clue if the kernel intercepts this or if it is even sent in 2026 due to deprecation
I kneel
Is there any reason why it has to be a raw socket, rather than a dgram icmp socket? (which allows you to run as non-root) Silly me for not realizing I only needed one socket. Ofc my speed would only be at most 1-2Mbps. I currently track outgoing pings in memory so I would probably need to keep a single large circular array instead for timeout purposes -- not too different from what I'm doing currently.
Thank you can’t believe I forgot this
sacred_font
0 post score0 comment score


Updated