Minecraft Bedrock protocol
Reference for 1.26.51 (protocol 2193): transports, batching, encryption and every game packet.
Transport RakNet (UDP 19132) | NetherNet (WebRTC) Batch 0xFE [8-byte checksum?] [compression id] packets... Packet varuint32 length + varuint32 header + body
The network stack
Bedrock Edition uses RakNet over UDP for dedicated servers and NetherNet (WebRTC data channels) for Realms, friends' worlds and LAN. Both carry the same game packets once a session is established; only the framing differs — RakNet wraps batches in the 0xFE envelope with compression and optional AES-256-CTR encryption, while NetherNet relies on DTLS and drops the envelope.
RakNet
Reliable UDP: handshake, frame sets, ACK/NACK, MTU discovery.
NetherNet
WebRTC transport: signaling, identity assertions, segmentation.
Encryption
Login flow, AES-256-CTR key derivation, Xbox Live tokens.
Packet header
Each game packet starts with a varuint32 header that packs the packet ID (10 bits) with sub-client indices for split-screen.
header = packetId | (senderSubClient << 10) | (targetSubClient << 12) packetId = header & 0x3FF
Login flow
- 10xC1RequestNetworkSettingsClient → Server
- 20x8FNetworkSettingsServer → Client
- 30x01LoginClient → Server
- 40x03ServerToClientHandshakeServer → Client
- 50x04ClientToServerHandshakeClient → Server
- 60x02PlayStatusServer → Client
- 70x06ResourcePacksInfoServer → Client
- 80x08ResourcePackClientResponseClient → Server
- 90x07ResourcePackStackServer → Client
- 100x0BStartGameServer → Client
- 110x3ALevelChunkServer → Client
- 120x02PlayStatusServer → Client
- 130x71SetLocalPlayerAsInitializedClient → Server
The full reference covers 236 packets — browse the packet index.
