# ISO-TP (ISO 15765-2)

> ISO-TP ist das Transportprotokoll aus ISO 15765-2, das Diagnosenachrichten trägt, die nicht in einen CAN-Frame passen. Es teilt eine Nachricht in einen First Frame und Consecutive Frames, und der Empfänger steuert den Ablauf mit Flow-Control-Frames (Block Size und Separation Time STmin). Kurze Nachrichten gehen in einem Single Frame. Jeder UDS-Request auf CAN oder CAN FD läuft über ISO-TP, deshalb ist dessen Parser der erste Code im Steuergerät, der von Angreifern kontrollierte Bytes verarbeitet.

ISO-TP (ISO 15765-2) zerlegt UDS-Nachrichten in CAN-Frames mit Flow Control. Wie es funktioniert und warum fehlerhafte Frames Steuergeräte abstürzen lassen.

Source: https://auto-st.com/de/glossar/iso-tp · Updated: 2026-10-07

## Was ist ISO-TP?

ISO-TP ist die Netzwerk- und Transportschicht, mit der eine Diagnosenachricht, die länger als ein CAN-Frame ist, über CAN oder CAN FD läuft. Das erste Nibble jedes Frames, die Protocol Control Information (PCI), sagt, um welche Frame-Art es sich handelt:

| PCI | Frame | Bedeutung |
|---|---|---|
| `0x0N` | Single Frame | Ganze Nachricht, N Bytes (bis 7 auf klassischem CAN) |
| `0x1N NN` | First Frame | Beginn einer segmentierten Nachricht, 12-Bit-Gesamtlänge |
| `0x2N` | Consecutive Frame | Nächstes Segment, Sequenznummer N von 1 bis F, dann wieder 0 |
| `0x30` / `0x31` / `0x32` | Flow Control | Weiter, warten, Überlauf; danach Block Size und STmin |

Das Lesen einer 20 Byte langen VIN-Antwort sieht mit Normal Addressing so aus. Der Tester schickt `03 22 F1 90 55 55 55 55` (Single Frame, Padding `55`). Das Steuergerät antwortet mit einem First Frame `10 14 62 F1 90 57 56 57` (0x014 = 20 Bytes), der Tester antwortet `30 00 00` (weiter, keine Blockgrenze, kein Abstand), und das Steuergerät schickt `21 ...` und `22 ...` mit den restlichen 14 Bytes.

## Wo ist es definiert?

ISO 15765-2 definiert die Frame-Arten, die Adressierungsformate (Normal, Extended, Mixed und Normal Fixed für 29-Bit-Identifier), die Flow-Control-Parameter und die Timer N_As, N_Bs, N_Cr und weitere. Die Ausgabe 2016 brachte die CAN-FD-Unterstützung und die Escape-Sequenzen für längere Single und First Frames; aktuell ist ISO 15765-2:2024. CAN selbst ist ISO 11898-1, UDS darüber ist ISO 14229.

## Was es in der Praxis bedeutet

In ISO-TP verarbeitet ein Steuergerät zum ersten Mal Bytes, die ein Tester oder ein Angreifer kontrolliert. Der Reassembly-Code legt aus der Länge im First Frame einen Puffer an, zählt Sequenznummern und lässt Timer laufen, alles bevor die UDS-Schicht irgendetwas sieht. Damit ist ISO-TP ein klassischer Ort für Speicherfehler.

Wir sehen regelmäßig Steuergeräte, die zurücksetzen oder hängen, wenn ein First Frame eine Länge ankündigt, die der Puffer nicht fassen kann, wenn die angekündigte Länge kleiner ist als die bereits gesendeten Daten, wenn Consecutive Frames außer der Reihe kommen oder wenn ein Sender STmin ignoriert. An Leistungselektronik-Steuergeräten haben wir erlebt, dass ein einziger fehlerhafter First Frame den Diagnose-Stack bis zum Neustart lahmlegt. Falsches Padding und ein unpassendes Adressierungsformat sind die anderen typischen Probleme am Prüfstand: das Steuergerät bleibt einfach stumm, was nach "keine Diagnose" aussieht, bis du das richtige Format probierst.

## Wie AutoST es testet

AutoST findet ISO-TP-Endpunkte während der Enumeration, indem es Paare aus Request- und Response-Identifiern prüft, und führt dann jeden UDS-Test über diesen Transport aus. Die UDS-Fuzzing-Engine schickt Payloads bis 128 Bytes, was segmentierte Übertragungen mit First, Consecutive und Flow-Control-Frames erzwingt, und ein TesterPresent-Lebenszeichen-Check nach jeder Iteration meldet ein Steuergerät, dessen Transport nicht mehr antwortet.

## Häufige Missverständnisse

ISO-TP bringt keine Sicherheit. Flow Control ist ein Takt-Mechanismus, keine Zugriffsprüfung, und ein Frame, der die Regeln bricht, soll ignoriert werden, nicht das Steuergerät abstürzen lassen. Außerdem beweist ein stummes Steuergerät nicht, dass die Diagnose abgeschaltet ist: Adressierungsformat oder Padding passen vielleicht einfach nicht.

## FAQ

**Wie lang darf eine ISO-TP-Nachricht maximal sein?**

Mit dem klassischen 12-Bit-Längenfeld im First Frame 4095 Bytes. Seit der Ausgabe 2016 folgt auf einen First Frame mit Länge 0 eine 32-Bit-Länge (die Escape-Sequenz), damit sind deutlich längere Nachrichten möglich, vor allem mit CAN FD und beim Flashen.

**Was bedeuten Block Size und STmin?**

Beide schickt der Empfänger im Flow-Control-Frame. Die Block Size sagt, wie viele Consecutive Frames der Sender schicken darf, bevor er auf die nächste Flow Control wartet (0 heißt: alle). STmin ist der Mindestabstand zwischen Consecutive Frames: 0x00 bis 0x7F sind Millisekunden, 0xF1 bis 0xF9 sind 100 bis 900 Mikrosekunden.

**Wird ISO-TP nur für UDS verwendet?**

Meist für UDS- und OBD-Diagnose auf CAN, aber jedes Protokoll, das auf CAN längere Nachrichten braucht, kann es nutzen. Über Ethernet ersetzt DoIP das Protokoll, weil TCP die Segmentierung schon übernimmt.

## Sources

- [ISO 15765-2:2024 Straßenfahrzeuge, Diagnosekommunikation über CAN (DoCAN), Teil 2: Transportprotokoll und Netzwerkschichtdienste](https://www.iso.org/standard/84211.html)
- [ISO 14229-1:2020 Straßenfahrzeuge, Unified diagnostic services (UDS), Teil 1: Anwendungsschicht](https://www.iso.org/standard/72439.html)
- [ISO 11898-1:2015 Straßenfahrzeuge, Controller Area Network (CAN), Teil 1: Sicherungsschicht und physikalische Signalisierung](https://www.iso.org/standard/63648.html)

## Related

- [CAN-Bus (Controller Area Network)](https://auto-st.com/de/glossar/can-bus)
- [CAN FD (CAN with Flexible Data Rate)](https://auto-st.com/de/glossar/can-fd)
- [UDS (Unified Diagnostic Services)](https://auto-st.com/de/glossar/uds)
- [ISO-TP-Frame-Rechner](https://auto-st.com/de/tools/iso-tp-rechner)
- [Eine UDS-Fuzzing-Methodik, die echte Bugs findet](https://auto-st.com/de/insights/uds-fuzzing-methodik)
- [Mach es am Prüfstand kaputt, nicht im Feld.](https://auto-st.com/de/ecu-fuzzing)

---
AutoST by Zyberum. Canonical page: https://auto-st.com/de/glossar/iso-tp
