tcp et udp sont des protocoles de "couche de transport". UDP et TCP sont des protocoles importants dans la couche de transport informatique. TCP est orienté connexion et UDP est orienté sans connexion. TCP (Transmission Control Protocol) est un protocole de communication de couche transport fiable, orienté connexion et basé sur le flux d'octets, défini par la RFC 793 de l'IETF. UDP (User Datagram Protocol) permet aux applications d'envoyer des paquets IP encapsulés sans établir de connexion.
L'environnement d'exploitation de ce tutoriel : système Windows 7, ordinateur Dell G3.
L'architecture du réseau informatique fait référence au modèle de structure hiérarchique du réseau informatique, qui est un ensemble de protocoles à chaque couche et de ports entre les couches. La communication dans un réseau informatique doit s'appuyer sur des protocoles de communication réseau. Le modèle de référence OSI (Open System Interconnection) largement utilisé proposé par l'Organisation internationale de normalisation (ISO) en 1997 est habituellement appelé modèle de référence ISO/OSI.
Modèle de référence OSI à sept couches :
OSI divise logiquement un système de réseau en 7 sous-systèmes ordonnés fonctionnellement relativement indépendants, de sorte que l'architecture OSI se compose de 7 niveaux fonctionnellement relativement indépendants. La composition est comme indiqué dans la figure ci-dessous. De bas en haut, il s’agit de la couche physique, de la couche liaison de données, de la couche réseau, de la couche transport, de la couche session, de la couche présentation et de la couche application.
Modèle de référence TCP/IP
TCP/IP comporte 4 couches, qui sont la couche d'interface réseau, la couche Internet, la couche transport et la couche application. La comparaison entre la hiérarchie TCP/IP et la hiérarchie OSI est présentée dans la figure ci-dessous.
tcp et udp appartiennent aux protocoles "couche transport" de l'architecture des réseaux informatiques.
La couche transport d’Internet comporte deux protocoles principaux qui se complètent. Le mode sans connexion est UDP, qui ne fait pas grand-chose en particulier, sauf donner aux applications la possibilité d'envoyer des paquets et leur permettre d'architecturer leurs propres protocoles au niveau requis. Celui orienté connexion est TCP, qui fait presque tout.
La couche de transport est l'une des couches clés de l'ensemble du système de couche réseau. La couche réseau envoie uniquement des paquets à l'hôte de destination, mais la véritable communication n'est pas l'hôte mais le processus dans l'hôte. La couche transport fournit des services de communication à la couche application située au-dessus d'elle. Elle appartient à la couche orientée communication la plus élevée lorsque deux hôtes de la partie périphérique du réseau utilisent les fonctions de la partie centrale du réseau pour une communication de bout en bout. , seule la pile de protocoles de l'hôte Seule la couche de transport existe. La couche de transport assure la communication logique entre les processus. La couche de transport protège les détails de base de la couche réseau sous-jacente des utilisateurs de haut niveau, donnant l'impression que l'application a une fin. -logique de bout en bout entre les deux entités de la couche de transport. Canal de communication
Bien que les paquets IP puissent être envoyés à l'hôte de destination, ce paquet reste toujours dans la couche réseau de l'hôte et n'est pas transmis au processus d'application dans le processus d'application. hôte. Pendant le processus de communication entre deux ordinateurs, c'est en fait un processus sur cet hôte qui échange des données avec un processus sur un autre hôte. Du point de vue de la couche transport, le véritable point final de la communication n'est pas l'hôte mais le processus dans l'hôte. En d'autres termes, la communication de bout en bout est la communication entre les processus d'application.
Deux fonctions importantes de la couche transport :
La différence entre la couche réseau et la couche transport : La couche réseau assure la communication logique entre les hôtes, tandis que la couche transport fournit directement une communication de bout en bout pour les applications. Communication logique
UDP et TCP sont des protocoles importants dans la couche de transport informatique. TCP est orienté connexion et UDP est orienté sans connexion
Le transport. La couche dans la couche TCP/IP utilise un numéro de port 16. Le numéro de port n'a qu'une signification locale. Il sert à marquer l'interface inter-couches entre chaque processus de la couche application informatique et l'interaction dans la couche transport. Les numéros de port entre les différents numéros de réseau ne sont pas liés. Par conséquent, pour que les processus entre deux ordinateurs communiquent entre eux, ils doivent connaître l'adresse IP de chacun (afin de trouver l'ordinateur de l'autre partie) et le numéro de port (afin de trouver l'ordinateur de l'autre partie). pour trouver le processus dans l'ordinateur). La communication sur Internet utilise le client-serveur. De cette façon, lorsque le client initie une demande de communication, il doit d'abord connaître l'adresse IP et le numéro de port du serveur de l'autre partie.
Le protocole de datagramme utilisateur ajoute uniquement une fonction de multiplexage, de démultiplexage et de détection d'erreurs aux messages IP.
1. Caractéristiques d'UDP
2. Le champ d'en-tête du message UDP
ne contient que 8 octets, y compris le port source, le port de destination, la longueur et la somme de contrôle. Le pseudo-en-tête de 12 octets est temporairement ajouté dans le but de calculer la somme de contrôle.1. Fonctionnalités TCP
socket = adresse IP : numéro de port
3. Format d'en-tête de segment TCPSource port et port de destination : chacun occupe 2 octets, écrivez respectivement le port source et le port de destination
Numéro de série : 4 octets, TCP est orienté vers le flux d'octets, transmis en connexion TCP Chaque octet du flux d'octets est numéroté dans l'ordre, et le numéro de départ de l'ensemble du flux d'octets à transmettre doit être défini lorsque la transmission est établie.
Supposons que A soit le client et B soit le serveur.
Tout d’abord, B est dans l’état LISTEN (écoute), en attente de la demande de connexion du client.
A envoie un message de demande de connexion à B, SYN=1, ACK=0, et sélectionne un numéro de séquence initial x.
La description suivante ne traite pas des numéros de séquence et des numéros de confirmation, car les règles pour les numéros de séquence et les numéros de confirmation sont relativement simples. Et ACK n'est pas discuté car ACK est toujours 1 une fois la connexion établie.
La raison de l'agitation quatre fois
Après que le client ait envoyé le message de libération de connexion FIN, le serveur reçoit ce message et entre dans l'état CLOSE-WAIT. Cet état permet au serveur d'envoyer des données qui n'ont pas encore été transférées. Une fois le transfert terminé, le serveur enverra un message de libération de connexion FIN.
TIME_WAIT
Le client entre dans cet état après avoir reçu le message FIN du serveur. A ce moment, il n'entre pas directement dans l'état CLOSED, mais doit également attendre le temps 2MSL défini par la minuterie. Il y a deux raisons à cela :
TCP utilise une retransmission hors délai pour obtenir une transmission fiable. Si un segment de message qui a été envoyé ne reçoit pas de confirmation dans le délai d'expiration, alors le segment de message sera retransmis
1. Fenêtre coulissante TCP
La fenêtre fait partie du cache et est utilisée pour stocker temporairement le flux d'octets. L'expéditeur et le destinataire ont chacun une fenêtre. Le destinataire indique à l'expéditeur sa taille de fenêtre via le champ de fenêtre du segment TCP. L'expéditeur définit sa propre taille de fenêtre en fonction de cette valeur et d'autres informations.
Tous les octets de la fenêtre d'envoi peuvent être envoyés et tous les octets de la fenêtre de réception peuvent être reçus. Si l'octet sur le côté gauche de la fenêtre d'envoi a été envoyé et confirmé, faites glisser la fenêtre d'envoi d'une certaine distance vers la droite jusqu'à ce que le premier octet à gauche ne soit pas envoyé et confirmé, le glissement de la fenêtre de réception est similaire ; Lorsque les octets sur le côté gauche de la fenêtre ont été envoyés, confirmés et livrés à l'hôte, faites glisser la fenêtre de réception vers la droite.
La fenêtre de réception confirmera uniquement le dernier octet arrivant dans l'ordre dans la fenêtre. Par exemple, les octets reçus par la fenêtre de réception sont {31, 34, 35}, parmi lesquels {31} arrive dans l'ordre, et {34, 35} ne l'est pas, donc seul l'octet 31 est reconnu. Une fois que l'expéditeur a reçu un accusé de réception d'un octet, il sait que tous les octets précédant cet octet ont été reçus.
2. Contrôle de flux TCP
Le contrôle de flux sur TCP est mis en œuvre via des fenêtres coulissantes De manière générale, nous espérons que l'expéditeur envoie les données le plus rapidement possible, mais si l'expéditeur envoie des données trop rapidement, ce sera le cas. Par conséquent, le destinataire n'a pas le temps d'accepter, il est donc nécessaire de contrôler le flux de l'expéditeur. Le contrôle de flux sur TCP est principalement réalisé en définissant la taille de la fenêtre coulissante. Le champ de la fenêtre dans le message de confirmation envoyé par le destinataire peut être utilisé pour. contrôler la taille de la fenêtre de l'expéditeur, affectant ainsi le taux d'envoi de l'expéditeur. Définissez le champ de la fenêtre sur 0 et l'expéditeur ne peut pas envoyer de données.
3. Contrôle de la congestion TCP
Si le réseau est encombré, les paquets seront perdus et l'expéditeur continuera à retransmettre, ce qui entraînera une congestion accrue du réseau. Par conséquent, en cas de congestion, le tarif de l'expéditeur doit être contrôlé. Ceci est très similaire au contrôle de flux, mais le point de départ est différent. Le contrôle de flux vise à permettre au récepteur de recevoir à temps, tandis que le contrôle de congestion consiste à réduire le niveau de congestion de l'ensemble du réseau.
Conditions de contrôle de la congestion :
Le contrôle de la congestion est différent du contrôle de flux : Le contrôle de la congestion consiste à empêcher que trop de données ne soient injectées dans le réseau, afin que les routeurs ou les liens du réseau ne soient pas surchargés. Le contrôle de la congestion est un processus global. , conçu pour tous les hôtes, tous les routeurs et tous les éléments liés à la réduction des performances du réseau. Cependant, le contrôle de flux est souvent le contrôle du trafic point à point et constitue un problème de bout en bout
Congestion dans TCP Les principaux algorithmes de contrôle : démarrage lent, évitement de congestion, retransmission rapide, récupération rapide
L'expéditeur doit maintenir une variable d'état appelée fenêtre de congestion (cwnd). la fenêtre de l'expéditeur : la fenêtre de congestion n'est qu'une variable d'état, c'est la fenêtre de l'expéditeur qui détermine réellement la quantité de données que l'expéditeur peut envoyer.
Pour faciliter la discussion, les hypothèses suivantes sont faites :
Bien que la fenêtre de TCP soit basée sur les octets, ici l'unité de taille de la fenêtre est un ; segment de message.
1. Démarrage lent et évitement des encombrements
L'exécution initiale de l'envoi est un démarrage lent, soit cwnd = 1, l'expéditeur ne peut envoyer qu'un seul segment après avoir reçu la confirmation, cwnd est doublé, donc après cela ; , le nombre de segments de message que l'expéditeur peut envoyer est : 2, 4, 8...
Notez qu'au démarrage lent, cwnd est doublé à chaque tour, ce qui fera croître très rapidement cwnd, augmentant ainsi la vitesse d'envoi de l'expéditeur Si cela est trop rapide, le risque de congestion du réseau est plus élevé.
Définissez un seuil de démarrage lent ssthresh. Lorsque cwnd >= ssthresh, l'évitement de congestion est entré et seul cwnd est augmenté de 1 à chaque tour.
Si un délai d'attente se produit, définissez ssthresh = cwnd / 2, puis exécutez à nouveau un démarrage lent.
2. Retransmission rapide et récupération rapide
Du côté de la réception, il est nécessaire qu'à chaque fois qu'un segment de message est reçu, le dernier segment de message commandé reçu soit accusé de réception. Par exemple, M1 et M2 ont été reçus, et lorsque M4 est reçu, un accusé de réception pour M2 doit être envoyé.
Du côté de l'expéditeur, si trois accusés de réception en double sont reçus, on peut savoir que le segment suivant est perdu. A ce moment, une retransmission rapide est effectuée et le segment suivant est retransmis immédiatement. Par exemple, si trois M2 sont reçus, M3 est perdu et M3 est retransmis immédiatement.
Dans ce cas, il s'agit simplement de la perte de segments individuels, et non de la congestion du réseau. Par conséquent, une récupération rapide est effectuée, en définissant ssthresh = cwnd / 2, cwnd = ssthresh Notez que l'évitement de congestion est directement entré à ce moment.
La vitesse de démarrage lent et de récupération rapide fait référence à la valeur de réglage de cwnd, et non au taux de croissance de cwnd. Le cwnd de démarrage lent est défini sur 1 et le cwnd de récupération rapide est défini sur ssthresh.
Référence : Computer Network Fifth Edition édité par Xie Xiren
(Partage de vidéos d'apprentissage : Introduction au front-end Web)
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!