Dieser Link sagt Folgendes: Die Verwendung von Sequenznummern behebt den doppelten Fehler .
Wann können doppelte Nachrichten bei einem Empfänger landen?
Wenn ein Knoten einen Fehler erkennt, sendet er ein Fehler-Flag aus, und wenn alle anderen empfangenden Knoten den Fehler erkennen, senden auch sie Fehler-Flags aus und zerstören die empfangene Nachricht. Der Sender sendet die Nachricht dann erneut.
Mir ist nicht bekannt, dass möglicherweise doppelte Nachrichten empfangen werden ...
Bitte helfen Sie mir, da ich entscheiden muss, ob in meinen Nachrichten eine Sequenznummer verwendet werden muss oder nicht.
Danke
Die von Ihnen verlinkte Präsentation handelt von einer Situation, in der ein Empfänger eine Nachricht akzeptiert, ein Sender dieselbe Nachricht jedoch als falsch übertragen erkennt. Derzeit verstehe ich nicht genau, wie das passieren würde, aber ich denke, ein Empfänger könnte Daten aus einem Frame verwenden, bei dem das ACK-Bit aus irgendeinem Grund nicht gesetzt wird, was dazu führt, dass der Sender den Frame erneut sendet.
Der genaue Grund, warum dies passieren kann oder würde, ist meiner Meinung nach irrelevant, sondern Sie müssen sich überlegen, welche Art von Daten Sie übertragen: Wenn Sie z. B. den aktuellen Wert eines Sensormesswerts regelmäßig über den Bus senden, erfolgt keine erneute Übertragung schlechte Sache. Wenn Ihre Nachricht andererseits einen kleinen Teil eines größeren Datenblocks enthält, führt das erneute Senden dieses Teils dazu, dass der größere Block beschädigt wird. Aus diesem Grund enthalten Protokolle wie CCP oder XCP einen Nachrichtenzähler.
Möglichkeit 1:
Der Zeitpunkt, zu dem eine Nachricht als gültig angenommen wird, ist für den Sender und die Empfänger der Nachricht unterschiedlich. Der Sender prüft alle Bits bis zum Ende des END OF FRAME-Feldes. Empfänger betrachten eine Nachricht als gültig, wenn bis zum vorletzten Bit von END OF FRAME kein Fehler vorliegt. Der Wert des letzten Bits von END OF FRAME wird als egal behandelt (ein dominanter Wert führt nicht zu einem FORM ERROR). Dieser Unterschied in der Interpretation eines gültigen Sendens/Empfangens einer Nachricht kann zu inkonsistenten Auslassungen/Duplikaten von Nachrichten führen. Wenn ein Sender feststellt, dass das letzte Bit dominant statt rezessiv ist, sendet er erneut. Der Empfänger hat keine Ahnung, dass es sich um eine doppelte Nachricht handelt, da er die vorherige Nachricht nicht als Fehler betrachtet hat.
Lundin
Dmitri Grigorjew
AlphaGoku
AlphaGoku
AlphaGoku
0x6d64
AlphaGoku