Baud

See what is inside every byte.

Animated, step-by-step diagrams of the protocols that move data: UART, SPI, I2C, TCP, DNS and more. Watch the bits leave the wire, assemble into bytes, and turn into meaning.

Every card below is live. Open one to step through it field by field.

Serial and buses

Bits on a wire: start bits, clocks, addresses, acknowledgements.

Network stack

Headers stacked on headers: from Ethernet frames up to TCP.

Ethernet II header · 14 bytes081600000000001A000110102B001010113C001111004D010011015E010111103C001111002200100010FB11111011AA1010101001000000012000100000080000100000000000004501000101000000000000000000002C001011001C000111004601000110Destination MACSource MACEtherTypePayload (start)

Ethernet II

Open

The frame that carries everything on a local network: MACs, a type, a payload.

L2MACCRC-32
Laptop192.168.1.20Router192.168.1.1ARP requestto FF:FF:FF:FF:FF:FFARP replyunicastIP packetdst MAC 00:1A:...cache: empty192.168.1.1 = 00:1A:2B:3C:4D:5E

ARP

Open

How a host turns an IP address into the MAC address it needs.

L2.5broadcast28 bytes
IPv4 header · 20 bytes04812164501000101000000000000000000002C001011001C000111004601000110400100000000000000004001000000060000011020001000009710010111C011000000A81010100001000000011400010100CB11001011000000000071011100013200110010VersionIHLDSCPECNTotal lengthIdentificationFlagsFragment offsetTTLProtocolHeader checksumSource addressDestination address

IPv4

Open

The 20-byte header that gets a packet across the whole internet.

L320 bytesTTL
UDP datagram · 8-byte header + 29 bytes of data08162432D411010100310011000100000000003500110101000000000025001001012C001011009C10011100AB10101011CD11001101010000000100000000000000000000010000000100000000000000000000000000000000000000000000000000000000000007000001116501100101780111100061011000016D0110110170011100006C011011006501100101030000001163011000116F011011116D0110110100000000000000000000010000000100000000000100000001Source portDestination portLengthChecksumData (a DNS query)

UDP

Open

The smallest transport: ports and a checksum, nothing else.

L48 bytesconnectionless
Client192.168.1.20:51234Server203.0.113.50:80SYNseq=1000SYN, ACKseq=5000 ack=1001ACKseq=1001 ack=5001PSH, ACKseq=1001 ack=5001 len=100ACKseq=5001 ack=1101CLOSEDLISTENSYN_SENTSYN_RCVDESTABLISHEDESTABLISHED

TCP

Open

A reliable byte stream built from numbered segments and acknowledgements.

L4reliablehandshake

Application protocols

What the programs say to each other once the packets arrive.