It apparaat sit efter in thúsrûter sûnder port forwarding en sûnder iepenbier adres, en it moat dochs binnen sekonden konfiguraasje krije. De trúk is gjin gat yn 'e firewall. It is in ferbining dy't it apparaat nei bûten iepenet nei in broker dy't it berikke kin, en dy't de berjochten dan weromstjoert oer deselde fêstige paad. Elke eigenskip dy't minsken oan dit ûntwerp moai fine, en elke falstrik deryn, komt fan dy omkearing.

Wat eins troch de NAT komt

As it apparaat in TCP-ferbining nei de broker iepenet, makket de thúsrûter in mapping en hâldt dy libben de hiele libbensdoer fan 'e stream. Antwurden op dy stream komme werom by it apparaat om't de mapping al bestiet. De broker begjint nea eat rjochting it hûs, dus der is gjin net frege ynkommend pakket dat de rûter wegerje moat. Dat is it hiele netwurkargumint, en dêrom wurket de oanpak op netwurken dy't jo net beheare.

It apparaat moat de ferbining libben hâlde of op 'e nij fêstigje, wat de betrouberensfrage wurdt sadree't de arsjitektuer fêststiet.

De broker rûtelet ûnderwerpen, hy proxyt gjin HTTP

MQTT definiearret útwikselingen fan publisearjen en abonnearjen: it apparaat abonnearret op in ûnderwerpfilter dat it lêze mei, en in autorisearre kontrôler publisearret op in oerienkommend ûnderwerp. De broker matcht publikaasjes mei abonneminten en leveret kopyen. Hy wit net wat in browserfersyk is, en hy stjoert gjin HTTP GET nei de webserver fan it apparaat. As de besteande firmware allinnich HTTP praat, hat it brokerûntwerp in applikaasjeferoaring of in bewust oersetkomponint nedich.

Underwerpnammen binne ek gjin autorisaasje. De measte brokers stypje tagongskontrôlelisten per klant, en apparaten moatte beheind wurde ta har eigen publisear- en abonnemintbeammen ynstee fan ien globale nammeromte te dielen.

De boarnen fan it apparaat bepale de TLS-foarm

In ESP8266 hat beheind RAM, en in TLS-handshake is it djoerste dat er docht. De Arduino-kearn leveret BearSSL krekt foar dizze beheining, en de kar tusken it ferifiearjen fan in CA en it fêstspjeldzjen fan in fingerprint feroaret sawol de ûnthâldfuotprint as wat in oanfaller mei in jildich sertifikaat foar in oare namme dwaan kin. It ferifiearjen fan 'e CA fan 'e broker is de sterker opsje as de heap it tastiet. De grutte fan 'e lading is ek fan belang: de MQTT-klant hâldt in buffer, en berjochten grutter as dy wurde stil ôfsnien, útsein as de buffer bewust ferhege wurdt.

Keepalive en socket-timeouts binne diel fan itselde budzjet, want in klant dy't nea in deade ferbining fernimt, hâldt op mei it ûntfangen fan opdrachten sûnder in flater te rapportearjen.

De berjocht-semantyk dy't byt

In fêsthâlden berjocht wurdt troch de broker bewarre en oan lettere oerienkommende abonnees levere, wat poerbêst is foar de hjoeddeistige steat en gefaarlik foar ienmalige opdrachten: in apparaat dat wer ferbynt, kin it opdracht fan juster krije as wie it nij. QoS 1 garandearret levering teminsten ien kear, dus duplikaten binne normaal en de applikaasje moat werhelfeilich wêze, ideaal mei in identifisearder of in tiidstimpel dy't it wegerje kin. De lêste wil jout jo in statussignaal as it apparaat falt, mar allinnich as de ferbining echt mislearret ynstee fan te hingjen.

It gedrach fan in skjinne sesje beslút oft de broker dyn abonneminten hâldt wylststo fuort bist, en dat ferkeard dwaan is de reden dat guon apparaten it earste berjocht misse nei elke werferbining.

TLS beskermet it stik nei de broker. It is gjin ein-tot-ein-fersifering fan 'e lading tsjin 'e brokeroperator, dy't alles lêze kin watsto dertroch publisearrest.

Behein de libbenssyklus en test him mei ûnskealike gegevens

Plan werferbining mei weromlûken ynstee fan in strakke werbesyk-loop, abonnearje eksplisyt op 'e nij as de sesje net persistent is, en log it ferbyningsresultaat sadat in stil offline apparaat bewiis efterlit. Test it werferbiningspaad mei foarbyldladingen dy't neat dogge, want de earste produksjetest fan in opdrachtkanaal moat gjin echte opdracht wêze. Befêstigje dan wat in ferâldere fêsthâlden berjocht by werferbining docht, en beslút oft dat gedrach foar elk ûnderwerp akseptabel is.

Sa dien, hellet it ûntwerp ien ynkommende netwurkferplichting fuort en lit it de apparaatsoftware, it brokerbelied en de berjocht-semantyk as sichtber wurk stean ynstee fan ferburgen oannames.

Relatearre artikelen