Datensegment
OSI-Modell
Ein Datensegment ist ein Datagramm, das zur Datenkapselung im OSI-Modell auf der vierten Schicht (Transportschicht) verwendet wird. Ein Datensegment besteht aus Protokollelementen, die Schicht-4-Steuerungsinformationen enthalten. Als Adressierung wird dem Datensegment eine Schicht-4-Adresse vergeben, also ein Port. Das Datensegment wird in der Schicht 3 in ein Datenpaket gekapselt.
Protokolle der Schicht 4, die Datensegmente erstellen, sind:
- Transmission Control Protocol (TCP)
- User Datagram Protocol (UDP)
- Stream Control Transmission Protocol (SCTP)
Programmiersprachen
Ein Datensegment bezeichnet in manchen Programmiersprachen einen Bereich, der die im Programm deklarierten Daten getrennt vom ausführbaren Code enthält. Dieser kann dabei eine Sektion in einem Objektfile oder im Arbeitsspeicher sein, der globale vom Programmierer initialisierte Variablen enthält. Manchmal werden reine Daten-, BSS-, Stack-, und Heap-Bereiche gemeinsam als „Datensegment“ bezeichnet.
In Maschinensprache bestehen dann eigene Segmente für Daten und ausführbaren Code. Dafür halten zum Beispiel Intel-Prozessoren Register CS (CodeSegment) und DS (DataSegment) bereit. Einzelne Befehle beziehen sich dann entweder auf das Daten- oder Codesegment. So berechnet eine Sprunganweisung wie JMP 0120 zum Beispiel aus dem Wert in CS und dem Wert 0120 die absolute Adresse welche anzuspringen ist. Befehle zum Datenaustausch wie zum Beispiel MOV DX, [BX] beziehen dagegen den in BX aktuellen Wert auf den im Register DS angegebenen Wert. Assemblersprachen stellen eigene Anweisungen zur Definition von Segmenten für Daten, Code, Stack, und deren Reihenfolge bereit (zum Beispiel .DATA, .CODE, .STACK, u. a.).
In manchen Betriebssystemen (z. B. in z/OS) ist die Trennung von Code- und Datensegmenten nicht erforderlich. Die Maschinenbefehle unterscheiden diese beiden Bereichstypen nicht, sondern adressieren Daten und Codeteile mit identischen Verfahren, Registern etc. Ein Maschinenprogramm kann demzufolge Daten und Code gemischt enthalten; aus software-ergonomischen Gründen werden jedoch Datendeklarationen und der Befehlsteil des Programms meist strukturell getrennt implementiert.