3.0k words | Dan Hollick
Sending and receiving data.
Networks turn bits into changing voltages, light pulses or radio waves, then recover them despite noise and imperfect timing.

Networks turn bits into changing voltages, light pulses or radio waves, then recover them despite noise and imperfect timing. The apparent simplicity comes from a set of carefully chosen representations, transformations and physical assumptions working together.
Signals
A physical carrier changes over time to encode discrete symbols.
This is one part of a longer chain: bits becomes modulation becomes channel becomes decoded bits. The useful abstraction hides the physical work, but the underlying constraints still shape the software built above it.
Clock recovery
Receivers infer where one symbol ends and the next begins.
The implementation is full of compromises. Precision, speed, storage and energy rarely improve together, so practical systems choose the errors people are least likely to notice.
Error correction
Checksums and redundant codes reveal or repair corruption introduced by the channel.
Once this layer is visible, familiar design conventions stop looking arbitrary. They are accumulated responses to the capabilities and limits of the machinery below.
A visual study based on the original chapter. Text is condensed and rewritten.