Back to Mumble

Protocol stack (TCP)

docs/dev/network-protocol/protocol_stack_tcp.md

1.6.8701.8 KB
Original Source

Protocol stack (TCP)

Mumble has a shallow and easy to understand stack. Basically it uses Google's Protocol Buffers1 with simple prefixing to distinguish the different kinds of packets sent through a TLSv1 encrypted connection. This makes the protocol very easily expandable.

The prefix consists out of the two bytes defining the type of the packet in the payload and 4 bytes stating the length of the payload in bytes followed by the payload itself. The following packet types are available in the current protocol and all but UDPTunnel are simple protobuf messages. If not mentioned otherwise all fields outside the protobuf encoding are big-endian.

TypePayload
0Version
1UDPTunnel
2Authenticate
3Ping
4Reject
5ServerSync
6ChannelRemove
7ChannelState
8UserRemove
9UserState
10BanList
11TextMessage
12PermissionDenied
13ACL
14QueryUsers
15CryptSetup
16ContextActionModify
17ContextAction
18UserList
19VoiceTarget
20PermissionQuery
21CodecVersion
22UserStats
23RequestBlob
24ServerConfig
25SuggestConfig

For raw representation of each packet type see the Mumble.proto and MumbleUDP.proto files.

Footnotes

  1. https://github.com/google/protobuf