Einführung
Ein Verständnis für Netzwerke ist wichtig für jeden, der einen Server verwaltet. Es ist nicht nur entscheidend, um Ihre Dienste online und reibungslos am Laufen zu halten, sondern es gibt Ihnen auch Einblicke, um Probleme zu diagnostizieren.
Dieser Artikel bietet einen Überblick über einige gemeinsame Netzwerkkonzepte. Wir werden Terminologie, gängige Protokolle sowie die Verantwortlichkeiten und Merkmale der verschiedenen Netzwerkschichten besprechen.
Dieser Leitfaden ist betriebssystemunabhängig, sollte jedoch sehr hilfreich sein, wenn Sie Funktionen und Dienste implementieren, die Netzwerke auf Ihrem Server nutzen.
Netzwerk-Glossar
Zunächst werden wir einige gebräuchliche Begriffe definieren, die Sie in diesem Leitfaden und in anderen Dokumentationen im Zusammenhang mit Netzwerken sehen werden.
Diese Begriffe werden in den entsprechenden Abschnitten im Folgenden erläutert:
-
Verbindung: In der Netzwerktechnik bezieht sich eine Verbindung auf zusammenhängende Informationen, die durch ein Netzwerk übertragen werden. Im Allgemeinen wird eine Verbindung vor der Datenübertragung hergestellt (indem die in einem Protokoll festgelegten Verfahren befolgt werden) und kann am Ende der Datenübertragung aufgelöst werden.
-
Paket: Ein Paket ist die kleinste Einheit, die absichtlich über ein Netzwerk übertragen wird. Beim Kommunizieren über ein Netzwerk sind Pakete die Umschläge, die Ihre Daten (in Stücken) von einem Endpunkt zum anderen transportieren.
Pakete haben einen Kopfbereich, der Informationen zum Paket enthält, einschließlich Quelle und Ziel, Zeitstempel, Netzwerkhüpfer usw. Der Hauptteil eines Pakets enthält die tatsächlich übertragenen Daten. Er wird manchmal als der Körper oder die Nutzlast bezeichnet.
- Netzwerkschnittstelle: Eine Netzwerkschnittstelle kann sich auf jede Art von Software-Schnittstelle zu Netzwerkhardware beziehen. Wenn Sie beispielsweise zwei Netzwerkkarten in Ihrem Computer haben, können Sie jede mit ihnen verbundene Netzwerkschnittstelle einzeln steuern und konfigurieren.
A network interface may be associated with a physical device, or it may be a representation of a virtual interface. The “loopback” device, which is a virtual interface available in most Linux environments to connect back to the same machine, is an example of this.
-
LAN: LAN steht für „Local Area Network“. Es bezieht sich auf ein Netzwerk oder einen Teil eines Netzwerks, der für die breite Öffentlichkeit nicht zugänglich ist. Ein Heim- oder Büronetzwerk ist ein Beispiel für ein LAN.
-
WAN: WAN steht für „Wide Area Network“. Es handelt sich um ein Netzwerk, das viel umfangreicher ist als ein LAN. Während WAN der relevante Begriff ist, um große, verteilte Netzwerke im Allgemeinen zu beschreiben, bezieht er sich in der Regel auf das Internet als Ganzes.
Wenn eine Schnittstelle mit dem WAN verbunden ist, wird im Allgemeinen davon ausgegangen, dass sie über das Internet erreichbar ist.
- Protokoll: Ein Protokoll ist eine Reihe von Regeln und Standards, die eine Sprache definieren, die Geräte zur Kommunikation verwenden können. Es gibt eine große Anzahl von Protokollen, die umfangreich in Netzwerken verwendet werden, und sie werden oft in verschiedenen Ebenen implementiert.
Einige Protokolle auf niedriger Ebene sind TCP, UDP, IP und ICMP. Einige bekannte Beispiele für Anwendungsschichtprotokolle, die auf diesen unteren Protokollen aufbauen, sind HTTP (zum Zugriff auf Webinhalte), SSH und TLS/SSL.
-
Port: Ein Port ist eine Adresse auf einer einzelnen Maschine, die an eine bestimmte Software gebunden werden kann. Es handelt sich nicht um eine physische Schnittstelle oder Position, ermöglicht es jedoch Ihrem Server, mit mehr als einer Anwendung zu kommunizieren.
-
Firewall: Eine Firewall ist ein Programm, das entscheidet, ob der Verkehr, der von einem Server kommt oder geht, zugelassen werden soll. Eine Firewall arbeitet normalerweise, indem sie Regeln erstellt, welche Art von Verkehr auf welchen Ports akzeptabel ist. Im Allgemeinen blockieren Firewalls Ports, die von einer bestimmten Anwendung auf einem Server nicht verwendet werden.
-
NAT: NAT steht für Network Address Translation. Es handelt sich um eine Möglichkeit, eingehende Anfragen neu zu verpacken und an einen Routing-Server weiterzuleiten, um die relevanten Geräte oder Server in einem LAN zu erreichen. Dies wird normalerweise in physischen LANs implementiert, um Anfragen über eine IP-Adresse an die erforderlichen Backend-Server zu routen.
-
VPN: VPN steht für virtuelles privates Netzwerk. Es ist ein Mittel, um separate LANs über das Internet zu verbinden und dabei die Privatsphäre zu wahren. Dies wird verwendet, um entfernte Systeme zu verbinden, als ob sie sich in einem lokalen Netzwerk befänden, oft aus Sicherheitsgründen.
Es gibt viele andere Begriffe, auf die Sie stoßen werden, und diese Liste ist nicht abschließend. Wir werden weitere Begriffe erklären, wenn wir sie brauchen. Zu diesem Zeitpunkt sollten Sie einige grundlegende Konzepte verstehen, die es uns ermöglichen, die kommenden Themen besser zu diskutieren.
Netzwerkschichten
Obwohl Netzwerke oft horizontal in Bezug auf Topologie zwischen Hosts diskutiert werden, ist ihre Implementierung innerhalb eines bestimmten Computers oder Netzwerks vertikal geschichtet.
Dies bedeutet, dass es mehrere Technologien und Protokolle gibt, die übereinander aufgebaut sind, damit die Kommunikation funktioniert. Jede aufeinanderfolgende höhere Schicht abstrahiert die Rohdaten etwas mehr.
Es ermöglicht auch, dass Sie niedrigere Schichten auf neue Weise nutzen, ohne die Zeit und Energie investieren zu müssen, um die Protokolle und Anwendungen zu entwickeln, die diese Arten von Datenverkehr handhaben.
Die Sprache, die wir verwenden, um über jede der Schichtungsschemata zu sprechen, variiert erheblich, abhängig vom verwendeten Modell. Unabhängig vom Modell, das für die Diskussion der Schichten verwendet wird, ist der Datenweg derselbe.
Wenn Daten von einer Maschine gesendet werden, beginnt es oben im Stapel und filtert nach unten. Auf der niedrigsten Ebene findet die eigentliche Übertragung zu einer anderen Maschine statt. An diesem Punkt durchläuft die Daten den Stapel der anderen Computer aufwärts.
Jede Schicht hat die Möglichkeit, ihre eigene „Umhüllung“ um die Daten hinzuzufügen, die sie von der benachbarten Schicht empfängt. Dies hilft den nachfolgenden Schichten zu entscheiden, was mit den Daten zu tun ist, wenn sie weitergegeben werden.
TCP/IP-Modell
Das TCP/IP-Modell, besser bekannt als das Internetprotokollsuite, ist ein weit verbreitetes Schichtmodell. Es definiert die vier separaten Schichten:
-
Anwendung: In diesem Modell ist die Anwendungsschicht dafür verantwortlich, Benutzerdaten zwischen Anwendungen zu erstellen und zu übertragen. Die Anwendungen können auf entfernten Systemen sein und sollten für den Endbenutzer lokal erscheinen. Diese Kommunikation findet zwischen Peers statt.
-
Transport: Die Transportschicht ist für die Kommunikation zwischen Prozessen verantwortlich. Diese Netzwerkebene verwendet Ports, um verschiedene Dienste anzusprechen.
-
Internet: Die Internetebene wird verwendet, um Daten von Knoten zu Knoten in einem Netzwerk zu transportieren. Diese Ebene ist sich der Endpunkte der Verbindungen bewusst, kümmert sich jedoch nicht um die eigentliche Verbindung, die benötigt wird, um von einem Ort zum anderen zu gelangen. IP-Adressen werden in dieser Ebene definiert, um entfernte Systeme auf adressierbare Weise zu erreichen.
-
Link: Die Verbindungsebene implementiert die tatsächliche Topologie des lokalen Netzwerks, die es der Internetebene ermöglicht, eine adressierbare Schnittstelle bereitzustellen. Sie stellt Verbindungen zwischen benachbarten Knoten her, um Daten zu senden.
Wie Sie sehen können, ist das TCP/IP-Modell abstrakt und flexibel. Dies hat dazu geführt, dass es beliebt ist, es zu implementieren, und es ermöglichte, dass es zur dominanten Art wurde, wie Netzwerkschichten kategorisiert werden.
Interfaces
Interfaces sind Netzwerkkommunikationspunkte für Ihren Computer. Jede Schnittstelle ist mit einem physischen oder virtuellen Netzwerkgerät verbunden.
Ihr Server wird typischerweise eine konfigurierbare Netzwerkschnittstelle für jede Ethernet- oder drahtlose Netzwerkkarte haben, die Sie besitzen.
Zusätzlich wird eine virtuelle Netzwerkschnittstelle namens „Loopback“ oder „localhost“ definiert. Diese wird als Schnittstelle verwendet, um Anwendungen und Prozesse auf einem einzigen Computer mit anderen Anwendungen und Prozessen zu verbinden. Dies wird in vielen Tools als „lo“-Schnittstelle bezeichnet.
Oft konfigurieren Administratoren eine Schnittstelle, um den Datenverkehr zum Internet zu bedienen, und eine andere Schnittstelle für ein LAN oder ein privates Netzwerk.
In Rechenzentren mit aktiviertem privaten Networking (einschließlich DigitalOcean-Droplets) wird Ihr VPS zwei Netzwerkschnittstellen haben. Die „eth0“-Schnittstelle wird konfiguriert sein, um den Datenverkehr aus dem Internet zu verarbeiten, während die „eth1“-Schnittstelle verwendet wird, um mit einem privaten Netzwerk zu kommunizieren.
Protokolle
Networking funktioniert, indem eine Reihe verschiedener Protokolle übereinander gestapelt werden. Auf diese Weise kann ein Datenstück unter Verwendung mehrerer ineinander verschachtelter Protokolle übertragen werden.
Wir werden mit Protokollen beginnen, die auf den unteren Netzwerkschichten implementiert sind, und uns zu Protokollen mit höherer Abstraktion vorarbeiten.
Zugriffskontrolle zum Medium
Die Zugriffskontrolle zum Medium ist ein Kommunikationsprotokoll, das verwendet wird, um spezifische Geräte zu unterscheiden. Jedes Gerät soll beim Herstellen eine eindeutige, fest codierte Media Access Control-Adresse (MAC-Adresse) erhalten, die es von allen anderen Geräten im Internet unterscheidet.
Das Ansprechen der Hardware anhand der MAC-Adresse ermöglicht es Ihnen, auf ein Gerät mit einem eindeutigen Wert zu verweisen, auch wenn die darüber liegende Software während des Betriebs den Namen für dieses spezifische Gerät ändern kann.
MAC-Adressierung ist eines der wenigen Protokolle aus der Linkschicht auf niedriger Ebene, mit denen Sie wahrscheinlich regelmäßig interagieren.
IP
Das IP-Protokoll ist eines der grundlegenden Protokolle, die das Internet zum Funktionieren bringen. IP-Adressen sind einzigartig in jedem Netzwerk und ermöglichen es den Maschinen, sich über ein Netzwerk anzusprechen. Es wird auf der Internetschicht im TCP/IP-Modell implementiert.
Netzwerke können miteinander verbunden werden, aber der Datenverkehr muss geroutet werden, wenn er Netzwerkgrenzen überschreitet. Dieses Protokoll geht von einem unzuverlässigen Netzwerk und mehreren Pfaden zum gleichen Ziel aus, zwischen denen es dynamisch wechseln kann.
Es gibt eine Reihe verschiedener Implementierungen des Protokolls. Die heute am häufigsten verwendete Implementierung sind IPv4-Adressen, die dem Muster 123.123.123.123
folgen, obwohl IPv6-Adressen, die dem Muster 2001:0db8:0000:0000:0000:ff00:0042:8329
folgen, aufgrund der begrenzten Anzahl verfügbarer IPv4-Adressen an Popularität gewinnen.
ICMP
ICMP steht für Internet Control Message Protocol. Es wird verwendet, um Nachrichten zwischen Geräten zu senden, um deren Verfügbarkeit oder Fehlerbedingungen anzuzeigen. Diese Pakete werden in einer Vielzahl von Netzwerkdiagnosetools verwendet, wie z. B. ping
und traceroute
.
Gewöhnlich werden ICMP-Pakete übertragen, wenn eine andere Art von Paket auf ein Problem stößt. Sie dienen als Rückmelde-Mechanismus für Netzwerkkommunikationen.
TCP
TCP steht für Transmission Control Protocol. Es wird in der Transportschicht des TCP/IP-Modells implementiert und dient zum Aufbau zuverlässiger Verbindungen.
TCP ist eines der Protokolle, das Daten in Pakete verpackt. Diese werden dann mithilfe der auf den unteren Schichten verfügbaren Methoden an das entfernte Ende der Verbindung übertragen. Auf der anderen Seite kann es Fehler überprüfen, bestimmte Stücke anfordern, um erneut gesendet zu werden, und die Informationen zu einem logischen Stück zusammenfügen, um sie an die Anwendungsschicht zu senden.
Das Protokoll baut eine Verbindung vor dem Datentransfer mit einem System namens dreifacher Handshake auf. Dies ist eine Möglichkeit für die beiden Enden der Kommunikation, die Anfrage anzuerkennen und sich auf eine Methode zur Sicherstellung der Datenzuverlässigkeit zu einigen.
Nachdem die Daten gesendet wurden, wird die Verbindung mithilfe eines ähnlichen vierteiligen Handshakes abgebaut.
TCP ist das bevorzugte Protokoll für viele der beliebtesten Internetanwendungen, einschließlich WWW, SSH und E-Mail.
UDP
UDP steht für User Datagram Protocol. Es ist ein beliebtes Begleitprotokoll zu TCP und wird ebenfalls in der Transportschicht implementiert.
Der wesentliche Unterschied zwischen UDP und TCP besteht darin, dass UDP eine unzuverlässige Datenübertragung bietet. Es überprüft nicht, ob die Daten am anderen Ende der Verbindung empfangen wurden. Das mag sich zwar nachteilig anhören, ist aber für einige Funktionen auch äußerst wichtig.
Weil es nicht erforderlich ist, auf eine Bestätigung zu warten, dass die Daten empfangen wurden und gezwungen ist, Daten erneut zu senden, ist UDP viel schneller als TCP. Es stellt keine Verbindung zum Remote-Host her, sondern sendet einfach Daten ohne Bestätigung.
Weil es sich um eine einfache Transaktion handelt, ist es nützlich für Kommunikationen wie die Abfrage von Netzwerkressourcen. Es pflegt auch keinen Zustand, was es ideal macht, Daten von einer Maschine an viele Echtzeit-Clients zu übertragen. Dies macht es ideal für VOIP, Spiele und andere Anwendungen, die sich keine Verzögerungen leisten können.
HTTP
HTTP steht für Hypertext Transfer Protocol. Es ist ein Protokoll, das in der Anwendungsschicht definiert ist und die Grundlage für die Kommunikation im Web bildet.
HTTP definiert eine Reihe von Verben, die dem entfernten System mitteilen, was angefordert wird. Zum Beispiel interagieren GET, POST und DELETE alle auf unterschiedliche Weise mit den angeforderten Daten. Um ein Beispiel für die verschiedenen HTTP-Anfragen in Aktion zu sehen, siehe Wie man Routen und HTTP-Anfragemethoden in Express definiert.
DNS
DNS steht für Domain Name System. Es ist ein Anwendungsprotokoll, das verwendet wird, um einen benutzerfreundlichen Namensmechanismus für Internetressourcen bereitzustellen. Es ist das, was einen Domainnamen mit einer IP-Adresse verbindet und es Ihnen ermöglicht, Websites nach Namen in Ihrem Browser aufzurufen.
SSH
SSH steht für Secure Shell. Es ist ein verschlüsseltes Protokoll, das in der Anwendungsschicht implementiert ist und dazu verwendet werden kann, mit einem Remote-Server auf sichere Weise zu kommunizieren. Viele zusätzliche Technologien sind um dieses Protokoll herum aufgebaut, wegen seiner Ende-zu-Ende-Verschlüsselung und Allgegenwärtigkeit.
Es gibt viele andere Protokolle, die wir nicht behandelt haben, die jedoch ebenfalls wichtig sind. Dies sollte Ihnen jedoch einen guten Überblick über einige der grundlegenden Technologien geben, die das Internet und Netzwerke möglich machen.
Schlussfolgerung
Zu diesem Zeitpunkt sollten Sie mit einigen Netzwerkterminologien vertraut sein und verstehen können, wie verschiedene Komponenten miteinander kommunizieren können. Dies sollte Ihnen helfen, andere Artikel und die Dokumentation Ihres Systems zu verstehen.
Als nächstes möchten Sie vielleicht How To Make HTTP Requests in Go lesen, um ein Beispiel auf hoher Ebene in der realen Welt zu erhalten.