Muss es zur Netzwerkkommunikation immer Server und Client geben?

...komplette Frage anzeigen

5 Antworten

Nein, es muss nicht so sein.

TCP ist ein verbindungsorientiertes Protokoll. Es muss zunächst eine Verbindung zwischen den beiden Teilnehmern aufgebaut werden, dann können Daten übetragen werden (in beide Richtungen), anschließend wird die Verbindung wieder getrennt.

Zu diesem Zweck gibt es Server, die auf Verbindungen warten ("listen") und diese annehmen ("accept") und Clients, die Verbindungen aufbauen ("connect"). Das sind unterschiedliche Aufrufe an den Netzwerkstack des Betriebssystems.

Es gibt aber auch verbindungslose Protokolle, wie UDP, bei denen einfach jeder Rechner ungefragt ein Paket (datagram) schicken kann, ohne dass zuvor eine Verbindung aufgebaut wird.

Aber auch bei der Verwendung von verbindungsorientierten Protokollen kann man ein "peer-to-peer"-Netz schaffen, indem man einfach erlaubt, dass beide Seiten die Verbindung initiieren können und umgekehrt auch beide Seiten auf eingehende Verbindungen warten. Dann gibt es keine Unterscheidung in Client und Server mehr (oder zumindest gibt es sie nur für die Dauer einer "Sitzung", d. h. solange diese konkrete Verbindung besteht).

Dass "Funktionen ausgelöst werden" ist erstmal nicht der Fall. Wenn Du eine TCP-Verbindung aufbaust, hast Du eine Möglichkeit, einen Bitstrom von einer Anwendung zu einer anderen zu schicken. Wie der Sender diesen Bitstrom aufbaut und wie der Empfänger diesen interpretiert und was er dann mit den empfangenen Informationen macht, musst Du als Entwickler festlegen, indem Du ein entsprechendes Anwendungsprotokoll entwirfst, das auf dem Transportprotokoll TCP (zuverlässig, verbindungsorientiert) oder UDP (unzuverlässig, verbindungslos) aufbaut. Ein solches Protokoll zu designen ist gemeinhin ziemlich schwierig.

Es gibt auch Bibliotheken, die einen "remote procedure call" (RPC), den Aufruf einer Prozedur (eines Unterprogramms) auf einem anderen Computer, erlauben. Diese implementieren dann entsprechende Anwendungsprotokolle, sodass Du es nicht selbst machen musst, sind aber auch nicht unbedingt einfach zu verwenden und natürlich auch weniger flexibel und an Deine Anforderungen angepasst, als der Entwurf eines neuen Protokolls von Grund auf. Außerdem kann die Möglichkeit von Remoteprozeduraufrufen, wie Du Dir sicher vorstellen kannst, ein Sicherheitsrisiko darstellen.

Bei Verbindungsorientierten Protokollen ja, aber das bedeutet nicht das der Server immer ein reiner Server ist im Sinne eines Webservers o.ä.. Server bezeichnet hier nur eine Rolle sowie auch Client. Ein Computer kann gleichzeitig vielfach Server und Client sein, in einer oder mehreren Verbindungen.

Ja das muss so sein. Client und Server beschreiben einfach die Rollen in der Verbindung. Der Partner, der auf Verbndungen wartet ist der Server, der der Verbindung anstößt ist der Client.

Gleichzeitig kann ein Server während er wartet, auch Client sein und zu anderen Servern Verbindungen aufnehmen, in deren Beziehung ist er dann der Klient.

Für diese Definition ist es unerheblich was Server oder Client im weiteren leisten oder ob als Protokoll TCP oder UDP verwendet wird. Insofern widerspricht meine Definition der Ansicht von nohumanbeing.

suessf 08.11.2016, 07:43

Gut erklärt - DH!

Des Rätsels lösendes Stichwort heisst: "ROLLE".

Einfaches Beispiel: Zwei PCs richten sich gegenseitig Freigaben ein. Wenn die sich Daten gegenseitig austauschen, dann spielt jeder PC einmal "Server" (wenn der andere auf ihn zugreift) und einmal "Client" (wenn er selber auf den anderen PC zugreift).

2

Du sprichst hier über Peer to Peer und Client-Server Architekturen.

http://www.computerwoche.de/a/peer-to-peer-oder-client-server-was-ist-wann-das-richtige,1121468

NoHumanBeing 08.11.2016, 01:00

Der Artikel ist mehr als 20 Jahre alt. ;-)

2
Roderic 08.11.2016, 01:24
@NoHumanBeing

Macht nüscht: Die technologischen Grundlagen der Netzwerke sind über 40 Jahre alt.

;-)

3
NoHumanBeing 08.11.2016, 02:50
@Roderic

Mich haben nur die folgenden Stellen "verwirrt".

teure Peripherie wie Festplatten, CD-ROMs oder Drucker

Oder auch folgende.

Die Peer-to-peer-Ausfuehrungen von Netware und Lantastic sind in Form von kleinen TSR-Programmen (terminate-stay-resident) realisiert, die sich resident im Arbeitsspeicher des unter DOS arbeitenden PCs befinden.

Mein Gedanke: "Oh Gott, speicherresidente Programme! Sowas kommt ja schon seit Jahrzehnten nicht mehr zum Einsatz."

Ein Blick auf das Erscheinungsdatum sorgte dann für Klarheit. ;-)

0

Wenn es ein netzwerk nur aus servern gäbe ohne clients und umgekehrt kann man sich das netzwerk sparen weil da nix fliesst.

Was möchtest Du wissen?