In 2010 MQTT version 3.1 was released to the public.
About 4 years later MQTT 3.1.1 became an OASIS Standard.
By end of this year (likely) the next version of the MQTT specification will be released: MQTT v5.0.
But wait! MQTT v3.1.1 and now v5.0? Why isn’t the next release v4.0?
Well, the root cause lies in the variable header of the MQTT CONNECT Control Packet.
The protocol version or to be more precise, the protocol revision level is set in byte #7:
“The 8 bit unsigned value that represents the revision level of the protocol used by the Client. The value of the Protocol Level field for the version 3.1.1 of the protocol is 4 (0x04).”
The protocol level of v3.1 is defined as 3 and v3.1.1 is 4.
Hence the next protocol level is 5.
To avoid inconsistency the specification group has agreed to name the next MQTT version accordingly:
“The value of the Protocol Level field for the version 5.0 of the protocol is 5 (0x05).”
That’s it ;-)!