Making our own ping complete

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.