Inspektor
Der Inspektor ist eine einzige Zeitleiste für jedes Werkzeug: Jede OSC-Nachricht, jedes Datagramm, jeder HTTP-Austausch, jede MQTT-Veröffentlichung, jede WebSocket-Nachricht, jedes weitergeleitete Paket und jeder Emulator-Austausch landet dort, dekodiert, mit den Bytes, aus denen er bestand. Nutzen Sie ihn, um zu sehen, was tatsächlich über die Leitung ging, in welcher Reihenfolge und was damit geschah.
Er lebt im unteren Bereich, als Registerkarte Inspektor neben der Konsole, sodass er auf jeder Ansicht da ist. Klicken Sie die Registerkarte an, um ihn zu öffnen; der Bereich öffnet sich hoch genug für ein paar Zeilen und die Details eines Frames. Die Schaltfläche ⤢ (Auf Fensterhöhe) macht den Bereich so hoch wie das Fenster. Der Inspektor behält seine Liste und Auswahl, während Sie den Bereich schließen oder die Ansicht wechseln.
Mitschnitt
Der Mitschnitt ist aus, wenn Signal Lab startet, und solange er aus ist, kostet er nichts: Die Werkzeuge bauen nicht einmal Frames.
- Öffnen Sie die Registerkarte Inspektor.
- Drücken Sie Mitschnitt starten. Der Punkt auf der Registerkarte wird rot und pulsiert.
- Nutzen Sie ein beliebiges Werkzeug. Frames erscheinen oben in der Liste, die neuesten zuerst.
- Drücken Sie Mitschnitt beenden, wenn Sie haben, was Sie brauchen.
Die Registerkarte zeigt, wie viele Frames mitgeschnitten wurden, von jeder Ansicht aus.
Frames werden ab dem Moment mitgeschnitten, in dem Sie den Mitschnitt starten, nie vorher: Starten Sie ihn zuerst, dann senden Sie.
Auf einem Server gehört der Mitschnitt dem Server: Jede bei ihm angemeldete Seite sieht dieselben Frames, und ihn auf einer Seite zu starten oder zu leeren tut es für alle.
Was mitgeschnitten wird
| Werkzeug | Frames | Wie viele |
|---|---|---|
| OSC: Senden | Jede gesendete Nachricht | Jede |
| OSC: Monitor | Jedes empfangene Paket; eines, das sich nicht dekodieren lässt, wird mit dem Dekodierfehler markiert | Jedes |
| OSC: Signalgenerator | Gesendete Nachrichten | Höchstens eine pro 100 ms, markiert mit sampled |
| Broadcast: einmal senden | Jedes Datagramm, eines pro Ziel; ein fehlgeschlagener Sendevorgang mit seinem Fehler | Jedes |
| Broadcast: Beacon | Gesendete Datagramme | Höchstens eines pro 50 ms |
| Broadcast: Erkennungs-Listener | Empfangene Sonden | Höchstens eine pro 40 ms |
| Broadcast: Erkennungs-Listener | Seine Antworten (auto-reply) | Jede |
| HTTP: Senden, Signale, Experiment-Anfragen | Jeder Austausch: die Anfragezeile, der Status und die Zeit, die Antwort-Header und der Anfang des Bodys | Jeder |
| HTTP: Last-Burst und Anfragen unter Last | Austausche | Höchstens einer pro 100 ms |
| MQTT: Verbindung | Gesendete Veröffentlichungen | Jede |
| MQTT: Verbindung | Empfangene Nachrichten | Höchstens eine pro 200 ms |
| MQTT: ein MQTT-Signal, gesendet, während die Ansicht nicht mit seinem Broker verbunden ist | Die Veröffentlichung | Jede |
| WebSocket | Gesendete und empfangene Nachrichten | Jede, solange der Verkehr leicht ist; höchstens 200 pro Sekunde |
| Emulatoren | Was eintrifft und die Antwort, zusammen | Höchstens ein Austausch pro 10 ms |
| Störung | Jedes weitergeleitete Datagramm oder jeder Block, in beide Richtungen, mit seinem Schicksal | Höchstens eines pro 25 ms für beide Richtungen zusammen |
| Sturm (UDP) | Flutpakete, alle gleich | Eines pro Sekunde, markiert mit sampled 1/s; ein TCP-Sturm schneidet keines mit |
| Scanner | Jeder offene Port, mit seinem Banner | Jeder |
| Experimente | Was die Schritte eines Durchlaufs senden (bei einer TCP-Nachricht: die geschriebenen Nutzdaten und die gelesene Antwort) und was seine Warte-Knoten empfangen | Wie das Werkzeug, das es nutzt |
Ein Werkzeug, das Stichproben zieht, lässt den Rest absichtlich aus und zählt sie: Der nächste Frame, den es doch darstellt, sagt in seinem Befund, wie viele es zurückhielt, als +n not shown (sampled · +5 not shown). Die Zahl betrifft das, was das Werkzeug dargestellt hätte, nicht das eigene Verwerfen des Mitschnitts (siehe Zahlen und Lücken).
Die Frame-Liste
| Spalte | Was |
|---|---|
| Zeit | Wann er mitgeschnitten wurde, auf die Millisekunde. |
| Richt. | → gesendet (tx), ← empfangen (rx). Bei einem Relais ist → Client zum Ziel und ← Ziel zum Client. |
| Prot. | osc, udp, tcp, http, mqtt oder ws. |
| Gegenstelle | Die Gegenseite: ein IP:port, eine URL, ein Broker. |
| Bytes | Die Größe des Frames. |
| Inhalt | Eine Zeile in der eigenen Notation des Protokolls, etwa /fader/1 0.75 oder GET http://127.0.0.1:8080/ → 200 in 3ms. |
| Befund | Was damit geschah, wenn es etwas zu sagen gibt. |
Der Befund ist grün, gelb oder rot. Rot ist ein Verlust oder ein Fehlschlag (dropped (loss), failed, error: …); gelb ist ein veränderter Frame oder nur eine Stichprobe von vielen (corrupted, copy 2/2, sampled, +n not shown); grün ist der Rest. Manche Befunde, auf die Sie treffen werden:
| Befund | Von | Bedeutet |
|---|---|---|
forwarded +42ms | Störung | Nach dieser Verzögerung weitergegeben; · corrupted, · reordered oder · copy 1/2 können folgen. |
dropped (loss), dropped (burst), dropped (offline) | Störung | Absichtlich verloren, und warum. |
throttled | Störung | Von der Bandbreitengrenze verworfen. |
· client→target, · target→client | Störung | Beendet den Befund jedes weitergeleiteten Frames, vor jedem +n not shown: in welche Richtung er unterwegs war. |
#2 → 200 OK · 37 B, — → 404 … | Emulatoren | Welche Regel geantwortet hat (—: keine) und die Antwort. |
down, down → 503 | Emulatoren | Er traf ein, während der Emulator ausgefallen war. |
200 OK, failed | HTTP | Der Antwortstatus oder gar keine Antwort. |
open | Scanner | Ein offener Port. |
auto-reply | Erkennung | Eine Antwort, die der Listener auf eine Sonde gesendet hat. |
clears retained | MQTT | Eine leere Retained-Veröffentlichung. |
+n not shown | Jedes Werkzeug, das Stichproben zieht | So viele Frames seit dem vorherigen wurden ausgelassen; es folgt dem anderen Befund des Frames nach einem ·. |
Die Liste behält die neuesten 4000 Frames und stellt die neuesten 300 dar, die zu den Filtern passen; unter den Filtern sagt sie, wie viele sie von wie vielen passenden anzeigt.
Filtern
- Tippen Sie in das Textfeld (nach Adresse, Gegenstelle, Quelle filtern…), um Frames zu behalten, deren Inhalt, Gegenstelle, Quelle, Protokoll oder Befund den Text enthält.
- Klicken Sie auf Protokoll-Chips (
osc,udp,tcp,http,mqtt,ws), um nur diese Protokolle anzuzeigen. Ist kein Chip an, wird jedes Protokoll angezeigt. - Klicken Sie auf
txoderrx, um nur gesendete oder nur empfangene Frames anzuzeigen. - zurücksetzen löscht alle drei.
Filter ändern nur, was die Liste zeigt. Mitschnitt, die Zahlen und ein Export umfassen immer alles.
Anhalten und leeren
Ansicht anhalten friert die Liste ein, damit Sie sie lesen können, während der Verkehr weiterläuft; der Mitschnitt läuft weiter. Ansicht fortsetzen lässt wieder neue Frames herein. Frames, die eintrafen, während die Ansicht angehalten war, werden nicht in die Liste aufgenommen, sind aber im Mitschnitt und in einem Export.
Leeren leert die Liste und den Mitschnitt und setzt seine Zahlen zurück.
Zahlen und Lücken
Die Leiste oben zählt die mitgeschnittenen Frames und ihre Bytes sowie, wie voll der Mitschnitt ist (gehaltene Frames von 8192).
Wenn Frames schneller eintreffen, als die Liste sie aufnehmen kann — mehr als 250 in etwa einer Achtelsekunde —, überspringt die Liste die ältesten von ihnen. Ein gelber Chip zählt dann die nicht angezeigten Frames, und eine Zeile in der Liste markiert, wo sie fehlen. Diese Frames sind noch im Mitschnitt, sofern neuere sie nicht inzwischen hinausgedrängt haben: Exportieren Sie ihn, um sie zu sehen.
Die Details eines Frames
Klicken Sie auf eine Zeile, um den Frame rechts zu sehen.
| Feld | Was |
|---|---|
| Nr. | Die Nummer des Frames. Die Nummern steigen in Mitschnittreihenfolge und werden nie wiederverwendet. |
| Zeit | Wann er mitgeschnitten wurde. |
| Richtung | Gesendet oder empfangen. |
| Protokoll | Wie in der Liste. |
| Quelle | Das Werkzeug, das ihn mitgeschnitten hat (osc-send, osc-monitor, netsim, emulator, experiment-wait, …), und seine Job-Nummer, wenn es zu einem gehört. |
| lokal | Die Adresse auf dieser Seite, wenn es eine gibt. Bei einem weitergeleiteten Frame die Adresse, auf der das Relais empfängt. |
| Gegenstelle | Die Gegenseite. Bei einem weitergeleiteten Frame, wohin er ging: das Ziel oder der Client, an den die Antwort zurückging. |
| Größe | Seine Größe in Bytes. |
| Befund | Wie in der Liste. |
Unter Dekodiert steht der Frame, in seinem Protokoll gelesen: jede Nachricht eines OSC-Bundles mit ihren Argumenten, die Header einer HTTP-Antwort und der Anfang ihres Bodys, die Anfrage eines Emulators und seine Antwort.
Unter Bytes steht ein Hex-Dump: Offset, 16 Bytes in Hex und dieselben Bytes als Text. Die Liste enthält das erste KiB jedes Frames; ist ein Frame länger, lädt eine Schaltfläche unter dem Dump alles davon.
Was ein Frame behält
| Grenze | Wert | An der Grenze |
|---|---|---|
| Bytes, die ein Frame behält | 256 KiB | Ein längerer Frame behält seine ersten 256 KiB und sagt, wie viel des Ganzen er behielt. |
| Frames im Mitschnitt | 8192 | Der älteste Frame macht Platz. |
| Bytes, die der Mitschnitt insgesamt behält | 64 MiB | Die ältesten Frames machen Platz. |
Manche Frames behalten keine Bytes: HTTP-Austausche (ihre Größe wird festgehalten, und die Antwort-Header und der Anfang des Bodys stehen stattdessen im dekodierten Text) und offene Ports des Scanners.
Ein MQTT-Frame behält die Nutzdaten der Nachricht, nicht das Protokollpaket darum herum; das Topic, QoS und das Retain-Flag stehen in seinem Inhalt.
Geheimnisse
Solange ein Durchlauf oder Jetzt senden Geheimnisse verwendet, werden ihre Werte in jedem Frame maskiert, bevor er mitgeschnitten wird: •••• im Inhalt, im dekodierten Text, in den Adressen und im Befund, und * für jedes Byte in den Nutzdaten, damit die Offsets im Dump stimmen. Auch die Anmeldedaten der Ansicht HTTP erscheinen nie: Ein HTTP-Frame enthält die Antwort, nicht den gesendeten Authorization-Header.
Einen Frame als Signal speichern
Um ein Paket aufzubewahren, das Sie gefangen haben, und es später erneut zu senden — wenn das Gerät, das es gesendet hat, nicht mehr da ist:
- Wählen Sie den Frame aus.
- Drücken Sie Als Signal speichern.
Das Signal landet im Ordner Mitgeschnitten der Signalbibliothek mit jedem Byte des Frames, entnommen dem, was der Mitschnitt behielt, nicht dem dekodierten Text. Es wird nach dem Inhalt des Frames benannt, und seine Notiz sagt, von welchem Frame es kam.
Was Sie erhalten, hängt vom Frame ab:
| Frame | Signal |
|---|---|
| Ein OSC- oder UDP-Datagramm | Ein rohes UDP-Signal mit den Bytes des Frames, hex. |
| Eine MQTT-Veröffentlichung — gesendet, empfangen oder von einem Emulator | Ein MQTT-Signal mit Broker, Topic, QoS und Retain-Flag des Frames und seinen Nutzdaten als Text, genau wie sie waren. Leere Nutzdaten bleiben erhalten, sodass das Löschen eines Retained-Werts gespeichert werden kann. |
| Alles andere: ein TCP-Datenstrom (auch einer, den ein Relais trug, oder der des TCP-Knotens), ein HTTP-Austausch, eine WebSocket-Nachricht, ein MQTT-Paket, das keine Veröffentlichung ist (das Subscribe eines Clients an einem Emulator) | Nichts: Die Schaltfläche ist aus, und ihr Hinweis sagt, warum. Ein Signal sendet ein Datagramm oder eine Veröffentlichung; diese lassen sich nicht so, wie sie waren, erneut senden. |
Ein Datagramm wird gesendet an:
- einen empfangenen Frame — die Adresse, die ihn empfangen hat (die Seite lokal), sodass das Signal für den Absender einspringt;
- einen gesendeten Frame — die Gegenstelle, an die er gesendet wurde;
- einen weitergeleiteten Frame, in beide Richtungen — die Adresse, an die er ging: das Ziel für einen vom Client kommenden Frame, der Client für eine Antwort.
Wenn diese Adresse jede Adresse dieses Computers ist — ein Monitor, der auf 0.0.0.0:9000 oder [::]:9000 empfängt —, wird das Signal stattdessen auf diesen Computer gerichtet: 127.0.0.1:9000 oder [::1]:9000. Öffnen Sie das Signal und ändern Sie sein Ziel, wenn Sie eine andere Adresse meinen.
Ein MQTT-Signal geht zu dem Broker, den der Frame nennt. Ein Broker, der auf jeder Adresse empfängt, wird auf dieselbe Weise unter 127.0.0.1 erreicht.
Die Schaltfläche ist außerdem aus für:
- einen nicht vollständig behaltenen Frame: einen größeren als 256 KiB oder einen, der keine Bytes behielt;
- eine MQTT-Nachricht, deren Nutzdaten kein Text sind — die Nutzdaten eines Signals sind Text, daher ließen sich ihre Bytes nicht so, wie sie waren, erneut senden;
- einen empfangenen Frame, der keinen Socket auf dieser Seite nennt, sodass es keine Adresse zum Senden gibt.
Ein Frame, den der Mitschnitt bereits freigegeben hat, lässt sich ebenfalls nicht speichern; die Konsole sagt es. Solange die Bibliotheksdatei nicht gelesen werden kann, ist Als Signal speichern ebenfalls aus, und der Hinweis zeigt den Fehler der Datei (siehe Signale).
Exportieren
.jsonl exportieren und .txt exportieren schreiben den ganzen Mitschnitt — bis zu 8192 Frames, jedes Byte, das jeder behielt, egal was die Filter zeigen — in eine Datei capture-<time>.jsonl oder capture-<time>.txt im Datenordner (siehe Dateien). Die Konsole sagt, wo. In einem mit einem Server verbundenen Browser wird die Datei auf dem Server geschrieben, und Ihr Browser lädt sie herunter.
Ein leerer Mitschnitt wird nicht geschrieben; die Konsole sagt, dass es nichts zu speichern gibt.
.jsonl— ein JSON-Objekt pro Zeile, eine Zeile pro Frame:seq,ts(Millisekunden seit 1970),proto,dir,source,job_id,local,remote,bytes,kept,summary,detail,hex(der Dump des ersten KiB),verdictunddata, die behaltenen Bytes als Base64..txt— zum Lesen: eine Zeile pro Frame mit seiner Nummer, Zeit, Richtung, Protokoll, Gegenstelle, Größe und seinem Befund, dann sein Inhalt, sein dekodierter Text und ein Hex-Dump jedes Bytes, das er behielt.
{"seq":12,"ts":1767225600123,"proto":"osc","dir":"rx","source":"osc-monitor","job_id":3,"local":"0.0.0.0:9000","remote":"127.0.0.1:53211","bytes":20,"summary":"/fader/1 0.75","detail":"/fader/1 0.75","hex":"0000 2f 66 61 64 65 72 2f 31 00 00 00 00 2c 66 00 00 |/fader/1....,f..|\n0010 3f 40 00 00 |?@..|\n","verdict":null,"kept":20,"data":"L2ZhZGVyLzEAAAAALGYAAD9AAAA="}Von anderswo kommend
Andere Ansichten zeigen auf Frames: Ein Warte-Knoten in der Zeitleiste eines Experiments verlinkt den Frame, auf den er passte, und die Empfangsliste eines Emulators hat eine Schaltfläche ⌕ (Im Inspektor öffnen) an jedem Austausch. Folgt man einer, öffnet sich der Inspektor mit diesem Frame ausgewählt, den Filtern geleert und der Ansicht fortgesetzt.
Verwandte Seiten
- Signale — was ein gespeicherter Frame wird.
- Störung — die Befunde des Relais.
- Emulatoren — was ein Emulator empfangen hat.