Төхөөрөмж нь гэрийн чиглүүлэгчийн ард, порт дамжуулалт ч, нийтийн хаяг ч байхгүй, гэсэн хэдий ч тохиргоог хэдхэн секундэд авах ёстой. Арга нь firewall-ийн цоорхой биш. Энэ нь төхөөрөмж гадагш, өөрөө хүрч чадах broker руу нээдэг холболт бөгөөд broker нь мессежийг тэр л тогтсон замаар буцааж илгээдэг. Энэ дизайнд хүмүүст таалагддаг бүх шинж чанар, түүн доторх бүх урхи энэ эргэлтээс гардаг.

NAT-аар бодитоор юу нэвтэрдэг вэ

Төхөөрөмж broker руу TCP холболт нээхэд гэрийн чиглүүлэгч буулгалт үүсгэж, урсгалын амьдралын турш түүнийг амьд байлгадаг. Тэр урсгал дээрх хариултууд төхөөрөмж рүү буцаж ирдэг, учир нь буулгалт аль хэдийн байна. Broker хэзээ ч гэр рүү юу ч эхлүүлдэггүй, тиймээс чиглүүлэгчийн татгалзах шаардлагагүй ирсэн багц байхгүй. Энэ бол бүх сүлжээний үндэслэл бөгөөд таны хянадаггүй сүлжээнд энэ арга ажилладаг шалтгаан юм.

Төхөөрөмж холболтыг амьд байлгах эсвэл дахин тогтоох ёстой бөгөөд архитектур тогтсоны дараа энэ нь найдвартай байдлын асуудал болдог.

Broker сэдвийг чиглүүлдэг, HTTP-г прокси хийдэггүй

MQTT нь нийтлэх, захиалах солилцоог тодорхойлдог: төхөөрөмж өөрт унших зөвшөөрөлтэй сэдвийн шүүлтүүрт захиалга хийдэг, эрх бүхий хянагч тохирох сэдэвт нийтэлдэг. Broker нийтлэлүүдийг захиалгатай тулгаж, хуулбарыг хүргэдэг. Тэр хөтчийн хүсэлт гэж юу болохыг мэдэхгүй бөгөөд HTTP GET-ийг төхөөрөмжийн вэб серверт дамжуулахгүй. Хэрэв одоогийн firmware зөвхөн HTTP ярьдаг бол broker дизайнд програмын өөрчлөлт эсвэл зориудын орчуулгын бүрэлдэхүүн хэсэг хэрэгтэй.

Сэдвийн нэр ч мөн зөвшөөрөл биш. Ихэнх broker нь клиент тус бүрийн хандалтын хяналтын жагсаалтыг дэмждэг бөгөөд төхөөрөмжүүдийг нэг дэлхийн нэрийн орон зайг хуваалцахын оронд өөрсдийн нийтлэх, захиалах модоор хязгаарлах ёстой.

Төхөөрөмжийн нөөц TLS-ийн хэлбэрийг тодорхойлно

ESP8266 бага RAM-тай бөгөөд TLS гар барилт нь түүний хийдэг хамгийн үнэтэй зүйл юм. Arduino цөм BearSSL-ийг яг энэ хязгаарлалтын улмаас нийлүүлдэг бөгөөд CA-г шалгах эсвэл хурууны хээг бэхлэх хоёрын сонголт нь санах ойн ул мөр болон өөр нэрэнд хүчинтэй гэрчилгээтэй халдагчийн хийж чадах зүйлийг хоёуланг нь өөрчилдөг. Овоо зөвшөөрвөл broker-ийн CA-г шалгах нь илүү хүчтэй сонголт. Ачааны хэмжээ ч чухал: MQTT клиент буфер барьдаг бөгөөд түүнээс том мессежийг буферийг зориуд өсгөхгүй бол чимээгүй тасладаг.

Keepalive болон socket-ийн хугацаа нэг төсвийн хэсэг, учир нь үхсэн холболтыг хэзээ ч анзаардаггүй клиент алдаа мэдээлэлгүйгээр коман хүлээж авахаа болино.

Хаздаг мессежийн семантик

Хадгалсан мессежийг broker хадгалаад дараа нь тохирох захиалагчдад хүргэдэг, энэ нь одоогийн төлөвт маш сайн, нэг удаагийн командад аюултай: дахин холбогдсон төхөөрөмж өчигдрийн командыг шинэ мэт авч болно. QoS 1 нь дор хаяж нэг удаа хүргэхийг баталгаажуулдаг тул хуулбар нь хэвийн бөгөөд програмыг давталтад тэсвэртэй байх ёстой, хамгийн тохиромжтой нь татгалзаж чадах танигч эсвэл цагийн тэмдэгтэй. Сүүлчийн гэрээт төхөөрөмж унах үед төлөвийн дохио өгдөг, гэхдээ холболт дүүжлэгдэхгүйгээр үнэхээр бүтэлгүйтсэн тохиолдолд л.

Цэвэр сессийн зан төлөв нь таныг байхгүй үед broker захиалгыг тань хадгалах эсэхийг шийддэг бөгөөд энд алдах нь зарим төхөөрөмж дахин холбогдох бүрт эхний мессежийг алддаг шалтгаан юм.

TLS нь broker хүртэлх хэсгийг хамгаалдаг. Энэ нь broker операторын эсрэг ачааны төгсгөлөөс төгсгөл хүртэлх шифрлэлт биш, тэр таны түүгээр нийтэлсэн бүхнийг уншиж чадна.

Амьдралын мөчлөгийг хязгаарлаж, хор хөнөөлгүй өгөгдлөөр туршина уу

Дахин холбогдолтыг нягт давталтын оронд ухралттайгаар төлөвлөж, сесс тогтвортой биш бол тодорхой дахин захиалж, холболтын үр дүнг бүртгэж, чимээгүй офлайн төхөөрөмж нотолгоо үлдээх болно. Дахин холбогдолтын замыг юу ч хийдэггүй жишээ ачаагаар туршиж үзээрэй, учир нь командын сувгийн эхний үйлдвэрлэлийн туршилт жинхэнэ команд байх ёсгүй. Дараа нь хуучирсан хадгалсан мессеж дахин холбогдох үед юу хийдгийг баталж, энэ зан төлөв сэдэв бүрт хүлээн зөвшөөрөхүйц эсэхийг шийдээрэй.

Ингэж хийснээр дизайн нэг ирсэн сүлжээний шаардлагыг арилгаж, төхөөрөмжийн програм хангамж, broker-ийн бодлого, мессежийн семантикийг далд таамаглал биш харин харагдах ажил болгон үлдээдэг.

Холбоотой нийтлэлүүд