7. Netzwerktheorie
7.1.
Das OSI-Schichtenmodell
Viele Vorgänge bei der Übertragung von
Daten in
Netzwerken werden mit einem abstrakten Modell, dem
OSI-Schichtenmodell erklärt. Auf der Senderseite
läuft die
Kommunikation von oben nach unten und auf der Empfängerseite
von
unten nach oben. Logisch gesehen erfolgt die Kommunikation zwischen
Sender und Empfänger jedoch horizontal in jeder Schicht. Nur
bei
gleichen Protokollen in einer Schicht ist eine Kommunikation
möglich.
Die 7 Schichten kann man sich gut mit dem Merkspruch „All
people seem to
need data
processing“ einprägen .
Das OSI-Modell im Überblick
(im Vergleich dazu das
TCP/IP-Referenzmodell):
|
OSI-Modell
|
TCP/IP-Referenzmodell
|
|
OSI-Schicht
|
Englisch
|
Einordnung
|
Protokollbeispiel
|
TCP/IP-Schicht
|
Einordnung
|
Protokollbeispiel
|
|
7
|
Anwendung
|
Application
|
Anwendungs-
orientiert
|
FTAM
|
Anwendung
|
Ende
zu Ende (Multihop)
|
HTTP
|
|
6
|
Darstellung
|
Presentation
|
|
TCP
|
|
5
|
Sitzung
|
Session
|
|
ISO
8326
|
|
4
|
Transport
|
Transport
|
Transport-
orientiert
|
ISO
8072
|
Transport
|
|
3
|
Netzwerk
|
Network
|
|
CLNP
|
Internet
|
Punkt
zu Punkt
|
IP
|
|
Ethernet
|
|
2
|
Sicherung
|
Data
Link
|
|
HDLC
|
Host to
Host
|
|
1
|
Bitübertragung
|
Physical
|
|
X.21
|
7.1.1. Schicht 7 Anwendungsschicht
(engl. application
layer, auch:
Verarbeitungsschicht, Anwenderebene) Die Anwendungsschicht ist die
oberste der sieben hierarchischen Schichten. Sie stellt den
Anwendungen eine Vielzahl an Funktionalitäten zur
Verfügung
(zum Beispiel Datenübertragung, E-Mail, Virtual Terminal
beziehungsweise Remote login etc.).
7.1.2. Schicht 6 Darstellungsschicht
(engl. presentation
layer, auch:
Datendarstellungsschicht, Datenbereitstellungsebene) Die
Darstellungsschicht setzt die systemabhängige Darstellung der
Daten (zum Beispiel ASCII, EBCDIC) in eine unabhängige Form um
und ermöglicht somit den syntaktisch korrekten Datenaustausch
zwischen unterschiedlichen Systemen. Auch Aufgaben wie die
Datenkompression und die Verschlüsselung gehören zur
Schicht 6.
7.1.3. Schicht 5 Sitzungsschicht
(engl. session
layer, auch:
Kommunikationssteuerungsschicht, Steuerung logischer Verbindungen,
Sitzungsebene) Um Zusammenbrüche der Sitzung und
ähnliche
Probleme zu beheben, stellt die Sitzungsschicht Dienste für
einen organisierten und synchronisierten Datenaustausch zur
Verfügung. Zu diesem Zweck werden Wiederaufsetzpunkte, so
genannte Token eingeführt, an denen die Sitzung nach einem
Ausfall einer Transportverbindung wieder synchronisiert werden kann,
ohne dass die Übertragung wieder von vorne beginnen muss.
7.1.4. Schicht 4 Transportschicht
(engl. transport
layer, auch:
Ende-zu-Ende-Kontrolle, Transport-Kontrolle) Zu den Aufgaben der
Transportschicht zählt die Segmentierung von Datenpaketen und
die Stauvermeidung (engl. congestion control). Die
Transportschicht ist die unterste Schicht, die eine
vollständige
Ende-zu-Ende Kommunikation zwischen Sender und Empfänger zur
Verfügung stellt. Sie bietet den anwendungsorientierten
Schichten 5-7 einen einheitlichen Zugriff, so dass diese die
Eigenschaften des Kommunikationsnetzes nicht zu
berücksichtigen
brauchen. Fünf verschiedene Dienstklassen unterschiedlicher
Güte
sind in Schicht 4 definiert und können von den oberen
Schichten
benutzt werden, vom einfachsten bis zum komfortabelsten Dienst mit
Multiplexmechanismen, Fehlersicherungs- und Fehlerbehebungsverfahren.
7.1.5. Schicht 3 Netzwerkschicht
(engl. network
layer, auch:
Vermittlungsschicht, Paketebene) Die Netzwerkschicht sorgt bei
verbindungsorientierten Diensten für das Schalten von
Verbindung
und bei paketorientierten Diensten für die Weitervermittlung
von
Datenpaketen. Die Datenübertragung geht in beiden
Fällen
jeweils über das gesamte Kommunikationsnetz hinweg und
schließt
die Wegesuche (Routing) zwischen den Netzknoten mit ein. Da nicht
immer eine direkte Kommunikation zwischen Absender und Ziel
möglich
ist, müssen Pakete von Knoten, die auf dem Weg liegen,
weitergeleitet werden. Weitervermittelte Pakete gelangen nicht in die
höheren Schichten, sondern werden mit einem neuen Zwischenziel
versehen und an den nächsten Knoten gesendet. Zu den Aufgaben
der Netzwerkschicht zählt der Aufbau und die Aktualisierung
von
Routingtabellen, sowie die Flusskontrolle. Auch die Netzwerkadressen
gehören zu dieser Schicht. Da ein Kommunikationsnetz aus
mehreren Teilnetzen unterschiedlicher Technologien bestehen kann,
sind in dieser Schicht auch die Umsetzungsfunktionen angesiedelt, die
für eine Weiterleitung zwischen den Teilnetzen notwendig sind.
7.1.6. Schicht 2 Sicherungsschicht
(engl. data
link layer, auch:
Verbindungssicherungsschicht, Verbindungsebene, Prozedurebene)
Aufgabe der Sicherungsschicht ist es, eine sichere, das heißt
weitgehend fehlerfreie Übertragung zu gewährleisten
und den
Zugriff auf das Übertragungsmedium zu regeln. Dazu dient das
Aufteilen des Bitdatenstromes in Blöcke und das
Hinzufügen
von Folgenummern und Prüfsummen. Durch Fehler
verfälschte
oder verloren gegangene Blöcke können vom
Empfänger
durch Quittungs- und Wiederholungsmechanismen erneut angefordert
werden. Die Blöcke werden auch als Frames oder Rahmen
bezeichnet. Eine so genannte Flusskontrolle macht es möglich,
dass ein Empfänger dynamisch steuert, mit welcher
Geschwindigkeit die Gegenseite Blöcke senden darf. Die
amerikanische Ingenieursorganisation IEEE sah die Notwendigkeit, auch
den konkurrierenden Zugriff auf ein Übertragungsmedium zu
regeln, was im OSI-Modell nicht vorgesehen ist. Sie teilte die
Sicherungsschicht in zwei Subschichten auf: die LLC-Schicht (logical
link control) und die Mediumzugriffsschicht (medium access control
layer, MAC-Layer). Die Mediumzugriffsschicht bietet einen einfachen
verbindungslosen Dienst und regelt konkurrierende Zugriffe mehrerer
Stationen auf ein gemeinsames Übertragungsmedium wie zum
Beispiel auf einen Bus und behandelt ggf. aufgetretene Kollisionen.
Die LLC-Schicht bietet verbindungslose und auch
verbindungsorientierte Dienste mit und ohne Quittungsverfahren.
7.1.7. Schicht 1 Physische Schicht
(engl. physical
layer, auch:
Bitübertragungsschicht, physische Ebene) Die Physische Schicht
ist die niedrigste Schicht. Die Festlegungen für Schicht 1
umfassen vor allem die mechanischen (Steckverbinder, etc.),
elektrischen (Pegel, Pulsform, etc.) beziehungsweise optischen
(Wellenlänge) Eigenschaften des Übertragungsmediums
(Kabel,
Glasfaser, Funktechnik, etc.)
7.2. Übertragungsverfahren
7.2.1. Basisband
auch: Basisbandverfahren, engl.: baseband, baseband
transmission
wird ein Übertragungsverfahren genannt, das das
Übertragungsmedium vollständig in Anspruch nimmt. Das
Signal benutzt ein einziges, nicht weiter unterteiltes Frequenzband
(Frequenzbereich). Die zu übertragenden Informationen
müssen
nicht moduliert werden, sondern sie werden eins zu eins dargestellt.
Sollen Nachrichten an mehrere Netzwerk-Teilnehmer
versandt werden,
müssen diese zeitlich versetzt übertragen werden. Die
Leitung ist zum Zeitpunkt einer Übertragung für
andere
nicht verfügbar. Das Verfahren wird u. a. im LAN von Ethernet
angewendet.
7.2.2. Breitband
auch: Breitbandverfahren, engl.: broadband, broadband
transmission
wird ein Übertragungsverfahren genannt, das das
Frequenzspektrum eines Übertragungsmediums in mehrere
parallele
Kanäle unterteilt. Alle Kanäle sind einer so
genannten
Trägerwelle aufmoduliert, ohne sich gegenseitig zu
stören.
Dadurch wird die gleichzeitige, unabhängige
Übertragung
mehrerer Nachrichten ermöglicht.
Anwendung findet dies u. a. beim Radio und bei
Kabelfernsehnetzen.
Meist wird nicht das gesamte Spektrum ausgenutzt, um weitere Dienste
implementieren zu können, z. B. die Übertragung von
Internet-Daten über das Kabelnetz.
7.3.
Zugriffsverfahren
7.3.1. Was sind Zugriffsverfahren?
Nachdem mit der Topologie die räumliche
Anordnung eines
Netzwerkes festgelegt wird, braucht es zur störungsfreien
Nutzung eines Netzes ein Verfahren für den Zugriff auf das
Übertragungsmedium. Dieses Verfahren garantiert eine
Vermeidung
von Zugriffskonflikten.
In einem Computernetz können normalerweise alle
angeschlossenen Rechner (Stationen) auf das Netz gleichzeitig
zugreifen (senden und empfangen). Weiterhin sind normalerweise die
Daten, die eine Station sendet, an allen Punkten des Netzes zu
empfangen. Senden nun mehrere Stationen gleichzeitig, so
überlagern
sich die Daten zu einem nicht mehr lesbaren Signalgemisch (Jam). Die
Zugriffsverfahren organisieren die (weitest gehende) Vermeidung von
Jam. Bei einem sternförmigen Netzwerk wird dieses Verfahren im
zentralen Knoten integriert, bei allen anderen Topologien muss
dagegen ein verteilter Kontrollmechanismus implementiert werden. Zwei
der heute gängigsten Zugriffsverfahren werden im folgenden
Abschnitt erklärt:
7.3.2. Carrier Sense Multiple Access (CSMA)
Die CSMA Strategie gestattet es jedem Knoten mit
Sendebegehren,
gemäß festgelegter Regeln auf das Netz zuzugreifen.
Als
erstes wird der Teilnehmer vor der Übertragung auf dem Netz
'hören', ob Daten übertragen werden und nur dann
einen
Sendevorgang einleiten, wenn das Netz frei ist. Eine Kollision kann
bei diesem Verfahren nur dann auftreten, wenn zwei Knoten mit
Sendeabsichten gleichzeitig ein freies Netz feststellen und mit ihrer
Sendung beginnen. Der sendende Knoten muss also in der Lage sein,
eine Kollision festzustellen und dann die Sendung sofort abzubrechen.
Danach wartet jeder Knoten eine zufällig generierte Zeit lang,
bevor eine erneute Sendung versucht wird. Das heute
gebräuchlichste
Verfahren in der Reihe CSMA/CD (Collision Detection)
ermöglicht
es jedem Knoten, auch während des Sendevorgangs auf dem Netz
auf
Kollisionen zu „hören“.
Ein CSMA-Netzwerk ist am besten geeignet für
leichte bis
mittel belastete Netzwerke mit mehreren Arbeitsstationen und
einzelnen Abteilungssystemen. Weniger geeignet sind sie allerdings
dann, wenn eine minimale Antwortzeit für die
Datenkommunikation
garantiert sein muss, denn bei einem derartigen Netzwerk weiß
man nie, zu welchem Zeitpunkt eine Station sendet. Daher spricht man
von einem nicht deterministischen
Zugriffsverfahren. CSMA ist
das gängige Zugriffsverfahren für Ethernet.
Vorteile:
Nachteile:
-
Je
mehr Stationen desto mehr Kollisionen und geringerer Datendurchsatz.
-
Zeitpunkt
einer Sendung kann nicht vorhergesagt werden, ergibt sich stochastisch
(nicht deterministisch).
-
Ungeeignet
für zeitkritische Anwendungen.
7.3.3. Token
Passing
Bei dem ursprünglich für Ringnetzwerke
konzipierten Verfahren wird eine bestimmte Kontrollinformation (Token) als Datenpaket von Knoten zu Knoten weitergereicht. Diese
Informationsweiterleitung kann man sich wie einen Staffelstab bei
einem Staffellauf vorstellen. Ein Knoten mit Sendebegehren entfernt
einen freien Token vom Netz, und sendet statt dessen seine Daten.
Nach einem erfolgreichen Senden muss diese Station wieder einen
freien Token aufs Netz einfügen. Damit hat nun die
nächstfolgende Station die Gelegenheit zum Senden. Senden kann
zu jedem Zeitpunkt nur derjenige, der den
„Staffelstab“
(den freien Token) ergriffen hat.
Ein Token-Netzwerk ist am besten geeignet für
stark belastete
Netze oder für Netze mit kontinuierlichem Datenverkehr.
Beispiele dafür sind Verbindungen zwischen
Großrechnern
(Transfer von hohen Datenvolumen) oder der Einsatz in Fabriken zur
Steuerung von Maschinen (z. B. General Motors). Letzteres ein
Beispiel für ein Netzwerk, wo die Antwortzeit auf dem Netzwerk
einen Maximalwert nicht übersteigen darf (deterministisch).
Vorteile:
-
Netz
kann bis zur max. zugelassenen Anzahl an Stationen ausgebaut werden,
ohne dass der geregelte Datendurchsatz beeinträchtigt wird.
-
Zeitpunkt
einer Sendung kann berechnet werden.
-
Verfahren
für zeitkritische Anwendungen geeignet.
Nachteile:
-
Hoher
Hardware- und Konfigurationsaufwand.
-
Sendewillige
Station kann nicht sofort senden, sondern muss auf den Token warten.
7.3.4. Sonstige Zugriffsverfahren
CSMA/CA (Carrier Sense Multiple
Access / Collision
Avoidance): Sendewillige Station sendet erst ein Warnsignal, das von
allen gehört werden muss.
Vorteile:
Nachteile:
Verwendet bei Fa. Apple (AppleTalk)
DPAM (Demand Priority)
Baut darauf auf, dass alle Stationen an Verteiler
angeschlossen
sind. Will eine Station senden, schickt sie eine Anfrage (Request) an
den Verteiler. Sofern keine andere Anfrage vorliegt, wird sie sofort
mit dem Ziel verbunden.
Genutzt von HP (100VG AnyLAN), hat sich am Markt nicht
durchgesetzt, sehr teuer.
7.4. Protokolle
7.4.1.
Was
sind Protokolle?
Um Rechner miteinander kommunizieren zu lassen,
genügt es
nicht, dass man sie mit einem Kabel verbindet – man muss auch
dafür sorgen, dass sie die gleiche
„Sprache“
sprechen. Das heißt, dass man eine für alle Rechner
des
Netzwerkes gleich lautende Vorschrift entwickelt, nach der die zu
übertragenden Informationen kodiert und beim
Empfänger
wieder dekodiert werden. Diese Vorschriften nennt man Protokolle.
Protokolle sind Kommunikationsregeln. Die meisten
Protokolle
lassen sich den einzelnen Schichten des OSI-Referenzmodells zuordnen,
da es hier um die Kommunikation zwischen Computersystemen geht.
In einem Protokoll
sind technische
Aspekte (Codierung der Daten, Übertragungsgeschwindigkeit,
...)
und der algorithmische Ablauf der Übertragung (welche Station
sendet wann, Quittierung der empfangenen Daten, Behandlung von
Übertragungsfehlern, ...) festgelegt.
7.4.2.
Protokoll-Stack
Einzelne Protokolle kümmern sich nur um
Teilaufgaben, deshalb
werden mehrere Protokolle zu Protokollfamilien oder
–sammlungen,
den Protokollstacks (engl. Stapel), zusammengefasst. Die
Kommunikation zwischen Netzwerkkomponenten funktioniert nur, wenn
oder
Bei Installation einer Netzwerkkarte oder eines
Netzwerks müssen
Protokolle angegeben und ggf. konfiguriert werden.
7.4.3.
Routing-Fähigkeit
Routing-Fähigkeit ist ein
wichtiges Kriterium der
Protokoll-Stacks.
Routing ist die Vermittlungsfunktion,
die notwendig wird,
wenn Daten von einem Netzwerkknoten oder LAN zu einem anderen LAN
übertragen werden müssen und dabei unterschiedliche
Übertragungswege möglich sind.
Routingfähige Protokolle
liefern Informationen, die es
einem Router ermöglichen, eine Entscheidung zu treffen, wohin
ein Datenpaket weitergereicht werden soll.
Router: (route = Weg) Hard-/Software,
die den Datenfluss
der Pakete steuert.
Das
wichtigste
Protokollpaket ist derzeit TCP/IP
7.4.4. Verbindungslose und verbindungsorientierte Protokolle
Ein verbindungsorientiertes
Protokoll (z. B. TCP) stellt
immer zuerst eine Verbindung zur Gegenstelle her und prüft
diese. Erst nach erfolgreicher Prüfung beginnt die eigentliche
Datenübertragung. Verbindungslos (z.
B. UDP)
heißt, es wird nicht erst eine Verbindung zum
Gegenüber
aufgebaut, sondern man schickt „auf gut
Glück“ eine
Anfrage. Es ist also nicht garantiert, dass das Paket
überhaupt ankommt.
Aufgrund dieser Tatsache können zwischen zwei
Hosts
relativ schnell Datenpakete ausgetauscht werden. UDP wird deshalb
dort eingesetzt, wo die schnelle Übermittlung wichtiger ist
als
die Zuverlässigkeit, also die Gewissheit, dass die Daten
korrekt
und vollständig angekommen sind. In der Praxis sind das
Übertragungen von Multimedia-Daten
oder bei Daten bei Online-Spielen.
Auch ein sehr wichtiger Dienst im Internet, das Domain Name System,
setzt auf UDP auf.
Zeitlicher Versatz der Pakete (engl. jitter) kann bei
UDP nicht
erkannt werden.
7.4.5.
Ports
Da unterschiedliche Dienste wie FTP oder HTTP bei einem
per TCP
erreichbaren Rechner unter derselben IP-Adresse abgerufen werden
können, muss über eine zusätzliche Kennung
deutlich
gemacht werden, welcher Dienst konkret gewünscht wird. Dies
geschieht über die Portnummer. Port 0 bis 1023 sind
international genormt, theoretisch kann jede beliebige Nummer
verwendet werden. Portnummern sind also reine Kennzahlen, die im
unteren Bereich einer internationalen Normierung unterliegen.
|
Portnummer
|
Bedeutung
|
|
20
|
FTP-Daten
|
|
21
|
FTP-Befehle
|
|
23
|
Telnet
|
|
25
|
SMTP
|
|
80
|
HTTP
|
7.4.6. Warum ist mein Computer durch offene Ports gefährdet?
Wenn ich aus dem Internet Daten empfangen
möchte, dann muss
ich bestimmte Programme oder Dienste installieren, die mir diesen
Empfang ermöglichen. Z. B. muss ich, wenn ich WWW-Seiten
empfangen möchte, dafür sorgen, dass die Daten, die
über
die Portnummer 80 (besser: mit der Portkennung 80) empfangen werden,
durch bestimmte installierte Protokolle und einen Browser bei mir
richtig angezeigt werden.
Das bedeutet, dass nur dann Daten zu mir gelangen, wenn
mein
Computer auf eine bestimmte Portkennung antwortet oder irgendwie
reagiert. Wenn ein potenzieller Angreifer aus dem Internet durch
Übertragung der Portnummer 23 herausbekommt, dass bei mir ein
Telnet-Serverprogramm aktiv ist, so kann er über diesen
„offenen“ Port 23 meinen Computer fernsteuern.
Ein offener Port ist also nichts anderes als ein auf
meinem
Computer installiertes Programm, das bei Angabe einer bestimmten
Portnummer aktiv wird.
Diese aktiven Programme können z. B. durch
Installation von
Software zweifelhafter Herkunft auf meinen Computer gelangen. Wenn
man den Verdacht hat, dass man durch offene Ports
Angriffsfläche
bietet, so sollte man durch Einsatz bestimmter Diagnosesoftware diese
Lücken erkennen und schließen.
7.4.7. Übersicht über wichtige Protokolle
|
Protokoll
|
Beschreibung
|
OSI-Schicht
|
|
TCP
Transport Control Protocol
|
Dient zum Aufbau logischer
Verbindungen zwischen Applikationen. Verbindungsorientiert,
für sichere Datenübertragung.
|
Transportschicht
|
|
UDP
User Datagram Protocol
|
Minimales, verbindungsloses
Protokoll, nicht auf Zuverlässigkeit ausgelegt aber sehr
schnell.
|
Transportschicht
|
|
IP
Internet Protocol
|
Verbindungsloses Protokoll
zur Paketlenkung und –vermittlung über IP-Adressen.
|
Netzwerkschicht
|
|
FTP
File Transfer Protocol
|
Dient zum Datenaustausch
zwischen Rechnern
|
Anwendungsschicht
|
|
HTTP
Hypertext Transfer Protocol
|
Dient zur
Übertragung von HTML- (www- oder Internet-) Seiten
|
Anwendungsschicht
|
|
Telnet
Telecommunication Network Protocol
|
Dient zur Fernsteuerung von
Rechnern (Terminalemulation)
|
Anwendungsschicht
|
|
SMTP
Simple Mail Transfer Protocol
|
Dient zum Versenden von
eMail
|
Anwendungsschicht
|
7.4.7.1. TCP/IP
TCP/IP besteht aus einem Satz von Programmen, um die
Kommunikation
der verschiedenen Computer des weltumspannenden Netzes Internet zu
ermöglichen.
7.4.7.1.1. TCP (Transport Control Protocol)
Bevor Client und Server Daten austauschen
können, wird eine
Verbindung zwischen den Rechnern aufgebaut. Um zu vermeiden, dass
große Datenmengen das Netz für andere blockieren,
sind
folgende Verfahren vereinbart:
-
Die Daten werden in Pakete aufgeteilt und
durchnummeriert.
-
Je nach Auslastung der Übertragungsstrecke
wird evtl. ein anderer Weg (Route) zum Empfänger
gewählt. Dadurch ist es möglich, dass
spätere Datenpakete einer Datei solche mit kleinerer Nummer
überholen, sofern für sie eine schnellere Route
gewählt wurde.
-
Das TCP-Protokoll im Zielrechner setzt die
Datenpakete wieder in der richtigen Reihenfolge zusammen.
-
Fehlende Datenpakete werden vom sendenden Rechner
erneut übertragen.
7.4.7.1.2. IP (Internet Protocol)
Das Internet-Protokoll hat die Aufgabe, die Daten zum
gewünschten
Rechner (IP-Adresse) zu übertragen.
-
Hierzu ergänzt das Internet-Protokoll die
Datenpakete um Absender- und Zieladressen.
-
Der sendende Rechner leitet die Pakete an den
nächsten bekannten Rechner (= Router) weiter: Jeder Rechner
verfügt über eine sog. Routingtabelle, die die
Adressen erreichbarer Rechner im Netz enthält.
-
Falls dieser Rechner nicht der Zielrechner ist,
sorgt er für die Weiterleitung der Pakete
(die Übertragung erfordert keine durchgehende Verbindung).
-
Dieser Routingvorgang wird auf jedem Rechner beim
Empfang eines IP-Pakets durchgeführt, bis das Paket am Zielort
angelangt ist.
7.4.7.2. NetBIOS
(Network Basic Input Output System: Nicht
routingfähiges
Protokoll, entwickelt von IBM. Die Netzwerkrechner werden über
eindeutige, maximal 15 Zeichen lange Namen identifiziert und
angesprochen.
7.4.7.3. NetBEUI
NetBIOS Extended User Interface: Nicht
routingfähiges,
robustes, kleines und sehr schnelles Protokoll, entwickelt von
Microsoft. Für kleinere Netzwerke, die nur aus einem Segment
bestehen, gibt es keine schnellere Verbindungsmöglichkeit.
7.4.7.4. IPX/SPX
Internetwork Packet
Exchange/Sequenced Packet
Exchange. Mittlerweile veraltetes Protokoll der Firma
Novell.

|