Lorsqu'un hôte envoie des données à un autre hôte, les données doivent être transmises via plusieurs couches de routage. Le processus de transfert d'IP au niveau de la couche de routage est relativement compliqué. Comment traiter le datagramme envoyé par l'hôte de destination ?
Nous devons d'abord comprendre le format du datagramme :
La transmission et le contrôle IP sont tous contrôlés par l'en-tête de le datagramme IP Le ministère a décidé
La valeur de la longueur de l'en-tête à 4 chiffres est basée sur 4 octets, et la valeur minimale est de 5,C'est-à-dire que le la longueur minimale de l'en-tête est de 4x5 = 20 octets,
est l'en-tête IP sans aucune option. La valeur maximale représentée par le tableau de 4 bits est de 15, ce qui signifie que la longueur maximale de l'en-tête est de 60 octets. 🎜#
8 bits Le champ TOS comporte 3 bits servant à préciser la priorité du datagramme IP (actuellement obsolète), et 4 bits indiquant en option incluant le délai minimum, le débit maximum, le maximum Fiabilité et coût minimum, et le total des bits est toujours 0. La longueur totale de 16 bits correspond au nombre d'octets de l'ensemble du datagramme (y compris l'en-tête IP et la charge utile de la couche IP). Chaque fois qu'un datagramme IP est transmis, l'identifiant de 16 bits est augmenté de 1, peut être utilisé pour fragmenter et réassembler le datagramme.
Un indicateur 3 bits et un décalage de tranche 13 bits sont utilisés pour le découpage. TTL (Time to live) est utilisé comme ceci:L'hôte source définit un temps de survie pour le paquet de données, tel que 64, à chaque fois qu'il passe par un routeur # 🎜🎜# Diminuez la valeur de 1. Si elle est réduite à 0, cela signifie que la route a été trop longue et que le réseau de l'hôte de destination est introuvable, le paquet sera donc rejeté. 🎜#
L'unité de ce temps de survie n'est pas la seconde, mais le saut. Le champ protocole indique si le protocole de la couche supérieure est TCP, UDP, ICMP ou IGMP. Ensuite, il y a la somme de contrôle, qui vérifie uniquement l'en-tête IP. La vérification des données est gérée par des protocoles de niveau supérieur. La longueur de l'adresse IP d'IPv4 est de 32 bits. Dans le datagramme IP, la longueur totale est un champ de 16 bits et la longueur maximale d'un datagramme est de 2 ^ 16-1. Bien que le datagramme le plus long possible puisse améliorer l'efficacité de la transmission, il en existe peu. Plus de 1500 octets donc ici tant qu'il dépasse 1500 octets, on considère que ce datagramme doit être fragmenté. Une fois le datagramme IP fragmenté, chaque fragment forme un paquet avec un en-tête IP et est acheminé indépendamment. Une fois arrivé à l'hôte de destination, la couche IP de l'hôte de destination traitera tous les fragments reçus avant de les transmettre à la couche de transport. sont réassemblés dans un datagramme. 1. Fragmentation IP 1. Principe de fragmentation IP : Le processus de fragmentation et de réassemblage est transparent pour la couche de transport. qu'une fois le datagramme IP fragmenté, il ne peut être réassemblé que lorsqu'il atteint la station suivante, et il est complété par la couche IP de destination. Le datagramme fragmenté peut être à nouveau fragmenté selon les besoins. Les fragments IP et les paquets complets ont presque le même en-tête IP. Le champ ID est cohérent pour les fragments américains et britanniques, de sorte que le même fragment de paquet de données IP peut être identifié lors de l'assemblage. Dans l'en-tête IP, le numéro d'identification de 16 bits enregistre de manière unique l'ID d'un paquet IP, et les fragments IP avec le même ID seront réassemblés tandis que le décalage de fragment de 13 bits enregistre la position d'un fragment IP par rapport à l'ensemble du paquet ; . Le drapeau 3 bits au milieu de ces deux tableaux indique s'il y a de nouveaux fragments derrière ce fragment. Le récepteur peut réassembler les données IP à l'aide des informations fournies dans ces trois champs, qui sont toutes les informations qui composent la fragmentation IP. (1) Le rôle du champ drapeau 0 DF MFLe champ drapeau a trois chiffres au total, le bit le plus élevé est 0 , et la valeur doit être copiée dans La valeur Ne pas fragmenter (DF) doit être copiée dans tous les groupes. DF=1 signifie que l'hôte récepteur ne peut pas fragmenter le paquet. Si le paquet ne peut pas être fragmenté mais que sa longueur dépasse la MTU, le paquet peut uniquement être rejeté et un message d'erreur ICMP doit être utilisé pour avertir l'hôte source. DF=0, signifie qu'il peut être fragmenté Fragmentation (MF) indique si le fragment est le dernier fragment, MF=1 signifie que le fragment accepté n'est pas le dernier fragment, MF=0 signifie que le fragment accepté n'est pas le dernier fragment. le fragment est accepté L'heure du fragment est le dernier fragment L'envoi délibéré de certains fragments IP au lieu de tous amènera l'hôte cible à toujours attendre que les fragments consomment et occupent les ressources système. 2. Principe du MTU (Maximum Transmission Unit) Lorsque deux CP distants sont interconnectés, leurs données doivent transiter par de nombreux routeurs et divers réseaux. Le support peut atteindre l'extrémité opposée. Le MTU des différents médias du réseau est différent. C'est comme une longue section de conduite d'eau, composée de conduites d'eau de différentes épaisseurs (MTU différentes). La quantité maximale d'eau passant à travers cette section de conduite d'eau est déterminée par. la conduite d'eau la plus fine au milieu.Pour les protocoles de la couche supérieure de la couche réseau (ici, prenons le cluster de protocoles TCP/IP comme exemple), ils ne se soucient pas de l'épaisseur des conduites d'eau car ils pensent que c'est une question de réseau. Au niveau de la couche réseau, le protocole IP détecte la taille de chaque paquet de données transmis depuis le protocole de couche supérieure et détermine s'il doit être fragmenté en fonction de la taille MTU de la machine. Le plus gros inconvénient du partitionnement est qu’il réduit les performances de transmission et nécessite que les tâches qui peuvent être effectuées une seule fois soient divisées en plusieurs processus. Par conséquent, les couches supérieures du réseau (implémentation de la couche transport) y prêtent souvent attention, car certaines couches supérieures peuvent exiger que les paquets ne puissent pas être fragmentés pour certaines raisons, et l'index ajoutera une étiquette à l'en-tête de l'IP. datagramme :DF Lorsqu'un paquet de données IP est transmis sur un grand segment de réseau, si la MTU est plus petite que le paquet de données, le périphérique de transfert abandonnera le paquet de données en fonction de la situation. Un message d'erreur est ensuite renvoyé à l'expéditeur, ce qui entraîne souvent des problèmes de communication. Heureusement, la plupart des MTU des liaisons réseau sont de 1 500 ou plus. Pour UDP, le protocole lui-même est un protocole sans connexion. Il ne se soucie pas de l'ordre d'arrivée des paquets de données. est correct, donc généralement UDP n'a pas beaucoup d'exigences en matière de fragmentation. C'est différent pour TCP. Ce protocole est un protocole orienté connexion. Pour TCP, il se soucie beaucoup de l'ordre d'arrivée des paquets de données. erreurs pendant le processus de transmission, donc certaines applications TCP ont des exigences de fragmentation --- ne peuvent pas être fragmentées
3. Principe MSS (longueur maximale du segment)
MSS est la quantité de données qu'un paquet TCP peut avoir à chaque fois. segment à transmettre. Afin d'obtenir les meilleures performances de transmission, le protocole TCP négocie généralement la valeur MSS des deux parties lors de l'établissement d'une connexion. Cette valeur est remplacée par MTU lorsque le protocole TCP est implémenté (moins la taille de l'en-tête de l'IP). paquet de données). 20bits et l'en-tête du segment de données TCP 20BITES), la taille MSS est donc souvent de 1460. Les deux parties détermineront la valeur MSS maximale de cette connexion en fonction de la valeur MSS minimale fournie
étapes de fragmentation IP
. Un datagramme non fragmenté Le champ d'informations de fragmentation est entièrement à 0, c'est-à-dire que plusieurs indicateurs de fragmentation sont à 0 et le décalage est à 0. Pour fragmenter un datagramme, vous devez suivre les étapes suivantes
(1) Vérifiez l'indicateur DF pour voir si la fragmentation est autorisée. Si ce bit est défini, le datagramme sera rejeté et une erreur ICMP sera renvoyée à la source
(2) En fonction de la valeur MTU, le champ de données est divisé en deux ou paires de parties Sauf. pour la dernière partie des données, toute nouvelle La longueur de l'option de données doit être un multiple de 8 octets
(3) Chaque donnée est mise dans un datagramme IP, et les en-têtes de ces datagrammes modifient légèrement les en-têtes d'origine
(4) Sauf pour le dernier datagramme À l'exception de la fragmentation, tous les fragments ont plusieurs indicateurs de fragmentation définis. (5) Le champ de décalage de fragment dans chaque fragment est défini sur la position occupée par cette partie de données dans le datagramme d'origine. Cette position par rapport au début de l'original. datagramme non fragmenté.
(6) Si des options sont incluses dans le datagramme d'origine, l'octet de poids fort de l'octet de type d'option détermine si ces informations sont copiées dans tous les datagrammes fragmentés, ou uniquement dans le premier datagramme.(7) Définissez le champ d'en-tête et le champ de longueur totale du nouveau datagramme.
(8) Recalculez le champ de somme de contrôle dans l'en-tête du message. À l'heure actuelle, ces datagrammes fragmentés sont transmis comme un datagramme IP complet. IP traite chaque fragment de datagramme indépendamment. Les fragments de datagramme peuvent atteindre leur destination par différentes routes s'ils respectent ces réglementations, ils peuvent être davantage fragmentés.Sur l'hôte de destination, les données sont réassemblées dans le datagramme d'origine, et le champ d'identification défini par l'hôte expéditeur ainsi que l'adresse IP Yuan et l'adresse IP de destination dans le datagramme sont utilisés ensemble, le processus de fragmentation ne modifie pas ce champ
3. Réassemblage
Pour reconstruire les fragments de ces datagrammes, l'hôte récepteur alloue un tampon de stockage à l'arrivée du premier fragment. Cet hôte démarrera également une minuterie. Lorsque les fragments suivants du datagramme arrivent, les données sont copiées dans la mémoire tampon à l'emplacement spécifié par le décalage du fragment, et lorsque tous les fragments sont arrivés, le datagramme original complet et non fragmenté est restauré.
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!