Vernetzung und Kommunikation
Das Gebiet der Vernetzung und Kommunikation umfasst die Analyse, das Design, die Implementierung und die Nutzung lokaler, weiträumiger und mobiler Netzwerke, die Computer miteinander verbinden. Das Internet selbst ist ein Netzwerk, das es fast allen Computern auf der Welt ermöglicht, zu kommunizieren.
Ein Computernetzwerk verbindet Computer über eine Kombination von Infrarotlichtsignalen, Funkwellenübertragungen, Telefonleitungen, Fernsehkabeln und Satellitenverbindungen. Die Herausforderung für Informatiker bestand darin, Protokolle (standardisierte Regeln für das Format und den Austausch von Nachrichten) zu entwickeln, mit denen Prozesse, die auf Hostcomputern ausgeführt werden, die empfangenen Signale interpretieren und sinnvolle “Gespräche” führen können, um Aufgaben im Namen der Benutzer zu erfüllen. Netzwerkprotokolle umfassen auch die Flusssteuerung, die verhindert, dass ein Datensender einen Empfänger mit Nachrichten überflutet, für deren Verarbeitung er keine Zeit oder keinen Speicherplatz hat, und die Fehlerkontrolle, die die Erkennung von Übertragungsfehlern und das automatische erneute Senden von Nachrichten zur Korrektur solcher Fehler umfasst. (Einige technische Details zur Fehlererkennung und -korrektur finden Sie unter Informationstheorie.)
Die Standardisierung von Protokollen ist eine internationale Anstrengung. Da es sonst für verschiedene Arten von Maschinen und Betriebssystemen unmöglich wäre, miteinander zu kommunizieren, war das Hauptanliegen, dass Systemkomponenten (Computer) “offen” sind.” Diese Terminologie stammt aus den Kommunikationsstandards Open Systems Interconnection (OSI), die von der Internationalen Organisation für Normung festgelegt wurden. Das OSI-Referenzmodell spezifiziert Netzwerkprotokollstandards in sieben Schichten. Jede Schicht wird durch die Funktionen definiert, auf die sie sich von der darunter liegenden Schicht stützt, und durch die Dienste, die sie der darüber liegenden Schicht bereitstellt.
Am Ende des Protokolls befindet sich die physikalische Schicht, die Regeln für den Transport von Bits über eine physikalische Verbindung enthält. Die Datenverbindungsschicht verarbeitet “Datenpakete” in Standardgröße und fügt Zuverlässigkeit in Form von Fehlererkennungs- und Flusssteuerungsbits hinzu. Die Netzwerk- und Transportschichten teilen Nachrichten in Pakete Standardgröße auf und leiten sie an ihre Ziele weiter. Die Sitzungsschicht unterstützt Interaktionen zwischen Anwendungen auf zwei kommunizierenden Maschinen. Beispielsweise bietet es einen Mechanismus, mit dem Checkpoints (Speichern des aktuellen Status einer Aufgabe) in eine lange Dateiübertragung eingefügt werden können, sodass im Fehlerfall nur die Daten nach dem letzten Checkpoint erneut übertragen werden müssen. Die Präsentationsschicht befasst sich mit Funktionen, die Daten kodieren, so dass heterogene Systeme eine sinnvolle Kommunikation durchführen können. Auf höchster Ebene befinden sich Protokolle, die bestimmte Anwendungen unterstützen. Ein Beispiel für eine solche Anwendung ist das File Transfer Protocol (FTP), das die Übertragung von Dateien von einem Host auf einen anderen regelt.
Die Entwicklung von Netzwerken und Kommunikationsprotokollen hat auch verteilte Systeme hervorgebracht, in denen Computer, die in einem Netzwerk verbunden sind, Daten und Verarbeitungsaufgaben gemeinsam nutzen. Ein verteiltes Datenbanksystem verfügt beispielsweise über eine Datenbank, die auf verschiedene Netzwerkstandorte verteilt (oder an diesen repliziert) ist. Daten werden an “Spiegelstandorten” repliziert, und die Replikation kann die Verfügbarkeit und Zuverlässigkeit verbessern. Ein verteiltes DBMS verwaltet eine Datenbank, deren Komponenten auf mehrere Computer in einem Netzwerk verteilt sind.
Ein Client-Server-Netzwerk ist ein verteiltes System, in dem sich die Datenbank auf einem Computer (dem Server) befindet und die Benutzer von ihren eigenen Computern (den Clients) über das Netzwerk eine Verbindung zu diesem Computer herstellen. Der Server stellt Daten bereit und antwortet auf Anforderungen von jedem Client, während jeder Client auf die Daten auf dem Server auf eine Weise zugreift, die unabhängig und unabhängig von der Anwesenheit anderer Clients ist, die auf dieselbe Datenbank zugreifen. Client-Server-Systeme erfordern, dass einzelne Aktionen von mehreren Clients auf denselben Teil der Serverdatenbank synchronisiert werden, damit Konflikte auf vernünftige Weise gelöst werden. Beispielsweise werden Flugreservierungen mithilfe eines Client-Server-Modells implementiert. Der Server enthält alle Daten zu anstehenden Flügen, wie aktuelle Buchungen und Sitzplatzzuweisungen. Jeder Kunde möchte auf diese Daten zugreifen, um einen Flug zu buchen, eine Sitzplatzzuweisung zu erhalten und den Flug zu bezahlen. Während dieses Vorgangs ist es wahrscheinlich, dass zwei oder mehr Kundenanfragen auf denselben Flug zugreifen möchten und nur noch ein Sitzplatz zugewiesen werden muss. Die Software muss diese beiden Anforderungen synchronisieren, damit der verbleibende Sitzplatz auf rationelle Weise zugewiesen wird (normalerweise der Person, die die Anforderung zuerst gestellt hat).
Eine weitere beliebte Art von verteiltem System ist das Peer-to-Peer-Netzwerk. Im Gegensatz zu Client-Server-Netzwerken geht ein Peer-to-Peer-Netzwerk davon aus, dass jeder Computer (Benutzer), der mit ihm verbunden ist, sowohl als Client als auch als Server fungieren kann. Diese Strategie ist sinnvoll für Gruppen, die Audiosammlungen im Internet teilen, und für die Organisation sozialer Netzwerke wie LinkedIn und Facebook. Jede Person, die mit einem solchen Netzwerk verbunden ist, erhält Informationen von anderen und teilt ihre eigenen Informationen mit anderen.