<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Network_Block_Device</id>
	<title>Network Block Device - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Network_Block_Device"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Network_Block_Device&amp;action=history"/>
	<updated>2026-05-19T19:43:39Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Network_Block_Device&amp;diff=68253&amp;oldid=prev</id>
		<title>imported&gt;Aka: typografische Anführungszeichen</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Network_Block_Device&amp;diff=68253&amp;oldid=prev"/>
		<updated>2024-10-23T19:54:40Z</updated>

		<summary type="html">&lt;p&gt;typografische Anführungszeichen&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Ein &amp;#039;&amp;#039;&amp;#039;Network Block Device&amp;#039;&amp;#039;&amp;#039; ([[Englische Sprache|engl.]] für &amp;#039;&amp;#039;Netzwerk-Blockgerät&amp;#039;&amp;#039;, abgekürzt &amp;#039;&amp;#039;NBD&amp;#039;&amp;#039;) ist eine Art &amp;#039;&amp;#039;virtuelle [[Laufwerk (Computer)|Festplatte]]&amp;#039;&amp;#039;, auf die ein [[Computer|Rechner]] via [[Internet Protocol|Internetprotokoll]] zugreifen kann. Das NBD wird von einem NBD-[[Server]] bereitgestellt. Er bietet hierfür eine eigene Festplatte, [[Festplattenpartition]] oder eine [[Datei]] als NBD bestimmten anderen Rechnern ([[Client]]s) an. Ein anderer Rechner (oder auch der gleiche) kann sich über eine [[Transmission Control Protocol|TCP]]-Verbindung mit dem NBD-Server verbinden und anschließend das NBD wie eine eigene lokale Festplatte benutzen.&lt;br /&gt;
&lt;br /&gt;
Derzeit existiert nur für [[Linux]] eine &amp;#039;&amp;#039;vollständige&amp;#039;&amp;#039; NBD-Implementierung. Linux spricht sämtliche [[Massenspeicher]] als sogenannte [[Gerätedatei#Blockorientierte Geräte|Blockgeräte]] an. Wenn ein Linux-Rechner ein Network Block Device nutzen soll, muss &amp;lt;span style=&amp;quot;font-family:monospace;&amp;quot;&amp;gt;&amp;#039;&amp;#039;NBD support&amp;#039;&amp;#039;&amp;lt;/span&amp;gt; in der [[Linux (Kernel)|Linux-Kernel]]-Konfiguration aktiviert sein, bzw. das [[Kernel-Modul]] &amp;lt;span style=&amp;quot;font-family:monospace;&amp;quot;&amp;gt;nbd.ko&amp;lt;/span&amp;gt; geladen sein. Ein [[Userspace]]-[[Dienstprogramm|Hilfsprogramm]] namens &amp;lt;span style=&amp;quot;font-family:monospace;&amp;quot;&amp;gt;nbd-client&amp;lt;/span&amp;gt; stellt nun die TCP-Verbindung zum NBD-Server her, gibt die bestehende Verbindung an den [[Kernel (Betriebssystem)|Kernel]] weiter und beendet sich dann. Dies hat den Vorteil, dass der Kernel sich nicht mit dem Verbindungsaufbau (und einer eventuellen [[Authentisierung]] usw.) befassen muss.&lt;br /&gt;
&lt;br /&gt;
Der NBD-Server ist betriebssystemunabhängig. Er kann also auch auf einem Nicht-Linux-System laufen, da keine Linux-spezifischen Funktionen benötigt werden. Es existiert ein Programm namens &amp;lt;span style=&amp;quot;font-family:monospace;&amp;quot;&amp;gt;nbd-server&amp;lt;/span&amp;gt;, das nichts weiter tut, als eine gegebene Datei (oder Partition etc.) an einem angegebenen TCP-[[Port (Netzwerkadresse)|Port]] bereitzustellen.&lt;br /&gt;
&lt;br /&gt;
Prinzipiell ist es möglich, über NBD einen festplattenlosen Rechner zu betreiben, der als einzigen Massenspeicher ein NBD besitzt. Da jedoch zum Aufbau der Verbindung noch ein externes Programm (&amp;lt;span style=&amp;quot;font-family:monospace;&amp;quot;&amp;gt;nbd-client&amp;lt;/span&amp;gt;) benötigt wird, ist dies nur mit Konzepten wie der &amp;#039;&amp;#039;init-ramdisk&amp;#039;&amp;#039; zu realisieren, einem [[Virtuelles Dateisystem|virtuellen Dateisystem]], welches im [[Random-Access Memory|RAM]] gehalten wird und im Kernel selbst gespeichert ist, sodass es nach dem Booten zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Da die Originalversion von NBD einige Schwächen hat (z.&amp;amp;nbsp;B. die Begrenzung auf 4 [[Byte|Gigabyte]] pro NBD), gibt es verschiedene Erweiterungen, die teilweise als „enhanced NBD“ bezeichnet werden. Diese sind jedoch [[Kompatibilität (Technik)|inkompatibel]] zum Original-NBD.&lt;br /&gt;
&lt;br /&gt;
== NBD-Protokoll (ab Version 2.6) ==&lt;br /&gt;
&lt;br /&gt;
Das Protokoll ist ein Binärprotokoll. Sämtliche Mehrbytewerte werden dabei in [[Network Byte Order]] gesendet.&lt;br /&gt;
&lt;br /&gt;
=== Handshake ===&lt;br /&gt;
Zuerst kommt eine Initialisierungsphase, bei der Daten zwischen dem NBD-Server und dem NBD-Clientprogramm ausgetauscht werden. Dieses Protokoll ist &amp;#039;&amp;#039;unabhängig&amp;#039;&amp;#039; vom NBD-Treiber im Linux-Kernel und variiert bei verschiedenen NBD-Implementierungen.&lt;br /&gt;
&lt;br /&gt;
==== Version ≤2.9.16 ====&lt;br /&gt;
&lt;br /&gt;
Das alte Handshake-Protokoll unterstützt genau ein Block Device pro Port.&lt;br /&gt;
Sobald ein Client sich zum NBD-Server verbunden hat, sendet der Server folgende [[Datenstruktur]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:2em&amp;quot;&lt;br /&gt;
|+ NBD Initialization packet (Server→Client)&amp;lt;ref&amp;gt;Aus dem Quellcode von nbd-2.9.13/cliserv.h&amp;lt;/ref&amp;gt;&lt;br /&gt;
! Offset !! Datentyp !! Name    !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| 0 || char[8] || INIT_PASSWD  || Identifizierungsstring &amp;lt;code&amp;gt;{&amp;#039;N&amp;#039;, &amp;#039;B&amp;#039;, &amp;#039;D&amp;#039;, &amp;#039;M&amp;#039;, &amp;#039;A&amp;#039;, &amp;#039;G&amp;#039;, &amp;#039;I&amp;#039;, &amp;#039;C&amp;#039;}&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 8 || uint64_t || cliserv_magic || [[Magische Zahl (Informatik)|Magic Number]] 0x00420281861253&lt;br /&gt;
|-&lt;br /&gt;
| 16 || uint64_t || export_size  || Größe des exportierten Blockdevices (in Byte)&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 24 || uint32_t || flags     || Flags:&lt;br /&gt;
* Bit 0: Es sind Flags vorhanden&lt;br /&gt;
* Bit 1: Gerät ist read-only&lt;br /&gt;
* Bit 2: Gerät unterstützt „FLUSH“-Befehl zum Leeren von Schreibcaches&lt;br /&gt;
* Bit 3 und 4: &amp;#039;&amp;#039;ungenutzt&amp;#039;&amp;#039;&lt;br /&gt;
* Bit 5: Gerät unterstützt den TRIM-Befehl, mit dem das Dateisystem dem Blocklayer freigewordene mitteilen kann&lt;br /&gt;
|-&lt;br /&gt;
| 28 || char[124] || reserved   || Reserviert (Derzeit gefüllt mit Nullbytes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Akzeptiert der Client den Identifizierungsstring oder die Magic Number nicht, schließt er die Verbindung. Andernfalls gilt die Verbindung als erfolgreich aufgebaut.&lt;br /&gt;
&lt;br /&gt;
==== Version ≥ 2.9.17 ====&lt;br /&gt;
&lt;br /&gt;
Das neue Handshake-Protokoll benutzt den IANA-registrierten Port 10809 und ein anderes Nachrichtenformat, das dem Server erlaubt, über einen TCP-Port mehrere Blockgeräte anzubieten, aus denen der Client über ihren Namen eines auswählen kann. Zusätzlich wurden die 32 Bit &amp;#039;&amp;#039;flags&amp;#039;&amp;#039; in 2 16-Bit-Teile aufgespalten, die es erlauben, serverglobale und geräteabhängige Flags zu trennen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:2em&amp;quot;&lt;br /&gt;
|+ Server Init packet (Server→Client)&amp;lt;ref&amp;gt;Aus dem Quellcode von nbd-3.2/proto.txt&amp;lt;/ref&amp;gt;&lt;br /&gt;
! Offset !! Datentyp !! Name    !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| 0 || char[8] || INIT_PASSWD  || Identifizierungsstring &amp;lt;code&amp;gt;{&amp;#039;N&amp;#039;, &amp;#039;B&amp;#039;, &amp;#039;D&amp;#039;, &amp;#039;M&amp;#039;, &amp;#039;A&amp;#039;, &amp;#039;G&amp;#039;, &amp;#039;I&amp;#039;, &amp;#039;C&amp;#039;}&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 8 || uint64_t || cliserv_magic || [[Magische Zahl (Informatik)|Magic Number]] 0x49484156454F5054 (=„IHAVEOPT“)&lt;br /&gt;
|-&lt;br /&gt;
| 16 || uint16_t || server_flags || Flags, die für den gesamten Server gelten. Üblicherweise haben die Flags den Wert 0003&amp;lt;sub&amp;gt;hex&amp;lt;/sub&amp;gt;. Die Bits bedeuten im Einzelnen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Bit 0&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;NBD_FLAG_FIXED_NEW_STILE: Gesetztes Bit zeigt an, dass ein bestimmter Handshake-Bug im Server gefixt ist&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Bit 1&amp;lt;/dt&amp;gt;&amp;lt;dd&amp;gt;NBD_FLAG_NO_ZEROES: Gesetztes Bit zeigt an, dass die Headernachricht &amp;#039;&amp;#039;nicht&amp;#039;&amp;#039; mit 124 Nullbytes aufgefüllt wird&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Der Client antwortet mit seinen Flags. Da bisher keine Flags definiert sind, bestehen sie nur aus 32 Nullbits:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:2em&amp;quot;&lt;br /&gt;
|+ Client Init packet (Server→Client)&lt;br /&gt;
! Offset !! Datentyp !! Name    !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| 0 || uint32_t || client_flags || bisher gleiche Bedeutung wie server_flags, also ebenfalls üblicherweise 0000&amp;#039;0003&amp;lt;sub&amp;gt;hex&amp;lt;/sub&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Anschließend sendet der Client verschiedene Optionen, die der Server entsprechend akzeptierend oder ablehnend quittiert:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:2em&amp;quot;&lt;br /&gt;
|+ Option packet (Client→Server)&lt;br /&gt;
! Offset !! Datentyp !! Name    !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| 0 || uint64_t || cliserv_magic || [[Magische Zahl (Informatik)|Magic Number]] 0x49484156454F5054 (=„IHAVEOPT“)&lt;br /&gt;
|-&lt;br /&gt;
| 8 || uint32_t || option_number || Kennnummer/Typ der Option&lt;br /&gt;
|-&lt;br /&gt;
| 12 || uint32_t || option_length || Länge der Option (in Bytes)&lt;br /&gt;
|-&lt;br /&gt;
| 16 || &amp;#039;&amp;#039;variabel&amp;#039;&amp;#039; || option_data || Daten der Option (abhängig vom Optionstyp)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bisher sind 3 Optionen definiert:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:2em&amp;quot;&lt;br /&gt;
|+ NBD Optionen&lt;br /&gt;
! Name !! Wert !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| NBD_OPT_EXPORT_NAME || 1 || Client wählt Namen des Blockgerätes: der Name folgt im &amp;lt;code&amp;gt;option_data&amp;lt;/code&amp;gt;-Feld. Diese Option beendet automatisch die Optionsliste. Der Server schickt den geräteabhängigen Teil der Initialisierung (siehe unten).&lt;br /&gt;
|-&lt;br /&gt;
| NBD_OPT_ABORT || 2 || Client möchte die Verbindung beenden&lt;br /&gt;
|-&lt;br /&gt;
| NBD_OPT_LIST || 3 || Client möchte eine Liste mit den Namen der exportierten Blockgeräte&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Der Server antwortet auf ein Option Paket mit einem Reply-Paket:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:2em&amp;quot;&lt;br /&gt;
|+ Reply packet (Server→Client)&lt;br /&gt;
! Offset !! Datentyp !! Name    !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| 0 || uint64_t || reply_magic || [[Magische Zahl (Informatik)|Magic Number]] 0x0003e889045565a9&lt;br /&gt;
|-&lt;br /&gt;
| 8 || uint32_t || option_number || Kennnummer/Typ der Option, die beantwortet wird&amp;lt;ref name=&amp;quot;bug1&amp;quot;&amp;gt;Wird entgegen der Protokoll-Beschreibung in Host-Byteorder gesendet. Wert vom Client beim Einlesen ignoriert.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 12 || uint32_t || reply_type  || Typ der Antwort&lt;br /&gt;
|-&lt;br /&gt;
| 16 || uint32_t || reply_length || Länge der Antwortdaten&lt;br /&gt;
|-&lt;br /&gt;
| 20 || &amp;#039;&amp;#039;variabel&amp;#039;&amp;#039; || reply_data || Antwortdaten, sofern reply_length &amp;gt; 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Folgende Antworttypen sind bisher definiert:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:2em&amp;quot;&lt;br /&gt;
|+ Reply types&lt;br /&gt;
! Name !! Wert !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| NBD_REP_ACK || 1 || Der Server akzeptiert die Option oder hat keine weiteren Antwortdaten (bei NBD_OPT_LIST)&lt;br /&gt;
|-&lt;br /&gt;
| NBD_REP_SERVER || 2 || Beschreibung des Blockgerätes. Es folgt die Länge des Namens als 32-Bit-Nummer, der Name, und –&amp;amp;nbsp;falls noch Platz im Antwortpaket ist&amp;amp;nbsp;– evtl. weitere beschreibende Details als Klartext.&lt;br /&gt;
|-&lt;br /&gt;
| NBD_REP_ERR_UNSUP || 8000&amp;amp;nbsp;0001&amp;lt;sub&amp;gt;hex&amp;lt;/sub&amp;gt; || Client hat eine unbekannte Option geschickt&lt;br /&gt;
|-&lt;br /&gt;
| NBD_REP_ERR_POLICY || 8000&amp;amp;nbsp;0002&amp;lt;sub&amp;gt;hex&amp;lt;/sub&amp;gt; || Der Server hat die Option verstanden, aber dem Server ist nicht erlaubt, die Option anzunehmen (z.&amp;amp;nbsp;B. NBD_OPT_LIST kann in der Konfigurationsdatei erlaubt oder verboten werden)&lt;br /&gt;
|-&lt;br /&gt;
| NBD_REP_ERR_INVALID || 8000&amp;amp;nbsp;0003&amp;lt;sub&amp;gt;hex&amp;lt;/sub&amp;gt; || Der Server hat die Option verstanden, doch sie war syntaktisch ungültig&lt;br /&gt;
|-&lt;br /&gt;
| NBD_REP_ERR_PLATFORM || 8000&amp;amp;nbsp;0004&amp;lt;sub&amp;gt;hex&amp;lt;/sub&amp;gt; || Die Option wird von der Plattform, auf der der Server läuft, nicht unterstützt. (derzeit ungenutzt)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:NetworkBlockDevice DeviceList HandshakeProtocolHexdump.png|gerahmt|Hexdump des Datenverkehrs in der Initialisierungsphase zwischen NBD-Client und -Server. Der Client fragt die Liste der angebotenen Geräte ab und der Server listet zwei Geräte (mit Namen „alfa“ und „bravo“) auf.]]&lt;br /&gt;
&lt;br /&gt;
Die Aushandelsphase ist abgeschlossen, sobald der Server die NBD_OPT_EXPORT_NAME-Option positiv quittiert hat. Er schickt daraufhin die Kenndaten des exportierten Blockgerätes an den Client:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:2em&amp;quot;&lt;br /&gt;
|+ Device Init packet (Server→Client)&lt;br /&gt;
! Offset !! Datentyp !! Name    !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| 0 || uint64_t || device_size || Größe des exportierten Blockgerätes (in Byte)&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| 8 || uint16_t || device_flags || Flags, die für das exportierte Gerät gelten:&lt;br /&gt;
* Bit 0: Es existieren Flags&lt;br /&gt;
* Bit 1: Gerät ist read-only&lt;br /&gt;
* Bit 2: Server &amp;amp; Gerät unterstützen das NBD_CMD_FLUSH-Kommando&lt;br /&gt;
* Bit 3: Server &amp;amp; Gerät unterstützen das NBD_CMD_FLAG_FUA-Flag&lt;br /&gt;
* Bit 4: NBD_FLAG_ROTATIONAL: exportierte Daten liegen auf einem rotierenden Medium (klassische Festplatte), was der Client bei dem Zugriffsmuster auf die Blöcke berücksichtigen kann&lt;br /&gt;
* Bit 5: Server &amp;amp; Gerät unterstützen das NBD_FLAG_SEND_TRIM-Kommand&lt;br /&gt;
|-&lt;br /&gt;
| 10 || uint8_t[124] || padding || &amp;#039;&amp;#039;ungenutzt, alle 0&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Datenphase ===&lt;br /&gt;
&lt;br /&gt;
Der NBD-Client leitet die Informationen über die Größe des Blockdevices, eventuelle Flags und den geöffneten [[Socket (Software)|Socket]] über spezielle [[ioctl|Systemaufrufe]] an den Kernel weiter und beendet sich. Der Kernel übernimmt dann die weitere Kommunikation über diesen Socket.&lt;br /&gt;
&lt;br /&gt;
Der Kernel auf Clientseite stellt nun Lese- und Schreibanfragen (Requests) an den Server. Diese haben folgenden Paketaufbau:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:2em&amp;quot;&lt;br /&gt;
|+ NBD Request (Client→Server)&amp;lt;ref name=&amp;quot;nbd.h&amp;quot;&amp;gt;Aus dem Header /usr/include/linux/nbd.h&amp;lt;/ref&amp;gt;&lt;br /&gt;
! Offset !! Datentyp !! Name !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| 0 || uint32_t || magic  || [[Magische Zahl (Informatik)|Magic Number]] 0x25609513&lt;br /&gt;
|-&lt;br /&gt;
| 4 || uint32_t || type   || 0: Lesezugriff; 1: Schreibzugriff; 2: kontrolliertes Verbindungsende; 3: Flush cache; 4: [[TRIM]]-Kommando&lt;br /&gt;
|-&lt;br /&gt;
| 8 || char[8] || handle  || 8 Bytes, die im Reply identisch mitgeschickt werden, um dieses einem Request zuordnen zu können&lt;br /&gt;
|-&lt;br /&gt;
| 16 || uint64_t || from   || Offset (in Bytes), ab dem gelesen/geschrieben werden soll&lt;br /&gt;
|-&lt;br /&gt;
| 24 || uint32_t || len   || Länge des Datenblocks&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bei Schreibzugriffen folgen unmittelbar darauf die zu schreibenden Daten. Der Server beantwortet jeden Request mit einer Antwort (Reply). Diese hat folgenden Aufbau:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:2em&amp;quot;&lt;br /&gt;
|+ NBD Reply (Server→Client)&amp;lt;ref name=&amp;quot;nbd.h&amp;quot; /&amp;gt;&lt;br /&gt;
! Offset !! Datentyp !! Name !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|  0 || uint32_t || magic || Magic Number 0x67446698&lt;br /&gt;
|-&lt;br /&gt;
|  4 || uint32_t || error || 0=OK (kein Fehler aufgetreten)&lt;br /&gt;
|-&lt;br /&gt;
|  8 || char[8] || handle || Kopie des Handles im zugehörigen Request&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bei Antworten auf Lese-Requests folgen unmittelbar darauf die angeforderten Daten.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Loop device]]: Die gleiche Idee mit einem lokalen Gerät&lt;br /&gt;
* [[iSCSI]]: Ein konkurrierendes System&lt;br /&gt;
* [[Network File System]]: Agiert auf einer anderen Ebene, hat dafür aber auch einen weitaus größeren Bekanntheitsgrad&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://nbd.sourceforge.io/ NBD-Website]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Rechnerarchitektur]]&lt;br /&gt;
[[Kategorie:Rechnernetze]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Aka</name></author>
	</entry>
</feed>