Zusammenfassung

  • Der Beispiel-Empfänger von RTP setzte eine unbekannte SSRC auf Probe: Ein plausibles Paket genügte nicht, erst eine kurze Folge fortlaufender Nummern lieferte schwache Kontinuitätsevidenz.
  • Einen riesigen Sprung wies er zunächst ab und merkte sich dessen Nachfolger; nur dessen Ankunft eröffnete eine neue Sequenzepoche. Das schützte die Verlustrechnung, authentisierte aber keinen Sender.

Ein gültiger Header machte noch keine Quelle

Der Empfänger sieht erstmals die SSRC 0x4A17 mit Sequenznummer 41.900. Version 2 stimmt, der Payload-Typ ist bekannt, Länge und Padding passen. Das kann der Anfang einer echten Quelle sein. Ebenso möglich sind fehlgeleiteter Verkehr, ein falscher Entschlüsselungskontext oder ein zufälliger Treffer in den wenigen prüfbaren Bits.

RFC 1889 beschrieb 1996 diese Beweisarmut. RFC 3550 behielt 2003 die Lösung bei. Version, Typ, Erweiterung, Padding und Länge schließen manche Deutung aus, sind für eine nie gehörte Quelle aber ausdrücklich schwache Prüfungen. Ein einzelnes Paket bringt keine Vergangenheit mit.

Deshalb wird Zeit Teil der Prüfung. Eine neue SSRC tritt in probation ein und gilt im Beispiel erst nach MIN_SEQUENTIAL fortlaufenden Nummern als gültig. Beim typischen Wert zwei bleibt 41.900 ein Kandidat; 41.901 erzeugt die erste Beziehung zwischen Beobachtungen.

Zwei aufeinanderfolgende Zahlen benennen weder Mensch noch Gerät und versprechen keine erfolgreiche Wiedergabe. Sie machen nur eine begrenzte Arbeitshypothese tragfähiger: Hier scheint eine Quelle einen Sequenzraum fortzuführen.

Vorsicht kostete den Anfang des Mediums

Pakete während der Probe dürfen verworfen oder bis zur Validierung gehalten werden, sofern die Verzögerung akzeptabel ist. Eine längere Folge erschwert zufällige Aufnahme, hält aber mehr Anfangsmedium zurück. Bei hoher Verlustrate kann eine echte Quelle den Nachweis nie abschließen.

Darum sind die Zahlen des Anhangs Beispielparameter. Ein zuvor gültiges RTCP-Paket schafft stärkeren Kontext. Vorhersagbare Zeitstempelschritte eines Payload-Formats erlauben weitere Prüfungen. Live-Telefonie und gespeicherte Wiedergabe müssen nicht denselben Preis für einen Fehlentscheid bezahlen.

Probation ist die treffende Bezeichnung: eine lokale Zulassungsregel unter Unsicherheit, keine vom Sender gelieferte Authentisierung.

Die 16-Bit-Zahl lief im Kreis

Nach der Zulassung bleiben Sequenznummern zyklisch. Auf 65.535 folgt null. Der Empfänger verbindet die höchste Nummer mit einem Zykluszähler und erhält eine erweiterte Sequenznummer für RTCP-Berichte.

Das Netz sortiert um. Eine leicht kleinere Nummer kann verspätet oder doppelt sein; eine mäßig größere kann eine Lücke anzeigen. Das Beispiel in RFC 3550 setzt MAX_MISORDER auf 100 und MAX_DROPOUT auf 3.000.

Ihre Bedeutung liegt in den Annahmen: fünfzig Pakete je Sekunde, zwei Sekunden maximale Umsortierung und eine Minute Ausfall. Bei anderer Rate beschreiben dieselben Zahlen andere Zeiträume. Wer nur die Konstanten kopiert, verliert die zeitliche Politik.

Ein gewaltiger Sprung brauchte einen Nachfolger

Nach Nummer 12.000 trifft 50.000 ein. Den ganzen Abstand sofort als Verlust zu zählen, erzeugt eine präzise Katastrophe ohne Beobachtung. Sofort einen Neustart zu erklären, lässt eine einzelne Anomalie Geschichte schreiben.

Der Algorithmus weist den Sprung zunächst ab und speichert die schlechte Nummer plus eins als bad_seq. Kommt danach 50.001, bilden beide einen fortlaufenden neuen Anfang. Erst dann initialisiert der Empfänger seinen Zustand neu und nimmt das zweite Paket als erste Beobachtung der neuen Epoche an.

Die erste Probe fragt, ob eine unbekannte SSRC langlebigen Zustand verdient. Die Sprungbestätigung fragt, ob die alte Geschichte einer bekannten SSRC die Gegenwart noch erklärt. Beide benötigen Kontinuität, weil eine ausdrückliche Neustartmeldung nicht vorausgesetzt werden kann.

Der Nullpunkt bekannte eine Wissenslücke

Mit der Resynchronisierung beginnen Verluststatistiken neu. Frühere Verluste werden dadurch nicht geleugnet. Der Empfänger verweigert nur eine Zahl für eine unbeobachtete Zeit, in der ganze 16-Bit-Zyklen oder ein Neustart mit zufälligem Anfang gelegen haben können.

Schon die normale Rechnung ist überraschend. RFC 3550 definiert kumulierten Verlust als erwartet minus empfangen; verspätete und doppelte Pakete zählen als empfangen. Viele Duplikate können ein negatives Ergebnis erzeugen. RFC 3611 ergänzte Ereignisspuren für Verlust und Duplikation und verlangte, Beobachtung vor Interpretation zu stellen.

Die Epochengrenze bestimmt den Nenner. Einen durchgehenden Wert über eine unsichtbare Wiedergeburt zu ziehen, ersetzt ehrliche Unkenntnis durch dekorative Genauigkeit.

RFC 3550 reparierte das kopierbare Beispiel

RFC 3550 dokumentiert kleine, folgenreiche Korrekturen an RFC 1889. base_seq beginnt mit der empfangenen Nummer statt mit Nummer minus eins. Gespeichert wird die schlechte Nummer plus eins. Die vollständige Initialisierung wurde von einem einzelnen Funktionsaufruf getrennt; bei der alten Veröffentlichung verlorene Wörter kehrten zurück.

Ein off-by-one verändert die erwartete Paketmenge. Unklare Worte zu bad_seq verändern, welches Paket eine Epoche bestätigt. Pseudocode aus einem Anhang kann weiter wandern als der Absatz über seine Grenzen.

Die dauerhafte Idee sind nicht 2, 100 oder 3.000, sondern sichtbare Zustände: Kandidat, gültige Folge, zulässige Verspätung, verdächtiger Bruch und bestätigter Neubeginn.

Kontinuität war keine Unterschrift

Ein Fälscher kann fortlaufende Zahlen senden; eine echte Quelle kann durch Verlust scheitern. RFC 3711 definierte SRTP für Vertraulichkeit, Nachrichtenauthentisierung und Replay-Schutz bei passendem Schlüsselmanagement. Das ist eine andere Evidenzschicht.

Auch SRTP beweist nicht, dass ein Mensch zuhörte oder verstand. RTP probation behauptet viel weniger. Die erste Zahl schlägt eine Geschichte vor, die zweite schafft Kontinuität; ein Sprung hält das alte Konto an, sein Nachfolger kann ein neues öffnen. Erst der Zustand des Empfängers macht das Feld zu Evidenz.

Quellen