Making our own ping

When I launched my Patreon, I vowed to explain how computers work. But in 2019, computers rarely work in isolation. So let's take the time to write a few articles about how computers talk to each other.

Read part 1

Series overview

  1. A short (and mostly wrong) history of computer networking
  2. Windows dynamic libraries, calling conventions, and transmute
  3. FFI-safe types in Rust, newtypes and MaybeUninit
  4. Designing and implementing a safer API on top of LoadLibrary
  5. A simple ping library, parsing strings into IPv4 address
  6. The builder pattern, and a macro that keeps FFI code DRY
  7. Finding the default network interface through WMI
  8. Binding C APIs with variable-length structs and UTF-16
  9. Consuming Ethernet frames with the nom crate
  10. Improving error handling - panics vs. proper errors
  11. Parsing IPv4 packets, including numbers smaller than bytes
  12. Parsing and serializing ICMP packets with cookie-factory.
  13. Crafting ARP packets to find a remote host's MAC address
  14. Crafting ICMP-bearing IPv4 packets with the help of bitvec

This series is complete.