mumble/docs/dev/network-protocol/protocol_stack_tcp.rst
Jan Klass d05262a9ce DOCS(protocol): Integrate network protocol documentation
Integrates our network protocol docs [1][2]. This will allow us to drop the separate repository. Git history is preserved through adding/merging with/through git subtree.

via

```
git subtree add --prefix docs/dev/network-protocol https://github.com/mumble-voip/mumble-protocol.git master
```

[1]: https://github.com/mumble-voip/mumble-protocol
[2]: https://mumble-protocol.readthedocs.io/

---

Add 'docs/dev/network-protocol/' from commit 'b0d142143c5c37797d787fd7f71eb172dd1219ad'

git-subtree-dir: docs/dev/network-protocol
git-subtree-mainline: 65462b4c3b
git-subtree-split: b0d142143c
2024-11-03 17:32:48 +01:00

89 lines
3.2 KiB
ReStructuredText

Protocol stack (TCP)
====================
Mumble has a shallow and easy to understand stack. Basically it
uses Google's Protocol Buffers [#f1]_ with simple prefixing to
distinguish the different kinds of packets sent through an TLSv1
encrypted connection. This makes the protocol very easily expandable.
.. _mumble-packet:
.. figure:: resources/mumble_packet.png
:alt: Mumble packet
:align: center
Mumble packet
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.
.. table:: Packet types
+---------+------------------------+
| Type | Payload |
+=========+========================+
| 0 | Version |
+---------+------------------------+
| 1 | UDPTunnel |
+---------+------------------------+
| 2 | Authenticate |
+---------+------------------------+
| 3 | Ping |
+---------+------------------------+
| 4 | Reject |
+---------+------------------------+
| 5 | ServerSync |
+---------+------------------------+
| 6 | ChannelRemove |
+---------+------------------------+
| 7 | ChannelState |
+---------+------------------------+
| 8 | UserRemove |
+---------+------------------------+
| 9 | UserState |
+---------+------------------------+
| 10 | BanList |
+---------+------------------------+
| 11 | TextMessage |
+---------+------------------------+
| 12 | PermissionDenied |
+---------+------------------------+
| 13 | ACL |
+---------+------------------------+
| 14 | QueryUsers |
+---------+------------------------+
| 15 | CryptSetup |
+---------+------------------------+
| 16 | ContextActionModify |
+---------+------------------------+
| 17 | ContextAction |
+---------+------------------------+
| 18 | UserList |
+---------+------------------------+
| 19 | VoiceTarget |
+---------+------------------------+
| 20 | PermissionQuery |
+---------+------------------------+
| 21 | CodecVersion |
+---------+------------------------+
| 22 | UserStats |
+---------+------------------------+
| 23 | RequestBlob |
+---------+------------------------+
| 24 | ServerConfig |
+---------+------------------------+
| 25 | SuggestConfig |
+---------+------------------------+
For raw representation of each packet type see the attached Mumble.proto [#f2]_ file.
.. rubric:: Footnotes
.. [#f1] https://github.com/google/protobuf
.. [#f2] https://raw.github.com/mumble-voip/mumble/master/src/Mumble.proto