diff --git a/docs/how/protocols.rst b/docs/how/protocols.rst new file mode 100644 index 0000000..d320bd4 --- /dev/null +++ b/docs/how/protocols.rst @@ -0,0 +1,169 @@ +protocol negotiation — GMCP, MSDP, and client detection +======================================================== + +how the server offers GMCP and MSDP to connecting clients, how clients +accept or reject them, and how the game guards against sending data to +clients that don't support it. + +see also: ``mud.tin`` (tintin++ client config), ``docs/lessons/charset-vs-mtts.txt`` +(related telnet negotiation gotcha). + + +the lifecycle +------------- + +1. client connects via telnet +2. telnetlib3 calls ``begin_negotiation()`` on our ``MudTelnetServer`` +3. server sends ``IAC WILL GMCP`` and ``IAC WILL MSDP`` +4. client replies ``IAC DO