MCBE
OverviewGetting Started

Minecraft Bedrock protocol

Reference for 1.26.51 (protocol 2193): transports, batching, encryption and every game packet.

layers
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.

Each game packet starts with a varuint32 header that packs the packet ID (10 bits) with sub-client indices for split-screen.

header.ts
header = packetId | (senderSubClient << 10) | (targetSubClient << 12)
packetId = header & 0x3FF

Login flow

  1. 10xC1RequestNetworkSettingsClient → Server
  2. 20x8FNetworkSettingsServer → Client
  3. 30x01LoginClient → Server
  4. 40x03ServerToClientHandshakeServer → Client
  5. 50x04ClientToServerHandshakeClient → Server
  6. 60x02PlayStatusServer → Client
  7. 70x06ResourcePacksInfoServer → Client
  8. 80x08ResourcePackClientResponseClient → Server
  9. 90x07ResourcePackStackServer → Client
  10. 100x0BStartGameServer → Client
  11. 110x3ALevelChunkServer → Client
  12. 120x02PlayStatusServer → Client
  13. 130x71SetLocalPlayerAsInitializedClient → Server

The full reference covers 236 packets — browse the packet index.