- Mitglied seit
- 15. Mai 2008
- Beiträge
- 21.900
- Punkte für Reaktionen
- 14
- Punkte
- 0
Alle die bereits Erfahrungen mit Servern gemacht haben, brauchen nicht wirklich weiter lesen.
Ein NAS ist ein Server
Wenn man es ganz genau nimmt, dann nennt man Geräte, auf denen Server-Programme laufen: 'Server'. An den Geräten erkennt man also nicht unbedingt, ob es sich um einen Server handelt, sondern man erkennt es an den Programmen, die darauf laufen. Was ist nun ein Server-Programm? Am einfachsten ist das zu erklären, wenn man sich das Gegenstück anschaut: das Client-Programm.
Client-Server-Konzept
Ein Client-Programm hat meist Kontakt zu einem Bediener (User, Benutzer, Menschen) und meist besitzt es für diesen Kontakt ein UI (User-Interface = Mensch-Maschine-Schnittstelle), häufig ist diese auch noch graphisch bedienbar mit Maus, Tastatur, bildhaften Elementen (Icons) und besitzt die üblich bekannten Fenster/Panel-Eigenschaften, wie wir sie auch von Web-Browsern her kennen. Wir nennen das ganze oft GUI (Graphical User Interface). Typisch für die Nutzung eines Client-Programms ist, dass wir eine Vorgabe-Eingabe-Antwort-Verhaltensweise vorfinden: Ein Menü, ein Formular, ein Icon wird angeboten - der Mensch wählt aus, gibt ein, klickt - und bekommt dann eine Reaktion. Meist wird das Ausbleiben der Reaktion als Fehler interpretiert ("die Kiste steht"), denn wir erwarten auch bei einer Fehlbedienung eine Ausgabe (Fehlermeldung). Typisch ist auch für ein Client-Programm, dass es nicht kontinuierlich läuft, sondern bei Bedarf gestartet wird. Weiterhin typisch ist es, dass es Aufgaben nicht komplett autonom abwickelt, sondern sich Unterstützung durch Server-Programme holt.
Ein Server-Programm definiert sich aus der Sicht des Client-Programms: es besitzt keine UI/GUI, es wird einmal gestartet und läuft dann durch (Endlosschleife), es benötigt eine Aufrufschnittstelle für Client-Programme (Protokoll-Interface oder oft auch API = Application Programming Interface genannt), es muss im Fehlerfall nicht zwingend reagieren und es ist meist sehr viel einfacher und weniger umfangreich als ein Client-Programm, weil es die Komplexität einer Benutzerschnittstelle nicht benötigt. Allerdings verwendet es meist eine mehr oder weniger diffizile Prozessmanagement-Komponente, um mehrere parallele Client-Anfragen zu bewältigen (meist per Multi-Threading).
Zusammenspiel zwischen Client und Server
Das Zusammenspiel zwischen Client- und Server-Programmen sieht wie folgt aus:
- meist wird das Server-Programm bei Starten der NAS automatisch aktiviert ohne Bedienereingriff; meist wird dann von einem Starten eines Services (Dienstes) gesprochen. Viele Dienste werden mittels Shell-Skript in der /usr/syno/etc/rc.d gestartet (Start-Skripte)
- das Client-Programm wird vom Nutzer auf einem Arbeitsplatzrechner (PC, Mac, Mobile, Media-Client usw.) aktiviert/aufgerufen/gestartet und wartet meist auf Aktivitätsanfragen durch den Nutzer
- sobald eine Aktivitätsanfrage durch den Nutzer ein Mitwirken eines Server-Programms erfordert, wird ein vorher konfigurierte Methode zur Kontaktaufnahme zum Server-Programm ausprobiert. Methoden sind meist mit mehrstufigen Netzwerkprotokollen verbunden, z. B. Ethernet/IP-Protokoll/TCP-Protokoll/SMB-Protokoll für einen Zugriff auf einen auf der NAS freigegebenen Speicherbereich
- ist die Anfrage-Methode (Request) erfolgreich und kann das Server-Programm sie auch erfüllen (Berechtigungen, technische Machbarkeit z.B. Pfadname ist korrekt, usw.), dann wird das Server-Programm eine Antwort (Response) an das Client-Programm versenden
- ist die Anfrage komplexer Natur (z. B. größere Datenmengen) findet meist eine Abstimmung über den Datenaustausch statt, wie dieser sicher gestellt werden kann. Meist wird ein mehr- oder weniger ausgefeilter Handshake bzw. eine Transaktionssteuerung eingesetzt - dies ist vom Protokoll abhängig.
- ist die Anfrage des Client-Programms befriedigt, wartet das Server-Programm auf neue Anfragen (und befindet sich dabei quasi im Leerlauf)
Konsequenzen für ein NAS
Aus diesem Szenario heraus ergeben sich die folgenden Konsequenzen für ein NAS:
- wenn ein NAS nicht läuft bzw. nicht erreichbar ist, können Client-Programme ihre Anfragen nicht erfüllt bekommen (bei Webservern bekommen wir dann die 404-Fehlermeldung ... 404 bedeutet nicht unbedingt, dass der Server nicht läuft, aber wenn er nicht läuft, dann bekommen wir 404)
- ein Server-Programm benötigt eine konfigurierte Schnittstelle für den Kontakt mit Client-Programmanfragen, z. B. eine IP-Adresse, ein IP-Protokoll (TCP, UPD ...), eine Portnummer und eventuell weitere Eigenschafen, z.B. für eine Berechtigungsüberprüfung (netstat -an)
- ein Client-Programm muss wissen, wie es ein Server-Programm finden und mit ihm Kontakt aufnehmen kann (IP-Adresse, Port-Nummer, User, Kennwort, Anfragecode usw.) und gegebenenfalls müssen wir es dem Client-Programm mitteilen, wie es zum Server-Programm kommt, z.B. beim Browser über die URL (ftp://Username:Kennwort@IP_des_FTP_Serversortnummer/Pfad_zur_Datei/Dateinamen *guck hier*)
- Server-Programme sind meist nicht allzu groß und benötigen auch nicht unbedingt viel Speicher oder Performance; allerdings können sie durch viele Anfragen (Requests) durchaus stark belastet werden (top)
- Server-Programm ihrerseits können manchmal wieder weitere Server-Programme aufrufen, z.B. Proxy-Programme oder z. B. bei Webanwendungen: der Browser ruft den Web-Server an, dieser ruft per CGI z. B. den PHP-Interpreter auf und dieser schickt an den MySQL-Datenbank-Server eine Anfrage
- Server-Programm haben keine direkte UI (manchmal wird über ein Client-Programm eine Live-Konfiguration angeboten, aber das wäre eigentlich auch nur ein weiteres Client-Programm) und geben daher ihre eventuellen Mitteilungen meist als Protokoll-/Logbuch-Datei aus (manchmal separat, manchmal in das System-Logbuch /var/log/messages)
- es kann unterschiedlich Client-Programme geben, die mit dem gleichen Server-Programm (z.B. mehrere DLNA-Clients greifen auf den gleichen DLNA-Server zu) oder auch mit mehreren Server-Programme eine Konversation führen (z.B. der Browser hat mehrere Fenster zu unterschiedlichen Web-Servers auf)
- last, but not least: es kann recht kompliziert auf einem NAS zugehen, denn sie unterscheidet sich hinsichtlich der Administration nicht grundsätzlich von einem Unternehmensserver, wo es ausgebildetes Fachpersonal gibt. Jeder, der ein NAS einsetzt, wird also im Laufe der Zeit mit Server-Problemen konfrontiert und wird sich auch Server-Kenntnisse aneignen, ob er/sie es will oder nicht, es wird so werden
Ein NAS ist ein Server
Wenn man es ganz genau nimmt, dann nennt man Geräte, auf denen Server-Programme laufen: 'Server'. An den Geräten erkennt man also nicht unbedingt, ob es sich um einen Server handelt, sondern man erkennt es an den Programmen, die darauf laufen. Was ist nun ein Server-Programm? Am einfachsten ist das zu erklären, wenn man sich das Gegenstück anschaut: das Client-Programm.
Client-Server-Konzept
Ein Client-Programm hat meist Kontakt zu einem Bediener (User, Benutzer, Menschen) und meist besitzt es für diesen Kontakt ein UI (User-Interface = Mensch-Maschine-Schnittstelle), häufig ist diese auch noch graphisch bedienbar mit Maus, Tastatur, bildhaften Elementen (Icons) und besitzt die üblich bekannten Fenster/Panel-Eigenschaften, wie wir sie auch von Web-Browsern her kennen. Wir nennen das ganze oft GUI (Graphical User Interface). Typisch für die Nutzung eines Client-Programms ist, dass wir eine Vorgabe-Eingabe-Antwort-Verhaltensweise vorfinden: Ein Menü, ein Formular, ein Icon wird angeboten - der Mensch wählt aus, gibt ein, klickt - und bekommt dann eine Reaktion. Meist wird das Ausbleiben der Reaktion als Fehler interpretiert ("die Kiste steht"), denn wir erwarten auch bei einer Fehlbedienung eine Ausgabe (Fehlermeldung). Typisch ist auch für ein Client-Programm, dass es nicht kontinuierlich läuft, sondern bei Bedarf gestartet wird. Weiterhin typisch ist es, dass es Aufgaben nicht komplett autonom abwickelt, sondern sich Unterstützung durch Server-Programme holt.
Ein Server-Programm definiert sich aus der Sicht des Client-Programms: es besitzt keine UI/GUI, es wird einmal gestartet und läuft dann durch (Endlosschleife), es benötigt eine Aufrufschnittstelle für Client-Programme (Protokoll-Interface oder oft auch API = Application Programming Interface genannt), es muss im Fehlerfall nicht zwingend reagieren und es ist meist sehr viel einfacher und weniger umfangreich als ein Client-Programm, weil es die Komplexität einer Benutzerschnittstelle nicht benötigt. Allerdings verwendet es meist eine mehr oder weniger diffizile Prozessmanagement-Komponente, um mehrere parallele Client-Anfragen zu bewältigen (meist per Multi-Threading).
Zusammenspiel zwischen Client und Server
Das Zusammenspiel zwischen Client- und Server-Programmen sieht wie folgt aus:
- meist wird das Server-Programm bei Starten der NAS automatisch aktiviert ohne Bedienereingriff; meist wird dann von einem Starten eines Services (Dienstes) gesprochen. Viele Dienste werden mittels Shell-Skript in der /usr/syno/etc/rc.d gestartet (Start-Skripte)
- das Client-Programm wird vom Nutzer auf einem Arbeitsplatzrechner (PC, Mac, Mobile, Media-Client usw.) aktiviert/aufgerufen/gestartet und wartet meist auf Aktivitätsanfragen durch den Nutzer
- sobald eine Aktivitätsanfrage durch den Nutzer ein Mitwirken eines Server-Programms erfordert, wird ein vorher konfigurierte Methode zur Kontaktaufnahme zum Server-Programm ausprobiert. Methoden sind meist mit mehrstufigen Netzwerkprotokollen verbunden, z. B. Ethernet/IP-Protokoll/TCP-Protokoll/SMB-Protokoll für einen Zugriff auf einen auf der NAS freigegebenen Speicherbereich
- ist die Anfrage-Methode (Request) erfolgreich und kann das Server-Programm sie auch erfüllen (Berechtigungen, technische Machbarkeit z.B. Pfadname ist korrekt, usw.), dann wird das Server-Programm eine Antwort (Response) an das Client-Programm versenden
- ist die Anfrage komplexer Natur (z. B. größere Datenmengen) findet meist eine Abstimmung über den Datenaustausch statt, wie dieser sicher gestellt werden kann. Meist wird ein mehr- oder weniger ausgefeilter Handshake bzw. eine Transaktionssteuerung eingesetzt - dies ist vom Protokoll abhängig.
- ist die Anfrage des Client-Programms befriedigt, wartet das Server-Programm auf neue Anfragen (und befindet sich dabei quasi im Leerlauf)
Konsequenzen für ein NAS
Aus diesem Szenario heraus ergeben sich die folgenden Konsequenzen für ein NAS:
- wenn ein NAS nicht läuft bzw. nicht erreichbar ist, können Client-Programme ihre Anfragen nicht erfüllt bekommen (bei Webservern bekommen wir dann die 404-Fehlermeldung ... 404 bedeutet nicht unbedingt, dass der Server nicht läuft, aber wenn er nicht läuft, dann bekommen wir 404)
- ein Server-Programm benötigt eine konfigurierte Schnittstelle für den Kontakt mit Client-Programmanfragen, z. B. eine IP-Adresse, ein IP-Protokoll (TCP, UPD ...), eine Portnummer und eventuell weitere Eigenschafen, z.B. für eine Berechtigungsüberprüfung (netstat -an)
- ein Client-Programm muss wissen, wie es ein Server-Programm finden und mit ihm Kontakt aufnehmen kann (IP-Adresse, Port-Nummer, User, Kennwort, Anfragecode usw.) und gegebenenfalls müssen wir es dem Client-Programm mitteilen, wie es zum Server-Programm kommt, z.B. beim Browser über die URL (ftp://Username:Kennwort@IP_des_FTP_Serversortnummer/Pfad_zur_Datei/Dateinamen *guck hier*)
- Server-Programme sind meist nicht allzu groß und benötigen auch nicht unbedingt viel Speicher oder Performance; allerdings können sie durch viele Anfragen (Requests) durchaus stark belastet werden (top)
- Server-Programm ihrerseits können manchmal wieder weitere Server-Programme aufrufen, z.B. Proxy-Programme oder z. B. bei Webanwendungen: der Browser ruft den Web-Server an, dieser ruft per CGI z. B. den PHP-Interpreter auf und dieser schickt an den MySQL-Datenbank-Server eine Anfrage
- Server-Programm haben keine direkte UI (manchmal wird über ein Client-Programm eine Live-Konfiguration angeboten, aber das wäre eigentlich auch nur ein weiteres Client-Programm) und geben daher ihre eventuellen Mitteilungen meist als Protokoll-/Logbuch-Datei aus (manchmal separat, manchmal in das System-Logbuch /var/log/messages)
- es kann unterschiedlich Client-Programme geben, die mit dem gleichen Server-Programm (z.B. mehrere DLNA-Clients greifen auf den gleichen DLNA-Server zu) oder auch mit mehreren Server-Programme eine Konversation führen (z.B. der Browser hat mehrere Fenster zu unterschiedlichen Web-Servers auf)
- last, but not least: es kann recht kompliziert auf einem NAS zugehen, denn sie unterscheidet sich hinsichtlich der Administration nicht grundsätzlich von einem Unternehmensserver, wo es ausgebildetes Fachpersonal gibt. Jeder, der ein NAS einsetzt, wird also im Laufe der Zeit mit Server-Problemen konfrontiert und wird sich auch Server-Kenntnisse aneignen, ob er/sie es will oder nicht, es wird so werden
Zuletzt bearbeitet: