{"id":10620,"date":"2019-06-09T17:14:05","date_gmt":"2019-06-09T15:14:05","guid":{"rendered":"https:\/\/pi3g.com\/?p=10620"},"modified":"2019-06-09T17:14:05","modified_gmt":"2019-06-09T15:14:05","slug":"maximimum-length-of-credentials-username-password-clientid-in-mqtt-v3-1-1","status":"publish","type":"post","link":"https:\/\/pi3g.com\/de\/maximimum-length-of-credentials-username-password-clientid-in-mqtt-v3-1-1\/","title":{"rendered":"Maximale L\u00e4nge der Anmeldeinformationen (Benutzername, Passwort, clientid) in MQTT v3.1.1"},"content":{"rendered":"<h1>Das CONNECT-Paket<\/h1>\n<p>Das MQTT CONNECT Control-Paket enth\u00e4lt immer eine Nutzlast. Es ist das erste Paket, das der Client nach dem Aufbau der Verbindung an den Server senden muss.<\/p>\n<p>Es kann nur einmal vom Client gesendet werden. Wenn ein zweites CONNECT-Paket gesendet wird, muss der Server (Broker) es als Protokollverletzung behandeln und die Verbindung zum Client trennen.<\/p>\n<p>Die Nutzlast kann mehrere verschiedene Felder enthalten:<\/p>\n<ul>\n<li>eindeutige Kundenkennung (clientid) - immer vorhanden<\/li>\n<li>wird Thema<\/li>\n<li>wird Nachricht<\/li>\n<li>Nutzername<\/li>\n<li>Passwort (auch der Benutzername muss vorhanden sein!)<\/li>\n<\/ul>\n<p>Die clientid ist erforderlich, die anderen Felder sind optional. Das Vorhandensein der optionalen Felder wird durch Flags im Header bestimmt.<\/p>\n<p><a href=\"https:\/\/pi3g.com\/wp-content\/uploads\/2019\/06\/image-32.png\"><img loading=\"lazy\" decoding=\"async\" width=\"846\" height=\"165\" title=\"Bild\" style=\"display: inline; background-image: none;\" alt=\"Bild\" src=\"https:\/\/pi3g.com\/wp-content\/uploads\/2019\/06\/image_thumb-32.png\" border=\"0\"><\/a><\/p>\n<p><em>Bildschirmfoto: OASIS Open MQTT v3.1.1 Spezifikation <\/em><\/p>\n<p><\/p>\n<h1>Grenzwerte<\/h1>\n<p>Hier sind die Grenzen, die von konformen Brokern unterst\u00fctzt werden sollten:<\/p>\n<ul>\n<li>clientid: 23 UTF-8 kodierte Bytes<\/li>\n<li>Nutzername max. 655535 Bytes nach der Kodierung (UTF-8 kodiert)<\/li>\n<li>Kennwort: 0 bis 65535 Byte Bin\u00e4rdaten <\/li>\n<li>Gr\u00f6\u00dfe der Nachrichtengrenze: 268435455 Bytes<\/li>\n<\/ul>\n<p>Die folgenden Zeichen f\u00fcr die Client-ID sind <strong>erforderlich<\/strong> von jedem Broker unterst\u00fctzt werden, der die MQTT v3.1.1 Spezifikation erf\u00fcllt:<\/p>\n<blockquote>\n<p>0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ<\/p>\n<\/blockquote>\n<p>Andere Zeichen und l\u00e4ngere Client-IDs k\u00f6nnen optional vom Broker unterst\u00fctzt werden.<\/p>\n<p>23 Zeichen sind genug. Denken Sie daran, dass es sich nicht um Bits, sondern um Zeichen handelt. Wenn Sie <a href=\"https:\/\/en.wikipedia.org\/wiki\/Base58\" target=\"_blank\">Basis58<\/a> Kodierung erh\u00e4lt man zum Beispiel 58^23 Kombinationen ~ 3,62E+40 ~ 362112779466785000000000000000000000000000000 Kombinationen. Wenn Sie das nicht tun - dann sogar noch mehr.<\/p>\n<p>Optional kann der Broker auch Clientid's mit einer L\u00e4nge von null Bytes unterst\u00fctzen. In diesem Fall muss der Broker dem Client eine eindeutige Clientid zuweisen. Nicht alle Makler unterst\u00fctzen dies (\"MAY\" laut Spezifikation).<\/p>\n<p>Der Benutzername muss eine UTF-8-kodierte Zeichenkette sein. Das Passwort kann aus bin\u00e4ren Daten bestehen.<\/p>\n<p>Die Nachricht kann auch aus bin\u00e4ren Daten bestehen.<\/p>\n<p>&nbsp;<\/p>\n<h2>Ansteigende Grenzwerte<\/h2>\n<p>Um die Clientid-Grenze in VerneMQ zu erh\u00f6hen, k\u00f6nnen Sie eine Option, max_client_id_size, setzen:<\/p>\n<p><a href=\"https:\/\/docs.vernemq.com\/configuration\/nonstandard\">https:\/\/docs.vernemq.com\/configuration\/nonstandard<\/a><\/p>\n<p>ist sie standardm\u00e4\u00dfig auf 23 eingestellt.<\/p>\n<h1><\/h1>\n<h1>Die Kunden-ID sollte eindeutig sein<\/h1>\n<p>In MQTT sollten Clients normalerweise unterschiedliche Clientids haben, auch wenn sie unterschiedliche Benutzernamen haben.<\/p>\n<p>Wenn zwei Clients die gleiche Client-ID haben, geraten sie in ein Ping-Pong aus Verbindungsaufbau- und -abbauversuchen, da der Broker normalerweise keine Verbindungen f\u00fcr zwei Clients mit der gleichen Client-ID zul\u00e4sst.<\/p>\n<p>(Ich glaube, VerneMQ hat diese Option, aber ich glaube auch, dass sie veraltet ist; auf jeden Fall ist es besser, sie nicht zu ber\u00fccksichtigen, um mit anderen Brokern kompatibel zu bleiben).<\/p>\n<h1><\/h1>\n<h1>Ref<\/h1>\n<ul>\n<li><a href=\"http:\/\/docs.oasis-open.org\/mqtt\/mqtt\/v3.1.1\/mqtt-v3.1.1.pdf\">http:\/\/docs.oasis-open.org\/mqtt\/mqtt\/v3.1.1\/mqtt-v3.1.1.pdf<\/a><\/li>\n<ul>\n<li>siehe Abschnitt 1.5.3 f\u00fcr Beschr\u00e4nkungen f\u00fcr generische UTF-8-kodierte Zeichenketten, die f\u00fcr den Benutzernamen gelten<\/li>\n<\/ul>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Das CONNECT-Paket Das MQTT CONNECT Control-Paket enth\u00e4lt immer eine Nutzlast. Es ist das erste Paket, das der Client nach dem Aufbau der Verbindung an den Server senden muss. Es kann nur einmal vom Client gesendet werden, wenn ein zweites CONNECT-Paket gesendet wird, muss der Server (Broker) es als Protokoll verarbeiten...<\/p>","protected":false},"author":830,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[636,608],"tags":[638,642,641,643,644,599,637,645,640,646,639,415,589],"class_list":["post-10620","post","type-post","status-publish","format-standard","hentry","category-mqtt","category-vernemq","tag-clientid","tag-constraints","tag-limits","tag-max","tag-maximum","tag-mqtt","tag-mqtt-v3-1-1","tag-non-standard","tag-password","tag-spec","tag-username","tag-utf-8","tag-vernemq"],"_links":{"self":[{"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/posts\/10620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/users\/830"}],"replies":[{"embeddable":true,"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/comments?post=10620"}],"version-history":[{"count":1,"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/posts\/10620\/revisions"}],"predecessor-version":[{"id":10621,"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/posts\/10620\/revisions\/10621"}],"wp:attachment":[{"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/media?parent=10620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/categories?post=10620"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pi3g.com\/de\/wp-json\/wp\/v2\/tags?post=10620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}