Ich habe mich gefragt, wie man ein sicheres UART/USB-Kommunikationsprotokoll erstellt. Ich brauche es für die Kommunikation zwischen einem Mikrocontroller und einem PC. Ich habe ~ 10 Befehle und dachte, ich würde 10 separate Bestätigungsbefehle für jeden von ihnen verwenden.
Der Austausch soll so ablaufen:
0x01
~0x01
, wenn es fertig ist (ich negiere die Zahl, um einen größeren "Abstand" zwischen den beiden Zahlen zu schaffen).0x01
erwartet . ~0x01
Wenn etwas anderes als ~0x01
zurückkommt, weiß der µC, dass etwas schief gelaufen ist und sendet eine neue Anfrage oder eine FehlermeldungDer Fall, dass der µC sendet 0x01
, der PC versteht 0x02
und zurücksendet ~0x02
, aber der µC ~0x01
aufgrund von Rauschen liest, wäre ziemlich schlecht.
Wie sicher ist das in Bezug auf die Übertragung, oder wie kann ich das sicherer machen?
Ich denke, Sie sollten längere Befehle definieren, einschließlich wahrscheinlich Prüfsumme oder CRC, und auf eine ACK / NACK- oder Fehlerbedingung warten.
Sie können Beispiele aus einfachen Protokollen wie TFTP nehmen ( RFC 1350 )
Für eine sichere Kommunikation sollten Sie alle möglichen Threads zu Ihrer Kommunikationsleitung berücksichtigen. Dazu muss festgelegt werden, ob das System von außen erreichbar ist (Drittanbietersysteme zB WLAN)
Generell muss man an folgende Threads denken:
Standardmaßnahmen gegen Fäden sind:
Eugen Sch.
Fizz
JavaForStarters
Neil_DE
Benutzer3629249
Wladimir Cravero
JavaForStarters
mkeith
Chris Stratton
Superkatze
Benutzer65586