Heim > Artikel > System-Tutorial > Untergraben Sie Ihr Verständnis von Betriebssystemen – ein Überblick über Linux-Distributionen
Ob Sie ein erfahrener Programmierer oder ein Anfänger sind, ob Sie Windows- oder macOS-Benutzer sind, wenn Sie ein gewisses Verständnis für Computerbetriebssysteme haben, dann wird Ihnen der Name Linux auf jeden Fall bekannt sein. Allerdings kratzen Sie möglicherweise nur an der Oberfläche des Linux-Betriebssystems. Tatsächlich gibt es viele Linux-Distributionen, jede mit einzigartigen Funktionen und Anwendungsszenarien. Im Folgenden stellen wir Ihnen einige gängige Linux-Distributionen vor und helfen Ihnen dabei, das traditionelle Verständnis von Betriebssystemen zu untergraben.
Um mehreren Geräten die Kommunikation untereinander über das Netzwerk zu ermöglichen und die Kompatibilitätsprobleme verschiedener Geräte in der Netzwerkverbindung zu lösen, hat die International Standardization Organization das Open System Interconnection Reference Model, auch bekannt als Open System Interconnection Reference, formuliert Modell. Es handelt sich um das OSI-Netzwerkmodell, das hauptsächlich aus sieben Schichten besteht: Anwendungsschicht, Präsentationsschicht, Transportschicht, Netzwerkschicht, Datenverbindungsschicht und physikalische Schicht.
Jede Schicht ist für unterschiedliche Funktionen verantwortlich, wie folgt:
•Anwendungsschicht, verantwortlich für die Bereitstellung einer einheitlichen Schnittstelle zu Anwendungen
•Präsentationsschicht, verantwortlich für die Konvertierung von Daten in ein mit einem anderen System kompatibles Format
•Sitzungsschicht, verantwortlich für den Aufbau, die Verwaltung und die Beendigung von Kommunikationssitzungen zwischen Einheiten der Präsentationsschicht
•Transportschicht, verantwortlich für die End-to-End-Datenübertragung
•Netzwerkschicht, verantwortlich für Datenrouting, Weiterleitung und Fragmentierung
•Datenverbindungsschicht, verantwortlich für Datenrahmen und Fehlererkennung sowie MAC-Adressierung
•Physische Schicht, verantwortlich für die Übertragung von Datenrahmen im physischen Netzwerk;
Da das OSI-Modell zu komplex ist, wird nur eine konzeptionelle und theoretische Schichtung vorgeschlagen und es wird kein spezifischer Implementierungsplan bereitgestellt. Tatsächlich ist das vierschichtige Modell, das häufiger und praktischer ist, das TCP/IP-Netzwerkmodell. Das Linux-System implementiert den Netzwerkprotokollstapel gemäß diesem Netzwerkmodell.
Das TCP/IP-Netzwerkmodell besteht aus 4 Schichten, nämlich Anwendungsschicht, Transportschicht, Netzwerkschicht und Netzwerkschnittstellenschicht. Die Funktionen jeder Schicht sind wie folgt:
•Anwendungsschicht, verantwortlich für die Bereitstellung einer Reihe von Anwendungen für Benutzer, wie HTTP, DNS, FTP usw.;
•Transportschicht, verantwortlich für die End-to-End-Kommunikation, wie TCP, UDP usw.;
•Netzwerkschicht, verantwortlich für die Kapselung, Fragmentierung, Weiterleitung und Weiterleitung von Netzwerkpaketen wie IP, ICMP usw.;
•Netzwerkschnittstellenschicht, verantwortlich für die Übertragung von Netzwerkpaketen im physischen Netzwerk, wie z. B. Netzwerkpaket-Framing, MAC-Adressierung, Fehlererkennung und Übertragung von Netzwerkrahmen über die Netzwerkkarte usw.;
Im Vergleich zum OSI-Netzwerkmodell ist das TCP/IP-Netzwerkmodell viel einfacher und leichter zu merken. Die Beziehung zwischen ihnen ist wie folgt:
Der siebenschichtige und vierschichtige Lastausgleich, von dem wir oft sprechen, wird jedoch durch das OSI-Netzwerkmodell beschrieben. Schicht sieben entspricht der Anwendungsschicht und Schicht vier entspricht der Transportschicht.
Linux-Netzwerkprotokollstapel
Wir können unseren Körper mit den Daten in der Anwendungsschicht, die unterste Kleidungsschicht mit dem TCP-Header in der Transportschicht, den Mantel mit dem IP-Header in der Netzwerkschicht und den Hut und die Schuhe mit dem Frame-Header und Frame vergleichen der Netzwerkschnittstellenschicht.Wenn wir im Winter von zu Hause aus zum Spielen gehen wollen, müssen wir natürlich zuerst die Basiskleidung anziehen, dann eine warme Jacke anziehen und schließlich eine Mütze und Schuhe anziehen, bevor wir ausgehen wie wir das TCP-Protokoll zur Kommunikation verwenden. Wenn das Netzwerkpaket gesendet wird, werden die Daten der Anwendungsschicht gekapselt und Schicht für Schicht gemäß dem Netzwerkprotokollstapel verarbeitet.
Auf dem Bild unten können Sie das Kapselungsformat der Daten der Anwendungsebene auf jeder Ebene sehen.
Darunter:
•Die Netzwerkschicht fügt am Anfang des TCP-Pakets einen IP-Header hinzu;
•Die Netzwerkschnittstellenschicht fügt vor und nach dem IP-Paket einen Frame-Header und einen Frame-Trailer hinzu;
Diese Ergänzungen, Header und Tails haben alle ihre eigenen Funktionen und werden gemäß einem bestimmten Protokollformat ausgefüllt. Jede Schicht fügt ihren eigenen Protokollheader hinzu, was natürlich die Größe des Netzwerkpakets erhöht, aber physische Verbindungen können keine Datenpakete übertragen Jede Größe ist beliebig, sodass in Ethernet die maximale Übertragungseinheit (MTU) 1500 Byte beträgt, was auch die maximale IP-Paketgröße für eine einzelne Übertragung angibt.
Wenn das Netzwerkpaket die MTU-Größe überschreitet, wird es auf der Netzwerkebene fragmentiert, um sicherzustellen, dass das fragmentierte IP-Paket die MTU-Größe nicht überschreitet. Wenn die MTU kleiner ist, werden mehr Pakete benötigt und die Netzwerkdurchsatzkapazität erhöht höher ist hingegen die MTU: Je kleiner die benötigten Pakete, desto besser ist der Netzwerkdurchsatz.
Nachdem Sie das TCP/IP-Netzwerkmodell und das Kapselungsprinzip von Netzwerkpaketen kennengelernt haben, müssen Sie erraten haben, wie der Linux-Netzwerkprotokollstapel aussieht. Er ähnelt tatsächlich der vierschichtigen Struktur von TCP/IP:
Aus dem Netzwerkprotokollstapel im Bild oben können Sie Folgendes sehen:
•Die Anwendung muss über Systemaufrufe mit der Socket-Schicht interagieren
•Unterhalb der Socket-Schicht befinden sich die Transportschicht, die Netzwerkschicht und die Netzwerkschnittstellenschicht
•Die unterste Ebene ist der Netzwerkkartentreiber und das Hardware-Netzwerkkartengerät;
Linux-Prozess zum Empfangen von Netzwerkpaketen
Die Netzwerkkarte ist ein Teil der Hardware im Computer, der für den Empfang und das Senden von Netzwerkpaketen verantwortlich ist. Wenn die Netzwerkkarte ein Netzwerkpaket empfängt, legt sie das Netzwerkpaket über die DMA-Technologie in den Ringpuffer . Der Puffer im Netzwerkkartentreiber im Kernelspeicher.
Wie sollen wir dem Betriebssystem nach Erhalt des Netzwerkpakets mitteilen, dass das Netzwerkpaket angekommen ist?
Der einfachste Weg besteht darin, einen Interrupt auszulösen. Das heißt, jedes Mal, wenn die Netzwerkkarte ein Netzwerkpaket empfängt, löst sie einen Interrupt aus, um dies dem Betriebssystem mitzuteilen.
In einem Hochleistungsnetzwerkszenario ist jedoch die Anzahl der Netzwerkpakete sehr groß und es wird eine große Anzahl von Interrupts ausgelöst. Sie müssen wissen, dass die CPU stoppt, wenn sie einen Interrupt empfängt Die Verarbeitung dieser Netzwerkpakete erfolgt erst dann wieder, wenn die Verarbeitung abgeschlossen ist. Das häufige Auslösen von Interrupts führt dazu, dass die CPU endlose Verarbeitungsunterbrechungen hat, was dazu führen kann, dass andere Aufgaben nicht weitergeführt werden können Auswirkungen auf die Gesamteffizienz des Systems haben.
Um den durch häufige Interrupts verursachten Leistungsaufwand zu beseitigen, hat der Linux-Kernel in Version 2.6 den NAPI-Mechanismus eingeführt. Dabei handelt es sich um eine gemischte „Interrupt- und Polling“-Methode zum Empfangen von Netzwerkpaketen Um Daten abzurufen, verwenden Sie zunächst den Interrupt, um das Dienstprogramm für den Datenempfang zu aktivieren, und verwenden Sie dann die Abfragemethode, um die Daten abzufragen.
Wenn beispielsweise ein Netzwerkpaket eintrifft, initiiert die Netzwerkkarte einen Hardware-Interrupt und führt dann die Hardware-Interrupt-Verarbeitungsfunktion der Netzwerkkarte aus. Nachdem die Interrupt-Verarbeitungsfunktion verarbeitet wurde, muss der Interrupt „vorübergehend maskiert“ werden Aktivieren Sie dann den „Soft Interrupt“, um die Daten abzufragen und zu verarbeiten, bis keine weiteren Interrupts mehr vorhanden sind. Interrupts werden nur dann wieder aufgenommen, wenn neue Daten empfangen werden, sodass mehrere Netzwerkpakete mit einer Unterbrechung verarbeitet werden, wodurch der durch Netzwerkkartenunterbrechungen verursachte Leistungsaufwand verringert wird .
Wie geht Soft Interrupt mit Netzwerkpaketen um? Die Daten werden vom Ringpuffer in den Kernel-Struktur-Sk_buff-Puffer kopiert, sodass sie als Netzwerkpaket zur schichtweisen Verarbeitung an den Netzwerkprotokollstapel übergeben werden können.
Zuerst gelangt es in die Netzwerkschnittstellenschicht. Auf dieser Ebene wird die Legalität des Pakets überprüft. Wenn es illegal ist, wird der Typ des Netzwerkpakets der oberen Ebene verworfen B. IPv4 oder IPv6. Entfernen Sie dann den Frame-Header und den Frame-Trailer und übergeben Sie ihn dann an die Netzwerkschicht.
Nehmen Sie auf der Netzwerkschicht das IP-Paket heraus und bestimmen Sie die nächste Richtung des Netzwerkpakets, z. B. ob es zur Verarbeitung an die obere Schicht übergeben oder weitergeleitet werden soll. Wenn bestätigt wird, dass das Netzwerkpaket an den lokalen Computer gesendet werden soll, prüft es den IP-Header, um festzustellen, ob der Typ des Protokolls der oberen Schicht TCP oder UDP ist, entfernt dann den IP-Header und übergibt ihn an die Transportschicht.
Die Transportschicht entnimmt den TCP-Header oder UDP-Header, verwendet das Vier-Tupel „Quell-IP, Quell-Port, Ziel-IP, Ziel-Port“ als Kennung, um den entsprechenden Socket zu finden, und kopiert die Daten in den Empfangspuffer des Sockets.
Schließlich ruft das Programm der Anwendungsschicht die Socket-Schnittstelle auf, um die neu angekommenen Daten aus dem Socket-Empfangspuffer des Kernels in die Anwendungsschicht zu lesen.
An diesem Punkt ist der Empfangsprozess eines Netzwerkpakets beendet. Im linken Teil der Abbildung unten sehen Sie genau das Gegenteil, nämlich den Prozess des Sendens von Netzwerkpaketen .
Linux-Prozess zum Senden von Netzwerkpaketen
Wie in der Hälfte des Bildes oben gezeigt, ist der Prozess des Sendens von Netzwerkpaketen genau das Gegenteil des Prozesses des Empfangens.
Zuerst ruft die Anwendung die Schnittstelle von Socket auf, um Datenpakete zu senden. Da es sich um einen Systemaufruf handelt, wird sie vom Benutzerstatus in den Kernelstatus verschoben. Die Socket-Schicht kopiert die Daten der Anwendungsschicht Socket-Sendepuffer.
Als nächstes entnimmt der Netzwerkprotokollstapel das Datenpaket aus dem Socket-Sendepuffer und verarbeitet es Schicht für Schicht entsprechend dem TCP/IP-Protokollstapel von oben nach unten.
Wenn das TCP-Übertragungsprotokoll zum Senden von Daten verwendet wird, wird der TCP-Header zur Transportschicht hinzugefügt und dann an die Netzwerkschicht übergeben. Die Netzwerkschicht fügt dem Datenpaket ein IP-Paket hinzu und bestätigt dann den nächsten Hop IP durch Abfragen der Routing-Tabelle und Befolgen der MTU-Größe zur Fragmentierung.
Das fragmentierte Netzwerkpaket wird an die Netzwerkschnittstellenschicht gesendet, wo die MAC-Adresse des nächsten Hops über das ARP-Protokoll abgerufen wird. Anschließend werden der Frame-Header und der Frame-Trailer hinzugefügt und in die Paketsendewarteschlange gestellt.
Nachdem diese vorbereitet sind, wird ein Soft-Interrupt ausgelöst, um dem Netzwerkkartentreiber mitzuteilen, dass neue Netzwerkpakete gesendet werden müssen. Schließlich liest der Treiber die Netzwerkpakete aus der Paketsendewarteschlange über DMA und stellt sie in die Warteschlange der Hardware-Netzwerkkarte, und dann sendet die physische Netzwerkkarte es aus.
Zusammenfassung
Computer sind normalerweise durch Netzwerkgeräte wie Kommunikationsnetzwerkkarten, Switches, Router usw. miteinander verbunden. Aufgrund der Heterogenität der Netzwerkgeräte hat die Internationale Organisation für Normung ein siebenschichtiges OSI-Netzwerkmodell definiert, dieses Modell ist jedoch relativ komplex .Es wird nicht in tatsächlichen Anwendungen verwendet, sondern es wird ein vereinfachtes TCP/IP-Modell verwendet. Der Linux-Netzwerkprotokollstapel wird gemäß diesem Modell implementiert.
Das TCP/IP-Modell ist hauptsächlich in vier Schichten unterteilt: Anwendungsschicht, Transportschicht, Netzwerkschicht und Netzwerkschnittstellenschicht. Dies ist auch die Hauptkomponente des Linux-Netzwerkprotokollstapels.
Wenn die Anwendung ein Datenpaket über die Socket-Schnittstelle sendet, wird das Datenpaket vom Netzwerkprotokollstapel Schicht für Schicht von oben nach unten verarbeitet, bevor es an die Netzwerkkartenwarteschlange gesendet wird. Anschließend sendet die Netzwerkkarte das Netzwerkpaket aus.
Beim Empfang eines Netzwerkpakets muss dieses ebenfalls Schicht für Schicht von unten nach oben vom Netzwerkprotokollstapel verarbeitet werden, bevor es schließlich an die Anwendung gesendet wird.
Kurz gesagt, Linux hat sich als kostenloses und Open-Source-Betriebssystem im Technologiebereich etabliert und ist weit verbreitet. Egal, ob Sie ein erfahrener Programmierer oder ein gewöhnlicher Benutzer sind, die Wahl einer Linux-Distribution, die zu Ihnen passt, kann wirklich viele unerwartete Vorteile mit sich bringen. Ich glaube, dieser Artikel kann Ihnen helfen, die Linux-Distribution besser zu verstehen, und ich hoffe, dass Sie den Charme von Linux auf Ihrem eigenen Computer erleben können.
Das obige ist der detaillierte Inhalt vonUntergraben Sie Ihr Verständnis von Betriebssystemen – ein Überblick über Linux-Distributionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!