Das Internet Protocol (IP), das User Datagram Protocol (UDP) und das Transmission Control Protocol (TCP) bilden die Grundlage für die Kommunikation im Netz. Der Name "TCP/IP" ergibt sich aus zwei der bekanntesten Protokolle der Internet Protocol Suite, dem "Transmission Control Protocol" und dem "Internet Protocol".

Mit TCP/IP können Sie über einzelne oder miteinander verbundene Netzwerke kommunizieren. Die einzelnen Netzwerke können sich in großer geografischer Entfernung zueinander befinden. Über TCP/IP werden Daten von einem Netzwerk-Rechner oder mit dem Internet verbundenen Rechner an einen anderen weitergeleitet. Da TCP/IP auf fast allen Computern vorhanden ist, kann es Informationen zwischen diversen Systemen übermitteln.

LabVIEW und TCP/IP

TCP/IP-Protokolle können mit LabVIEW auf allen Plattformen verwendet werden. LabVIEW umfasst TCP- und UDP-VIs sowie Funktionen, mit denen Client- oder Server-VIs erstellt werden können.

IP

Mit IP werden Daten zwischen Rechnern ausgetauscht. IP fasst Daten zu Einheiten zusammen, die als Datenpakete bezeichnet werden. Ein solches Datenpaket enthält Daten sowie eine Überschrift, in der die Quell- bzw. Zieladresse angezeigt wird. IP bestimmt den Pfad des Datenpakets durch das Netzwerk bzw. das Internet und sendet die Daten an ihren Bestimmungsort.

Dass die Daten ankommen, kann bei IP jedoch nicht garantiert werden. Durch IP kann es sogar vorkommen, dass ein Datenpaket mehrmals übermittelt wird, wenn es während der Übertragung vervielfacht wurde. Die meisten Programme verwenden daher TCP oder UDP statt IP.

UDP

UDP bietet eine einfache Low-Level-Kommunikation zwischen verschiedenen Prozessen auf Rechnern. Prozesse kommunizieren miteinander, indem Datenpakete an Zielrechner oder Ports gesendet werden. Ein Port ist die Stelle, an die die Daten gesendet werden. Die Datenübermittlung von Rechner zu Rechner wird von IP übernommen. Nachdem das Datenpaket seinen Zielrechner erreicht hat, wird es von UDP an seinen Zielport übermittelt. Wenn der Port nicht zur Verfügung steht, wird das Datenpaket verworfen. UDP und IP haben bei der Datenübermittlung das gleiche Problem.

Verwenden Sie UDP daher nur in Anwendungen, bei denen Datenverluste kein Problem darstellen. Wenn Informationen von einer Anwendung beispielsweise oft genug an ein Ziel gesendet werden, ist der Verlust einiger Daten weniger problematisch.

Verwendung von UDP in LabVIEW

Da UDP kein verbindungsorientiertes Protokoll ist, wie z. B. TCP, muss keine Verbindung mit dem Zielrechner aufgebaut werden, bevor Daten gesendet oder empfangen werden. Stattdessen müssen Sie das Ziel für jedes einzelne gesendete Datenpaket festlegen. Übertragungsfehler werden vom Betriebssystem nicht angezeigt.

Mit der Funktion UDP Öffnen wird ein UDP-Socket an einem Port geöffnet. Die Anzahl der gleichzeitig geöffneten UDP-Ports hängt vom Betriebssystem ab. Die Funktion "UDP öffnen" gibt eine Netzwerkverbindungsreferenz zur Identifikation des UDP-Sockets aus. Mit dieser Verbindungsreferenz wird in nachfolgenden VI-Aufrufen auf die Verbindung verwiesen.

Mit der Funktion UDP: Schreiben werden Daten gesendet und mit der Funktion UDP: Lesen empfangen. Bei jedem Senden muss eine Zieladresse und ein Port angegeben werden. Bei jedem Empfangen werden die Adresse und der Port des Rechners ausgegeben, von dem die Daten stammen. UDP erhält die Datenpaket-Bytes, die für jeden Befehl festgelegt sind.

Die Größe des UDP-Datenpakets variiert je nach Betriebssystemumgebung. Die maximale Größe ist 65535 Byte. Es wird empfohlen, nur Datenpakete, die kleiner als 1KB sind, mit Hilfe von UDP zu versenden. Auf diese Weise wird vermieden, dass das zugrunde liegende IP-Paket geteilt und während der Übertragung wieder zusammengefügt werden muss, wodurch die Gefahr von Paketverlusten erhöht wird.

Mit der Funktion UDP: Schließen werden nach der Kommunikation über einen Port die dazu benötigten Systemressourcen freigegeben.

UDP-Multicast

Mit den UDP-Funktionen können Sie mit einem Client (Single Cast) oder allen Rechnern des Subnetzes kommunizieren. Um jedoch mit bestimmten Rechnern zu kommunizieren, müssen die UDP-Funktionen so konfiguriert werden, dass eine Liste von Clients durchlaufen wird. Dadurch verdoppelt sich jedoch der Datenverkehr im Netzwerk, da LabVIEW an jeden Client eine Kopie der Daten sendet und eine Liste von Clients führt, die die Daten erhalten sollen.

Verwenden Sie Multicasting für die Kommunikation zwischen einem Sender und verschiedenen Clients in einem Netzwerk, ohne dass der Sender eine Liste führt oder mehrere Kopien der Daten an jeden Client gesendet werden. Alle Clients müssen Teil der Multicast-Gruppe sein, um Daten zu erhalten, die von einem Multicast-Sender aus übermittelt werden. Der Sender muss jedoch keiner Gruppe angehören, um Daten senden zu können. Der Sender gibt eine Multicast-IP-Adresse für eine bestimmte Multicast-Gruppe an. Die Multicast-IP-Adressen liegen im Bereich von 224.0.0.0 bis 239.255.255.255. Um eine Multicast-Gruppe zu abonnieren, muss sich ein Client unter der Multicast-IP-Adresse einschreiben. Wenn der Client der Multicast-Gruppe angehört, erhält er die Daten, die an die Multicast-IP-Adresse gesendet werden.

Zum Multicasting mit LabVIEW verwenden Sie das VI UDP: Multicast öffnen. Damit werden Verbindungen zum Senden, Empfangen oder Senden und Empfangen von UDP-Daten hergestellt. Legen Sie beim Senden von Daten die Zeit bis zum Löschen der Daten (Time to Live – TTL), die Multicast-Adresse zum Empfangen von Daten sowie die Anzahl der Multicast-Ports zum Senden und Empfangen von Daten fest. Die Standard-TTL ist 1, das heißt, LabVIEW sendet das Datenpaket nur an das lokale Subnetz. Erhält ein Router ein Multicast-Datenpaket, so verringert sich die TTL des Datenpakets um 1. Ist die TTL größer als 1, sendet der Router das Datenpaket an andere Router weiter. In der folgenden Tabelle sehen Sie, wohin ein Multicast-Datenpaket bei der Angabe der entsprechenden TTL versandt wird.

0 Datenpaket verbleibt auf dem Host-Computer.
1 Datenpaket wurde an jeden unter dieser IP-Adresse angemeldeten Client desselben lokalen Subnetzes verschickt. Das Datenpaket wird über Hubs/Repeater und Bridges/Switches weitergeleitet. Das Datenpaket wird nicht weitergeleitet, wenn das TTL-Signal 1 lautet.
>1 Datenpaket wurde gesendet und wird über Router durch die TTL-1-Schichten weitergeleitet.

Nachfolgend finden Sie einige Beispiele zur Arbeit mit UDP-Multicasting:

  • UDP Multicast – Receiver VI: labview\examples\Data Communication\Protocols\UDP\UDP Multicast\UDP Multicast.lvproj
  • UDP Multicast – Sender VI: labview\examples\Data Communication\Protocols\UDP\UDP Multicast\UDP Multicast.lvproj

TCP

TCP übermittelt Daten ohne Fehler, Datenverlust oder Doppelungen zuverlässig nacheinander über ein Netzwerk. Die Datenpakete werden bis zum Erhalt einer Empfangsbestätigung übertragen.

Verwenden von TCP in LabVIEW

TCP ist ein verbindungsorientiertes Protokoll, das heißt, der Sender muss vor der Datenübertragung eine Verbindung mit dem Empfänger aufgebaut haben. Daten werden zwischen einem Client und einem Server ausgetauscht. Bei TCP können mehrere Verbindungen gleichzeitig hergestellt werden.

Hinweis Sie können bis zu 1024 TCP-Verbindungen an einem einzelnen Port herstellen.

Eine Verbindung wird hergestellt, nachdem Sie auf eine eingehende Verbindung gewartet oder aktiv nach einer Verbindung mit einer näher spezifizierten Adresse gesucht haben. Beim Aufbau einer TCP-Verbindung müssen Sie die Adresse und den Port an der Adresse angegeben. Verschiedene Ports an einer bestimmten Adresse stehen für verschiedene Dienste an der Adresse.

Mit der Funktion TCP: Verbindung herstellen wird eine Verbindung mit einer bestimmten Adresse und einem Port hergestellt. Wenn die Verbindung hergestellt wurde, gibt die Funktion eine Netzwerkverbindungsreferenz dafür aus. Mit dieser Verbindungsreferenz können Sie in nachfolgenden VI-Aufrufen auf die Verbindung verweisen.

Auf eine eingehende Verbindung kann folgendermaßen gewartet werden:

  • Erstellen Sie mit dem VI TCP: Listen einen Listener und warten Sie dann auf eine bestätigte Verbindung mit einem bestimmten Port. Nach dem Herstellen einer Verbindung gibt das VI eine Verbindungsreferenz sowie die Adresse und den Port des Netzwerk-Clients aus.
  • Erstellen Sie mit der Funktion TCP: Listener erstellen einen Listener und warten Sie dann mit der Funktion "TCP: Auf Listener warten" auf neue Verbindungen. Die Funktion TCP: Auf Listener warten gibt dieselbe Listener-ID aus, die mit der Funktion verbunden wurde. Wenn Sie nicht mehr auf neue Verbindungen warten, rufen Sie die Funktion TCP: Verbindung schließen auf. Sie können weder Daten von einem Listener empfangen noch Daten an den Listener senden.

Der Vorteil der zweiten Vorgehensweise besteht darin, dass mit der Funktion "TCP: Verbindung schließen" der Empfang abgebrochen werden kann. Das ist hilfreich, wenn kein Timeout für den Empfang eingestellt ist, aber der Empfang beim Erfüllen einer Bedingung abgebrochen werden soll. Das VI "TCP: Listen" kann jederzeit geschlossen werden.

Zum Datenaustausch mit anderen Anwendungen im Netzwerk verwenden Sie die Funktionen TCP: Lesen und TCP: Schreiben.

Mit der Funktion "TCP: Verbindung schließen" wird die Verbindung zur Netzwerkanwendung beendet. Wenn die Verbindung geschlossen wird, aber bestimmte Daten noch nicht empfangen wurden, kann zu Datenverlust kommen. Verwenden Sie ein höheres Protokoll, wenn Ihr Rechner bestimmen soll, wann eine Verbindung geschlossen wird.

Entscheidung zwischen TCP und UDP

Mit TCP wird eine zuverlässige Datenübertragung gewährleistet. UDP ist ein verbindungsloses Protokoll mit einer höheren Datenrate, das jedoch keinen zuverlässigen Datentransfer gewährleistet.

Timeouts und Fehler

Erwägen Sie beim Erstellen einer Netzwerkanwendung sorgfältig, was im Falle eines Fehlers geschehen soll. Legen Sie z. B. fest, wie jeder Client auf einen Absturz des Servers reagieren soll.

Eine Möglichkeit besteht darin, für jedes Client-VI einen Timeout einzustellen. Wenn dann nach einer gewissen Zeit nichts mehr passiert, unternimmt der Client etwas. Der Client kann beispielsweise versuchen, erneut eine Verbindung herzustellen oder den Fehler zu melden. Bei Bedarf kann das Client-VI auch versuchen, die Anwendung zu schließen.

Beispiele zu TCP und UDP

Im Folgenden finden Sie Beispiele für die Verwendung der TCP- und UDP-VIs und -Funktionen:

  • labview\examples\Data Communication\Protocols\TCP\Simple TCP\Simple TCP.lvproj
  • labview\examples\Data Communication\Protocols\UDP\Simple UDP\Simple UDP.lvproj

Methoden des Datenaustauschs Startseite