Maison  >  Article  >  Tutoriel système  >  Subvertissez votre compréhension des systèmes d'exploitation - un aperçu des distributions Linux

Subvertissez votre compréhension des systèmes d'exploitation - un aperçu des distributions Linux

王林
王林avant
2024-02-13 21:15:02529parcourir

Que vous soyez un programmeur senior ou un débutant, que vous soyez un utilisateur Windows ou macOS, si vous avez une certaine compréhension des systèmes d'exploitation informatiques, alors le nom Linux vous sera certainement familier. Cependant, vous ne pouvez qu'effleurer la surface du système d'exploitation Linux. En fait, il existe de nombreuses distributions Linux, chacune avec des fonctionnalités et des scénarios d'application uniques. Ci-dessous, nous vous présenterons plusieurs distributions Linux courantes et vous aiderons à renverser la compréhension traditionnelle des systèmes d'exploitation.

Afin de permettre à plusieurs appareils de communiquer entre eux via le réseau et de résoudre les problèmes de compatibilité de divers appareils dans l'interconnexion réseau, l'Organisation internationale de normalisation a formulé le modèle de référence d'interconnexion de système ouvert, également connu sous le nom de référence d'interconnexion de système ouvert. Modèle. Il s'agit du modèle de réseau OSI. Ce modèle comporte principalement 7 couches, à savoir la couche application, la couche présentation, la couche session, la couche transport, la couche liaison de données et la couche physique.

Subvertissez votre compréhension des systèmes dexploitation - un aperçu des distributions Linux
Chaque couche est responsable de différentes fonctions, comme suit :

•Couche application, chargée de fournir une interface unifiée aux applications

 ;

•Couche de présentation, chargée de convertir les données dans un format compatible avec un autre système ;

•Couche de session, responsable de l'établissement, de la gestion et de la fin des sessions de communication entre les entités de la couche de présentation

 ;

•Couche de transport, responsable de la transmission des données de bout en bout ;

•Couche réseau, responsable du routage, du transfert et de la fragmentation des données ;

•Couche liaison de données, responsable du cadrage des données et de la détection des erreurs, ainsi que de l'adressage MAC

 ;

•Couche physique, responsable de la transmission des trames de données dans le réseau physique ;

Le modèle OSI étant trop complexe, ce qui est proposé n'est qu'une superposition conceptuelle et théorique, et aucun plan de mise en œuvre spécifique n'est fourni. En fait, le modèle à quatre couches, plus courant et plus pratique, est le modèle de réseau TCP/IP. Le système Linux implémente la pile de protocoles réseau selon ce modèle de réseau.

Le modèle de réseau TCP/IP comporte 4 couches, à savoir la couche application, la couche transport, la couche réseau et la couche interface réseau. Les fonctions de chaque couche sont les suivantes :

•Couche d'application, chargée de fournir un ensemble d'applications aux utilisateurs, telles que HTTP, DNS, FTP, etc. ;

•Couche de transport, responsable de la communication de bout en bout, telle que TCP, UDP, etc. ;

•Couche réseau, responsable de l'encapsulation, de la fragmentation, du routage et du transfert des paquets réseau, tels que IP, ICMP, etc. ;

•Couche d'interface réseau, responsable de la transmission des paquets réseau dans le réseau physique, tels que le tramage des paquets réseau, l'adressage MAC, la détection des erreurs et la transmission des trames réseau via la carte réseau, etc. ;

Comparé au modèle de réseau OSI, le modèle de réseau TCP/IP est beaucoup plus simple et plus facile à retenir. La relation entre eux est la suivante :

Cependant, l'équilibrage de charge à sept et quatre couches dont nous parlons souvent est décrit par le modèle de réseau OSI. La couche sept correspond à la couche application et la couche quatre correspond à la couche transport.

Subvertissez votre compréhension des systèmes dexploitation - un aperçu des distributions LinuxPile de protocole réseau Linux

Nous pouvons comparer notre corps aux données de la couche application, la couche inférieure des vêtements à l'en-tête TCP dans la couche de transport, le manteau à l'en-tête IP dans la couche réseau et le chapeau et les chaussures à l'en-tête et au cadre du cadre. de la couche d'interface réseau respectivement. En hiver, lorsque nous voulons sortir jouer depuis la maison, nous devons naturellement d'abord mettre des vêtements de base, puis mettre une veste chaude, et enfin mettre un chapeau et des chaussures avant de sortir. comme la façon dont nous utilisons le protocole TCP pour communiquer. Lorsque le paquet réseau est envoyé, les données de la couche application seront encapsulées et traitées couche par couche selon la pile de protocole réseau.

Vous pouvez voir sur l'image ci-dessous le format d'encapsulation des données de la couche d'application à chaque couche.

Parmi eux :

•La couche de transport ajoute un en-tête TCP devant les données de l'application ;Subvertissez votre compréhension des systèmes dexploitation - un aperçu des distributions Linux
•La couche réseau ajoute un en-tête IP au début du paquet TCP

 ;

•La couche d'interface réseau ajoute un en-tête de trame et une fin de trame avant et après le paquet IP ;

Ces ajouts, en-têtes et queues ont tous leurs propres fonctions, et sont remplis selon un format de protocole spécifique. Chaque couche ajoute son propre en-tête de protocole, ce qui augmente naturellement la taille du paquet réseau, mais les liens physiques ne peuvent pas transmettre de paquets de données. n'importe quelle taille, donc dans Ethernet, l'unité de transmission maximale (MTU) est de 1 500 octets, ce qui spécifie également la taille maximale du paquet IP pour une seule transmission.

Lorsque le paquet réseau dépasse la taille MTU, il sera fragmenté au niveau de la couche réseau pour garantir que le paquet IP fragmenté ne dépassera pas la taille MTU. Si la MTU est plus petite, davantage de paquets sont nécessaires et la capacité de débit du réseau sera. Au contraire, si la MTU est grande, plus les paquets requis sont petits, meilleur sera le débit du réseau.

Après avoir connu le modèle de réseau TCP/IP et le principe d'encapsulation des paquets réseau, vous devez avoir deviné à quoi ressemble la pile de protocole réseau Linux. Elle est en fait similaire à la structure à quatre couches de TCP/IP :

.

Subvertissez votre compréhension des systèmes dexploitation - un aperçu des distributions Linux
À partir de la pile de protocoles réseau dans l'image ci-dessus, vous pouvez voir :

•L'application doit interagir avec la couche Socket via des appels système ;

•Sous la couche Socket se trouvent la couche de transport, la couche réseau et la couche d'interface réseau ;

•La couche inférieure est le pilote de la carte réseau et le périphérique de la carte réseau ;

Processus Linux de réception de paquets réseau

La carte réseau est un élément matériel de l'ordinateur responsable de la réception et de l'envoi des paquets réseau. Lorsque la carte réseau reçoit un paquet réseau, elle place le paquet réseau dans le Ring Buffer via la technologie DMA. . Le tampon Dans le pilote de la carte réseau dans la mémoire du noyau.

Après avoir reçu le paquet réseau, comment devons-nous informer le système d'exploitation que le paquet réseau est arrivé ?

Le moyen le plus simple est de déclencher une interruption, c'est-à-dire que chaque fois que la carte réseau reçoit un paquet réseau, elle déclenche une interruption pour en informer le système d'exploitation.

Cependant, il y a un problème. Dans un scénario de réseau hautes performances, le nombre de paquets réseau sera très important et un grand nombre d'interruptions seront déclenchées. Vous devez savoir que lorsque le CPU reçoit une interruption, il s'arrêtera. ce qu'il fait et c'est parti. Le traitement de ces paquets réseau ne reviendra à autre chose qu'une fois le traitement terminé. Le déclenchement d'interruptions si fréquemment entraînera des interruptions de traitement sans fin du processeur, ce qui peut empêcher d'autres tâches d'avancer, donc. affectant l’efficacité globale du système.

Ainsi, afin de résoudre la surcharge de performances causée par les interruptions fréquentes, le noyau Linux a introduit le mécanisme NAPI dans la version 2.6. Il s'agit d'une méthode mixte « d'interruption et d'interrogation » pour recevoir des paquets réseau. Son concept principal est de lire sans interruption. obtenez des données, utilisez d'abord l'interruption pour réveiller le programme de service pour la réception des données, puis utilisez la méthode d'interrogation pour interroger les données.

Par exemple, lorsqu'un paquet réseau arrive, la carte réseau lance une interruption matérielle, puis la fonction de traitement de l'interruption matérielle de la carte réseau est exécutée. Une fois la fonction de traitement de l'interruption traitée, il est nécessaire de « masquer temporairement l'interruption », et. puis réveillez "l'interruption logicielle" pour interroger et traiter les données jusqu'à ce qu'il n'y en ait plus. Les interruptions ne sont restaurées que lorsque de nouvelles données sont reçues, de sorte que plusieurs paquets réseau soient traités avec une seule interruption, réduisant ainsi la surcharge de performances causée par les interruptions de la carte réseau. .

Alors, comment l'interruption logicielle gère-t-elle les paquets réseau ? Il copiera les données du Ring Buffer vers le tampon struct sk_buff du noyau, afin qu'elles puissent être transmises à la pile de protocoles réseau en tant que paquet réseau pour un traitement couche par couche.

Tout d'abord, il entrera dans la couche d'interface réseau. Au niveau de cette couche, la légalité du paquet sera vérifiée. S'il est illégal, il sera rejeté. S'il est légal, le type de protocole de couche supérieure du paquet réseau. sera trouvé, comme IPv4 ou IPv6. Ensuite, supprimez l'en-tête de trame et la fin de trame, puis transférez-les à la couche réseau.

Au niveau de la couche réseau, retirez le paquet IP et déterminez la direction suivante du paquet réseau, par exemple s'il faut le transmettre à la couche supérieure pour traitement ou le transmettre. Lorsqu'il est confirmé que le paquet réseau doit être envoyé à la machine locale, il examinera l'en-tête IP pour voir si le type de protocole de couche supérieure est TCP ou UDP, puis supprimera l'en-tête IP, puis le remettra. à la couche de transport.

La couche de transport supprime l'en-tête TCP ou l'en-tête UDP, utilise le quatre tuple « IP source, port source, IP de destination, port de destination » comme identifiant pour trouver le Socket correspondant et copie les données dans le tampon de réception du Socket.

Enfin, le programme de la couche application appelle l'interface Socket pour lire les données nouvellement arrivées du tampon de réception Socket du noyau vers la couche application.

À ce stade, le processus de réception d'un paquet réseau est terminé. Vous pouvez également voir le processus de réception des paquets réseau dans la partie gauche de la figure ci-dessous. La partie droite est exactement le contraire, qui est le processus d'envoi des paquets réseau. .

Subvertissez votre compréhension des systèmes dexploitation - un aperçu des distributions LinuxProcessus Linux d'envoi de paquets réseau

Comme le montre la moitié de l'image ci-dessus, le processus d'envoi de paquets réseau est exactement le contraire du processus de réception.

Tout d'abord, l'application appellera l'interface de Socket pour envoyer des paquets de données. Puisqu'il s'agit d'un appel système, il passera de l'état utilisateur à la couche Socket dans l'état du noyau. Tampon d’envoi de socket.

Ensuite, la pile de protocoles réseau extrait le paquet de données du tampon d'envoi Socket et le traite couche par couche de haut en bas selon la pile de protocoles TCP/IP.

Si le protocole de transmission TCP est utilisé pour envoyer des données, l'en-tête TCP sera ajouté à la couche de transport puis transmis à la couche réseau. La couche réseau ajoutera un paquet IP au paquet de données, puis confirmera le saut suivant. IP en interrogeant la table de routage et suivez la taille MTU pour la fragmentation.

Le paquet réseau fragmenté sera envoyé à la couche d'interface réseau, où l'adresse MAC du prochain saut sera obtenue via le protocole ARP, puis l'en-tête de trame et la fin de trame seront ajoutés et placés dans la file d'attente d'envoi de paquets.

Une fois ceux-ci préparés, une interruption logicielle sera déclenchée pour indiquer au pilote de la carte réseau qu'il y a de nouveaux paquets réseau qui doivent être envoyés. Enfin, le pilote lit les paquets réseau de la file d'attente d'envoi de paquets via DMA et les place dans le. file d'attente de la carte réseau matérielle, puis la carte réseau physique l'envoie.

Résumé

Les ordinateurs sont généralement connectés entre eux par des périphériques réseau tels que des cartes réseau de communication, des commutateurs, des routeurs, etc. En raison de l'hétérogénéité des périphériques réseau, l'Organisation internationale de normalisation a défini un modèle de réseau OSI à sept couches, mais ce modèle est relativement complexe. , il n'est pas utilisé dans les applications réelles, mais un modèle TCP/IP plus simplifié est utilisé. La pile de protocole réseau Linux est implémentée selon ce modèle.

Le modèle TCP/IP est principalement divisé en quatre couches : couche application, couche transport, couche réseau et couche interface réseau. Chaque couche est responsable de différentes responsabilités. C'est également le composant principal de la pile de protocole réseau Linux.

Lorsque l'application envoie un paquet de données via l'interface Socket, le paquet de données sera traité couche par couche de haut en bas par la pile de protocole réseau avant d'être envoyé à la file d'attente de la carte réseau, puis la carte réseau enverra le paquet réseau. dehors.

Lors de la réception d'un paquet réseau, il doit également être traité couche par couche de bas en haut par la pile de protocoles réseau avant d'être finalement envoyé à l'application.

En bref, Linux, en tant que système d'exploitation libre et open source, a émergé dans le domaine technologique et est largement utilisé. Que vous soyez un programmeur expérimenté ou un utilisateur ordinaire, choisir une distribution Linux qui vous convient peut réellement apporter de nombreux avantages inattendus. Je pense que cet article peut vous aider à mieux comprendre la distribution Linux et j'espère que vous pourrez découvrir le charme de Linux sur votre propre ordinateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer