<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://rn-wissen.de/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vogon</id>
		<title>RN-Wissen.de - Benutzerbeiträge [de]</title>
		<link rel="self" type="application/atom+xml" href="https://rn-wissen.de/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vogon"/>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Spezial:Beitr%C3%A4ge/Vogon"/>
		<updated>2026-04-11T20:52:31Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RNcom_Schicht_2&amp;diff=6482</id>
		<title>RNcom Schicht 2</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RNcom_Schicht_2&amp;diff=6482"/>
				<updated>2006-03-12T17:37:15Z</updated>
		
		<summary type="html">&lt;p&gt;Vogon: /* Sessionbasierte Nachrichten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== RNcom Schicht 2 - Übersicht ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Layer2.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
&lt;br /&gt;
Die von Schicht 1 zur Verfügung gestellten Kommunikationsinfrastruktur bietet einen virtuellen zusammenhängenden&lt;br /&gt;
Kommunikationsraum in dem einfache Nachrichten übertragen werden können. Dies ist jedoch für eine Anwendung&lt;br /&gt;
meistens nicht ausreichend. Wünschenswert wären folgende Eigenschaften für Nachrichten:&lt;br /&gt;
&lt;br /&gt;
* Datenintegrität: Es kommt genau die Nachricht an, die losgeschickt wurde, z.B. durch CRC gesichert&lt;br /&gt;
* Übertragungssicherung: Es ist sichergestellt, dass die Nachricht ankommt, z.B. durch&lt;br /&gt;
** Ack/Nack/Timeout: Empfangsbestätigungen für Nachrichten&lt;br /&gt;
** Automatische Retries wenn der Versand fehlschlägt&lt;br /&gt;
* Reihenfolge: Beim Versendung mehrere Nachrichten kommen diese vollständig und in genau der Reihenfolge an, in der sie abgesendet wurden (Stream).&lt;br /&gt;
&lt;br /&gt;
Die Aufgabe der Schicht 2 ist nun die Sicherstellung einiger oder aller dieser Eigenschaften.&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist, das jede Eigenschaft auch gewisse Nachteile bezüglich Übertragungslatenz sowie Protokollkomplexität&lt;br /&gt;
und -overhead mit sich bringt. Aus diesem Grund werden im folgenden zwei mögliche Übertragungsmodi definiert, die schnell, flexible und auch auf einem uC einfach zu implementieren sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Verbindungslose Nachrichten ===&lt;br /&gt;
&lt;br /&gt;
Bei Verbindungslosen Nachrichten erwartet der Sender weder eine (direkte) Antwort noch einen Timeout wenn&lt;br /&gt;
die Übertragung fehlschlägt. Es wird weder die Übertragungs- noch die Datenintegrität gesichert. Im Gegenzug&lt;br /&gt;
sind verbindungslose Nachrichten schnell und unkomplizierte Einwegnachrichten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sessionbasierte Nachrichten ===&lt;br /&gt;
&lt;br /&gt;
Sessionbasierte Nachrichten können genutzt werden, um Antwortnachrichten einer ursprünglichen Nachricht&lt;br /&gt;
zuzuordnen. Dabei wird keine vollständiger Stream aufgebaut, sondern nur eine sehr leichtgewichtige&lt;br /&gt;
Session. Es werden weder Übertragungs- noch Datenintegrität garantiert. Insbesondere können Nachrichten&lt;br /&gt;
mehrfach oder gar nicht beim Empfänger ankommen. Zudem ist die Session nur einseitig. Genau wie die&lt;br /&gt;
Verbindungslosen Nachrichten sind Sessionbasierte Nachrichten schnell und mit minimalem Protokolloverhead.&lt;br /&gt;
&lt;br /&gt;
Das Funktionsprinzip der Sessionbasierten Nachrichen ist einfach. Es existieren zwei Arten von Nachrichten, &lt;br /&gt;
'''Session-Request''' Nachrichten und '''Session-Referral''' Nachrichten. Beide tragen zusätzlich zu ihren Daten eine&lt;br /&gt;
SessionID, die vom Initiator der Session gewählt wird und für seinen Knoten eindeutig ist. Mit diesen Nachrichten&lt;br /&gt;
sind nun mehrere Kommunikationsmodi möglich:&lt;br /&gt;
&lt;br /&gt;
* Request-Response Nachrichten: &amp;lt;br/&amp;gt; Bei Request-Response Nachrichten schickt der Client eine Session-Request Nachricht an den Server. Dieser antwortet mit genau einer Session-Referral Nachricht die die SessionID der Request-Nachricht trägt. Die Session wird beim Server nicht gespeichert. &amp;lt;br/&amp;gt; Der Server hat nun die Option auf das Ausbleiben einer Antwortnachricht durch Retries oder Timeouts zu antworten.&lt;br /&gt;
&lt;br /&gt;
* Continuous Session Nachrichten: &amp;lt;br/&amp;gt; Auch bei dieser Art von Nachrichten öffnet der Client die Session durch eine Request Nachricht. Der Server bestätigt dies auch sofort, speichert die SessionID und die Adresse des Clients jedoch ab. Nun kann er jederzeit spontane Session-Referral Nachrichten schicken. Diese Session muss von Client implizit geschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Ob es sich um eine Request-Response oder um eine Continuous Session handelt wird nicht explizit übertragen.&lt;br /&gt;
Hier muss implizit Einigkeit zwischen Client und Server bestehen. Wenn der Server also nur eine einfache Antwort gibt,&lt;br /&gt;
der Client aber einen Stream erwartet, wird der Client lange auf Daten warten.&lt;br /&gt;
&lt;br /&gt;
=== Streams ===&lt;br /&gt;
&lt;br /&gt;
Eventuell wäre es wünschenswert, lückenlose, gesicherte Nachrichtenstreams zu definieren. Vorerst&lt;br /&gt;
sollten allerdings Verbindungslose und Sessionbasierte Nachrichten reichen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Allgemeiner Nachrichtenaufbau: === &lt;br /&gt;
&lt;br /&gt;
Es müssen drei Nachrichten (Verbindungslos, Session-Request, Session-Referral) definiert werden.&lt;br /&gt;
&lt;br /&gt;
{| {{Blaueschmaltabelle}}&lt;br /&gt;
 | Length&lt;br /&gt;
 | Länge des Datenpaketes, evtl abzüglich der bereits definierten Headerbytes&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{|{{Blaueschmaltabelle}}&lt;br /&gt;
 | Byte 1&lt;br /&gt;
 | Type&lt;br /&gt;
 | 128 = Sessionless message&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 2&lt;br /&gt;
 | Dest Net&lt;br /&gt;
 | rowspan=2 | Adresse des Empfängers&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 3&lt;br /&gt;
 | Dest Node&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 4&lt;br /&gt;
 | Src Net&lt;br /&gt;
 | rowspan=2 | Adresse des Absenders&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 5&lt;br /&gt;
 | Src Node&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 6&lt;br /&gt;
 | rowspan=3 colspan=2 | Datenpaket, Format abhängig von der Applikation&lt;br /&gt;
 |-&lt;br /&gt;
 |  ...&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte n&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| {{Blaueschmaltabelle}}&lt;br /&gt;
 | Length&lt;br /&gt;
 | Länge des Datenpaketes, evtl abzüglich der bereits definierten Headerbytes&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{|{{Blaueschmaltabelle}}&lt;br /&gt;
 | Byte 1&lt;br /&gt;
 | Type&lt;br /&gt;
 | 129 = Session Request&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 2&lt;br /&gt;
 | Dest Net&lt;br /&gt;
 | rowspan=2 | Adresse des Empfängers&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 3&lt;br /&gt;
 | Dest Node&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 4&lt;br /&gt;
 | Src Net&lt;br /&gt;
 | rowspan=2 | Adresse des Absenders&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 5&lt;br /&gt;
 | Src Node&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 6&lt;br /&gt;
 | SessionID1&lt;br /&gt;
 | rowspan=2 | Session ID, eindeutig beim Absender&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 7&lt;br /&gt;
 | SessionID2&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 8&lt;br /&gt;
 | rowspan=3 colspan=2 | Datenpaket, Format abhängig von der Applikation&lt;br /&gt;
 |-&lt;br /&gt;
 |  ...&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte n&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| {{Blaueschmaltabelle}}&lt;br /&gt;
 | Length&lt;br /&gt;
 | Länge des Datenpaketes, evtl abzüglich der bereits definierten Headerbytes&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{|{{Blaueschmaltabelle}}&lt;br /&gt;
 | Byte 1&lt;br /&gt;
 | Type&lt;br /&gt;
 | 130 = Session Referral&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 2&lt;br /&gt;
 | Dest Net&lt;br /&gt;
 | rowspan=2 | Adresse des Empfängers&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 3&lt;br /&gt;
 | Dest Node&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 4&lt;br /&gt;
 | Src Net&lt;br /&gt;
 | rowspan=2 | Adresse des Absenders&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 5&lt;br /&gt;
 | Src Node&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 6&lt;br /&gt;
 | SessionID1&lt;br /&gt;
 | rowspan=2 | Session ID, eindeutig beim Empfänger&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 7&lt;br /&gt;
 | SessionID2&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 8&lt;br /&gt;
 | rowspan=3 colspan=2 | Datenpaket, Format abhängig von der Applikation&lt;br /&gt;
 |-&lt;br /&gt;
 |  ...&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte n&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[RNcom Schicht 0]]&lt;br /&gt;
** [[RNcom Schicht 0 UART Spezifikation]]&lt;br /&gt;
** [[RNcom Schicht 0 TCP-IP Stream Spezifikation]]&lt;br /&gt;
** [[RNcom Schicht 0 IP-Multicast Spezifikation]]&lt;br /&gt;
&lt;br /&gt;
* [[RNcom Schicht 1]]&lt;br /&gt;
** [[RNcom Schicht 1 Einfaches Dynamisches Routing]]&lt;br /&gt;
&lt;br /&gt;
* RNcom Schicht 2&lt;br /&gt;
&lt;br /&gt;
und auch:&lt;br /&gt;
*[[Network Controller/PC]]&lt;br /&gt;
*[[Network Controller/PC Schichten]]&lt;br /&gt;
*[[Network Controller/PC Spezifikationen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Autor==&lt;br /&gt;
&lt;br /&gt;
* [[Benutzer:Ragnar|Ragnar]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;br /&gt;
[[Kategorie:Software]]&lt;/div&gt;</summary>
		<author><name>Vogon</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RNcom_Schicht_0&amp;diff=6481</id>
		<title>RNcom Schicht 0</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RNcom_Schicht_0&amp;diff=6481"/>
				<updated>2006-03-12T17:30:43Z</updated>
		
		<summary type="html">&lt;p&gt;Vogon: /* Beispiele für einige Medien */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== RNcom Schicht 0 - Übersicht ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:layer0.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Allgemeines ===&lt;br /&gt;
&lt;br /&gt;
Schicht 0 verbindet mehrere Hardware-devices (Prozessoren) miteinander.&lt;br /&gt;
Über die Verbindungen müssen Datenpakete mit vor unterschiedlichen Längen&lt;br /&gt;
übertragen werden. Es kann eine maximale Länge der Daten festgelegt werden.&lt;br /&gt;
Über die Daten können sonst keine Annahmen gemacht werden. Insbesondere&lt;br /&gt;
können die Daten die Werte 0..255 annehmen.&lt;br /&gt;
&lt;br /&gt;
Aufgrund verschiedener Medien und Implementierungen können die Verbindungen&lt;br /&gt;
verschiedene Eigenschaften haben. Jede dieser Eigenschaften kann entweder von&lt;br /&gt;
dem Medium direkt unterstützt oder ''kann'' (muß aber nicht) durch das &lt;br /&gt;
Kommunikationsprotokoll gewährleistet werden.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* Sicherung:&amp;lt;br/&amp;gt; Der Absender erfährt, ob der Empfänger die Daten empfangen hat oder nicht und kann die Daten wenn nötig mehrfach senden bzw. den Abbruch der Übertragung nach melden. Die zur sicheren Übertragung nötigen Befehle wie Acks, Nacks, usw sowie eventuell nötige Sequenznummern müssen innerhalb der Schicht bleiben und dürfen nicht nach außen sichtbar sein.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* Integrität:&amp;lt;br/&amp;gt; Es ist sichergestellt, das genau die Daten ankommen, die abgesendet wurden.&amp;lt;br/&amp;gt; Integrität wird häufig zusammen mit gesicherten Verbindungen verwendet um falsche Daten neu zu senden.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* Bidirektional / Unidirektional:&amp;lt;br/&amp;gt; Unidirektionale Verbindungen brauchen spezielle Synchronisation zur Übertragung. Obwohl es möglich ist, diese Synchronisation an den Nutzer weiterzugeben, sollten Unidirektionale Verbindungen immer durch interne Synchronisation zu virtuellen Bidirektionalen Verbindungen erweitert werden.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Die Schnittstelle der Verbindung kann sowohl Synchron als auch Asynchron&lt;br /&gt;
ausgeführt sein. Auch die Unterstützung mehrerer Threads ist möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beispiele für einige Medien ===&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* UART:&lt;br /&gt;
** Übertragung von Datenpakete z.B. durch Frameing&lt;br /&gt;
** Sicherung z.B. durch Acks/Nacks, jedes Paket muss direkt acknowledged werden, vorher wird von dem Sender kein weiteres Paket gesendet.&lt;br /&gt;
** Integrität z.B. durch Checksummen am Ende des Pakets&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* LAN mit TCP-IP streams:&lt;br /&gt;
** Übertragung von Datenpaketen z.B. durch &amp;lt;Länge&amp;gt;&amp;lt;Daten&amp;gt;&lt;br /&gt;
** Sicherung und Integrität durch Transportmedium (TCP-IP) garantiert&lt;br /&gt;
** Aufbau der Verbindung z.B. durch Konfiguration &amp;lt;br/&amp;gt;(baue RNcom Verbindung zu 192.168.0.10 auf, bzw. lausche auf RNcom Verbindungen auf port 9000)&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* LAN mit UDP Pakets:&lt;br /&gt;
** Übertragung von Datenpaketen z.B. durch UDP-Pakete&lt;br /&gt;
** Sicherung z.B. durch Ack bzw. Nack des Empfängers&lt;br /&gt;
** Integrität durch UDP-Checksumme gesichert&lt;br /&gt;
** Aufbau der Verbindung z.B. durch Autodiscovery innerhalb des lokalen Netzes oder Broadcast Gruppe.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
* i2c&lt;br /&gt;
** Übertragung von Datenpaketen begrenzt durch Start/Stopbedingung.&lt;br /&gt;
** In Single-Master Systemen Rückübertragung mit Interrupt durch Lesen beim Slave.&lt;br /&gt;
** Sicherung: Durch i2c-Protokoll garantiert&lt;br /&gt;
** Integrität z.B. durch Checksumme am Ende der Übertragung&lt;br /&gt;
** Aufbau der Verbindungen z.B. durch Konfiguration (RNcom device auf i2c-Adresse 0x20)&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Allgemeiner Nachrichtenaufbau: === &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allgemeines Format der Nachrichten zur oberen Schicht 1 hin&lt;br /&gt;
&lt;br /&gt;
{| {{Blaueschmaltabelle}}&lt;br /&gt;
 | Length&lt;br /&gt;
 | Länge des Datenpaketes&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
{|{{Blaueschmaltabelle}}&lt;br /&gt;
 | Byte 1&lt;br /&gt;
 | rowspan=4 | Datenpaket&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte 2&lt;br /&gt;
 |-&lt;br /&gt;
 |  ...&lt;br /&gt;
 |-&lt;br /&gt;
 | Byte n&lt;br /&gt;
 |-&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Über die Daten dürfen innerhalb der Schicht 0 keine weiteren Annahmen getroffen werden. Lediglich die Länge der Daten ist bekannt.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* RNcom Schicht 0&lt;br /&gt;
** [[RNcom Schicht 0 UART Spezifikation]]&lt;br /&gt;
** [[RNcom Schicht 0 TCP-IP Stream Spezifikation]]&lt;br /&gt;
** [[RNcom Schicht 0 IP-Multicast Spezifikation]]&lt;br /&gt;
&lt;br /&gt;
* [[RNcom Schicht 1]]&lt;br /&gt;
** [[RNcom Schicht 1 Einfaches Dynamisches Routing]]&lt;br /&gt;
&lt;br /&gt;
* [[RNcom Schicht 2]]&lt;br /&gt;
&lt;br /&gt;
und auch:&lt;br /&gt;
*[[Network Controller/PC]]&lt;br /&gt;
*[[Network Controller/PC Schichten]]&lt;br /&gt;
*[[Network Controller/PC Spezifikationen]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Autor==&lt;br /&gt;
&lt;br /&gt;
* [[Benutzer:Ragnar|Ragnar]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;br /&gt;
[[Kategorie:Software]]&lt;/div&gt;</summary>
		<author><name>Vogon</name></author>	</entry>

	</feed>