# Bitfelddiagramm

Ein Bitfeld-Diagramm bzw. Bitfelddiagramm ist ein grafisches Werkzeug, welches zur Visualisierung der Struktur und der Belegung von Bitfeldern innerhalb eines Datenworts verwendet wird.
Bitfelder repräsentieren Segmente von Bits, welche zur Speicherung von Daten innerhalb eines einzelnen Speicherwortes dienen. Diese Diagramme helfen Entwicklern, Ingenieuren und Technikern, die genaue Aufteilung und Bedeutung der einzelnen Bits innerhalb eines Wortes zu verstehen.
Ein Spezialfall von Bitfelddiagrammen sind Paketheader-Diagramme. Hierbei handelt es sich um Bitfelddiagramme, welche den Aufbau von Datenpaketen beschreiben.

## Aufbau und Struktur

Ein Bitfeld-Diagramm zeigt die Aufteilung eines Datenwortes in seine einzelnen Bits oder Gruppen von Bits, oft als Felder bezeichnet. Die Diagramme sind typischerweise rechteckig und zeigen jedes Bit oder jede Bitgruppe als separate Zelle innerhalb des Rechtecks.
Die Diagramme können horizontal oder vertikal angeordnet sein und zeigen in der Regel die Bitpositionen, beginnend mit Bit 0.

## Beispiele
### UDP-Header

Ein UDP-Header besteht aus mehreren Feldern, die in einem 64-Bit-Datenwort (8 Bytes) organisiert sind.
Hier ist ein Bitfeld-Diagramm eines UDP-Headers:

### ICMP-Header

Ein ICMP-Header besteht aus mehreren Feldern, die in einem 32-Bit-Datenwort (4 Bytes) organisiert sind.
Hier ist ein Bitfeld-Diagramm eines ICMP-Headers:

### IPv4-Header

Ein IPv4-Header besteht aus mehreren Feldern, die in einem 160-Bit-Datenwort (20 Bytes) organisiert sind.
Hier ist ein Bitfeld-Diagramm eines IPv4-Headers:

### IPv6-Header

Ein IPv6-Header besteht aus mehreren Feldern, die in einem 320-Bit-Datenwort (40 Bytes) organisiert sind.
Hier ist ein vereinfachtes Bitfeld-Diagramm eines IPv6-Headers:
In diesem Diagramm repräsentiert jede Zelle ein Bit des IPv6-Headers. Die Beschriftungen geben die Bedeutung der einzelnen Felder an, wie zum Beispiel die Versionsnummer, die Länge des Nutzlasts oder die Quell- und Zieladresse.

## Anwendung

Bitfeld-Diagramme finden in verschiedenen Bereichen Anwendung, darunter:
* Mikrocontroller-Programmierung: Bei der Programmierung von Mikrocontrollern werden Bitfelder häufig verwendet, um die verschiedenen Konfigurationsregister zu visualisieren.
* Protokolldefinition: In der Netzwerkkommunikation helfen Bitfeld-Diagramme, die Struktur von Headern und anderen Protokollfeldern zu spezifizieren, wie im obigen Beispiel des IPv6-Headers gezeigt. Beispielsweise enthalten die meisten RFCs der IETF Bitfeld-Diagramme, um Datenstrukturen zu definieren.
* Fehlerbehebung und Debugging: Entwickler nutzen Bitfeld-Diagramme, um Fehler in der Bitmanipulation und -steuerung zu identifizieren.

## Referenzen

* ↑ Bitfield diagram explanation. Fuchsia.dev, 15. März 2024, abgerufen am 14. Juli 2024.
* ↑ S. McQuistin, V. Band, D. Jacob, C. S. Perkins: Describing Protocol Data Units with Augmented Packet Header Diagrams. IETF Network Working Group, 22. August 2023, abgerufen am 14. Juli 2024 (englisch).
* ↑ RFC: <a href='https://datatracker.ietf.org/doc/html/rfc768' class='extiw' title='rfc:768'>768</a> – User Datagram Protocol. 1980 (englisch).
* ↑ RFC: <a href='https://datatracker.ietf.org/doc/html/rfc792' class='extiw' title='rfc:792'>792</a> – Internet Control Message Protocol. 1981 (englisch).
* ↑ RFC: <a href='https://datatracker.ietf.org/doc/html/rfc791' class='extiw' title='rfc:791'>791</a> – Internet Protocol. 1981 (englisch).
* ↑ RFC: <a href='https://datatracker.ietf.org/doc/html/rfc8200' class='extiw' title='rfc:8200'>8200</a> – Internet Protocol, Version 6 (IPv6) Specification. 2017 (englisch).