[Réseau informatique] détaillée du protocole TCP

Détaillé protocole TCP

Introduction:
La première partie se concentre sur le protocole udp blog, Revoyons udp les procédures de programmation et précautions
programmation:
serveur:
1. Créez une prise
2. La prise est liée à l' information d'adresse
3. Réception de données demande
4. Traitement après que les données de transmission
5. Fermer la prise
client
1. Créer une prise
2. la prise pour les liaisons d'adresse
3 envoie une demande de données
4. Lorsque le processus serveur, en réponse à la demande
5. Fermer la prise
AVIS questions]
1. programmation udp, vous devez d' abord démarrer le serveur, parce que les caractéristiques de l' utilisateur Datagram Protocol est un peu fiable sans connexion, si vous démarrez le client peut entraîner une perte de données lors de la transmission.
2. Le client est recommandé de ne pas prendre l'initiative d'adresse obligatoire, mais l'envoi de données pour sélectionner les informations d'adresse appropriée par le système d'exploitation pour lier ( dans la mesure du possible pour éviter les conflits de port probabilité)
le serveur doit prendre l'initiative de se lier, en raison de la nécessité de veiller à ce que l' adresse ne changez jamais le client se trouve

programmation tcp

Caractéristiques de transmission: orienté connexion , transmission fiable, orienté flux d' octets
ce blog est principalement décrit en détail le contenu orienté connexion
ici pour utiliser la connexion orientée classique et importante et souvent demandé poignée de main à trois voies, vague quatre processus, entrer dans les détails plus tard.

Caractéristiques de transmission du protocole TCP (détaillé)

protocole de couche de transport TCP est une surface de connexion pour fournir une haute fiabilité octet de service continu, principalement utilisé avec un grand nombre de paquets à échanger carter de transmission.
Afin de maintenir la fiabilité de la transmission, TCP a augmenté le nombre des frais généraux, tels que: la confirmation, le contrôle de flux, la minuterie et la gestion des connexions.

Mettre fin à la communication : TCP fournit une application d'interface orienté connexion. Mettre fin à la connexion TCP lorsque, à une application client, le serveur à l'autre extrémité.
Établir une connexion fiable : les exigences d'application client TCP avant d'échanger des données avec le serveur, connectez le serveur pour assurer l' établissement de connexion fiable, la connexion est établie pour tester la connectivité réseau. En cas de panne, ce qui entrave le paquet arrive au système distant ou le serveur n'accepte pas les connexions, la tentative de connexion échoue, sera avisé le client.
Livraison fiable: Une fois la connexion établie, l'ordre de livraison lorsque le TCP garantit données seront envoyées, pas perdu, il n'y a pas de répétition, sinon à cause de l'incapacité d'établir une livraison fiable, l'expéditeur est avisé.
Avoir une transmission de commande de débit: débit de transmission de données de contrôle de l' efficacité TCP du débit de réception de données de transmission afin d' éviter rapidement avec le bénéficiaire, et peut donc être utilisé pour les données TCP à partir d' un ordinateur à une transmission lente ordinateur rapide.
transmission Duplex : A tout moment, une seule connexion TCP permet la transmission bidirectionnelle simultanée de données, mais n'affectent pas, le client peut envoyer une requête au serveur, et le serveur peut être connecté via le même transpondeur.
Mode de flux : récepteur TCP envoie pas de limites de messages des directions de transmission de flux d'octets.

tête TCP
données TCP est encapsulé dans un paquet IP! ! ! Comme indiqué ci - dessous:
Insérer ici l'image Description
La figure suivante montre le format de données de l' en- tête TCP, si le champ d'option ne se souvient pas, ils sont généralement 20 octets.
Insérer ici l'image Description
sens du champ d' en- tête TCP comme (contrôler sensiblement)
1. Les sources et les numéros de port de destination : chaque segment TCP contient un numéro de port source et numéro de port de destination pour le processus de demande pour trouver l'extrémité d'émission et de réception.
2. Le nombre et le numéro de reconnaissance: à partir du numéro de séquence TCP indique que les données de flux d' émission octets côté réception envoie à la TCP, mais indique que le premier octet de données dans les champs du message. Si considéré comme un flux d'octets entre les deux flux à sens unique de l'application, le flux d'octets TCP pour chaque numéro de séquence compté. Nombre est un nombre 32 bits non signé. Le numéro d'accusé de réception est envoyé pour confirmer la fin du prochain numéro de séquence attendu pour recevoir. Par conséquent, le numéro d'accusé de réception doit être le dernier octet de données a été reçu avec succès le numéro de série plus un. Seul le drapeau ACK est 1, le champ du numéro accusé de réception est valide.
3. La longueur en- tête: tête de longueur d' en- tête donne le nombre de mots de 32 bits. Cette option nécessite seulement en raison de la longueur du champ est variable. Ce champ a représenté 4, donc un maximum d' en- tête TCP de 60 octets. S'il n'y a pas de champ d'option, la durée normale de 20 octets.
4. Drapeau : Il y a six drapeaux dans l' en- tête TCP. Plus d'entre eux peuvent être mis simultanément à 1, ce qui signifie sont comme suit:
Insérer ici l'image Description
5. Taille de la fenêtre: le contrôle de flux TCP est fourni par chaque extrémité de la connexion par la taille de la fenêtre de l'instruction. Taille de la fenêtre pour le nombre spécifié d'octets à partir du numéro de séquence d'accusé de réception valeur de champ, cette valeur est correcte souhaitée recevoir le numéro de l' octet reçu. Taille de la fenêtre est un champ de 16 bits, et donc la taille de fenêtre maximale est de 65535 octets.
6. Inspection et: inspection et couvrant l'ensemble du segment TCP contenant en- tête TCP, pseudo-tête TCP et les données TCP. Ce champ est obligatoire, il doit être calculée et stockée par l'expéditeur, vérification à la fin de réception.
7. Le pointeur d' urgence: que lorsque le drapeau est URG, pointeur urgent est valide. Urgent pointeur est une valeur de décalage positif est ajouté à la zone de numéro de séquence indique le dernier octet du nombre de données d' urgence. C'est une façon à la fin de transmission de données d'urgence d'émission à l'autre extrémité.
8. Option: en- tête TCP section Options est TCP pour s'adapter à l'environnement de réseau complexe et une meilleure section des options de conception de la couche d'application de service jusqu'à 40 octets. Le plus commun champ d'option est la taille de segment maximale (MaximumSegment, MSS). (Ce segment de drapeau SYN est réglé pour établir une connexion) connecté à chaque partie est généralement rapporté dans le premier segment de communication spécifié dans cette option. Il indique la fin du segment présente la longueur maximale acceptable.
9. Données: section de segment de données TCP est en option. Par exemple, lorsque la connexion est établie et que la connexion est interrompue, les deux parties ont échangé uniquement tête de segment TCP. Même si une partie n'a pas de données à envoyer, mais aussi utiliser les données sans données d' en- tête à la réception de confirmation de. Dans de nombreux cas, le processus de temporisation également transmis sans segment de données.

protocole de communication client et le serveur tcp

processus de communication globale

Processus serveur:
prise d'appel, créez un descripteur de fichier,
appel bind, le descripteur de fichier en cours et le port IP (adresse IP et le port) sont liés, si ce port est déjà occupé par un autre processus, il va se lier échec;
appel écouter, cette déclaration du descripteur de fichier descripteur de fichier en cours en tant que serveur, faire un bon travail se préparer à l'accepter plus tard,
appel accecpt, et le blocage , et d' autres clients de se connecter via,
envoyer / envoyer recv appel et recevoir des données d'
appels fermer fermer la prise
client processus:
prise appel, créez un descripteur de fichier,
appel [bind], l' empathie ne prend pas l'initiative de liens d'adresse, attribué par le système d'exploitation des
appels se connecter, la connexion est établie avec succès
envoyer / envoyer recv et recevoir des appels de données des
appels socket fermer fermer

communication flux

Le client et le serveur pour établir un processus de connexion, « poignée de main à trois voies » (obligatoire accent)
| signaux | effet |
URG pointeur urgent est valide
numéro d'acquittement ACK est valide
PSH invite immédiatement l'application du récepteur lit les données de la mémoire tampon TCP pour aller
RST autre demande de ré-établir la connexion, nous portons identificateur RST appelé un paquet de réinitialisation des
demandes SYN pour établir une connexion, nous réalisons identificateur SYN appelé segment de synchronisation
fIN notifier à l'autre, l'extrémité devant être fermée, que nous appelons l' identité est en train fIN segment d'extrémité

Version détaillée:
1. Le client envoie un segment SYN spécifié dans le client souhaite se connecter au numéro de port du serveur et le numéro de séquence initial (l'SequenceNumber Initial, ISN), SYN demande une connexion après la transmission, le client saisit l' état SYN_SENT d' attente pour la demande de connexion.
2. Tout d' abord, après le démarrage du serveur entre dans le listen état, quand il reçoit le SYN envoyé à la demande du client, entrez SYN_RCV reçoit un état de la requête , le dos segment SYN contient le numéro de séquence initiale du serveur en réponse, tout en reconnaissant la nécessité de mettre le numéro de séquence initial est incrémenté d'un client, la confirmation du segment SYN du client. Un SYN prendra un certain nombre.
3. Une fois que le client reçoit un paquet d'accusé de réception passe à l'état serveur ETABLI (établi), indique que la connexion de la partie a été établie avec succès, le numéro de séquence d'accusé de réception fixé au serveur de client ISN plus 1, le segment SYN au serveur pour confirmer, lorsque après que le serveur reçoit le message d'accusé de réception, également entré ESTABLISHED (établie) état
connexion processus de construction (Lite):
prise d'appel, créez un descripteur de fichier,
appel à la connexion, envoie une demande de connexion au serveur,
connexion envoie un segment SYN et bloquer attente réponse du serveur; (premier)
serveur reçoit SYN, SYN-ACK d'un client répondra à un segment « convenu d'établir une connexion »; (seconde)
sera () de retour de la connexion après que le client reçoit le SYN-ACK, alors que un segment d'accusé de réception de réponse; (la troisième fois)
la procédure d'établissement de connexion, communément appelé poignée de main à trois voies, la
Insérer ici l'image Description
transmission des données de procédé
Une fois la connexion établie, le protocole TCP offre un service de communication en duplex intégral, le soi-disant moyenne full-duplex, dans la même connexion, au même moment, les parties de communication
peut écrire des données en même temps, concept relatif appelé semi-duplex, avec une connexion en même temps, ne peut être écrit par l' une des données,
le serveur de l'accepter () pour lire immédiatement après le retour (), prise de lecture est comme la lecture du même tuyau, si aucune donnée arrive sur l'attente de bloc,
puis le client appelle l'écriture () envoie une demande au serveur, le serveur reçoit () retourne de lecture, pour la demande du client est traitée, dans cette période
entre le client appelle le bloc de lecture () en attente de réponse du serveur,
serveur appelle write () traitera des résultats au client, appel lecture de bloc à nouveau () et attendre la prochaine demande,
le client reçoit () retourne de lecture, envoyez une demande à l'autre, de sorte que le cycle se poursuit, les
procédures de déconnexion (quatre d'onde) (oBLIGATOIRES emphasis) :
Si le client pas plus de demandes, et appelle la close () ferme la connexion, le client envoie un segment FIN au serveur (première),
après quoi le serveur reçoit FIN, en réponse à l'accusé de réception sera, en même temps qu'une lecture retourne 0 (une seconde fois);
Après le retour de lecture, le serveur connaît le client a fermé la connexion, appelle également le lien étroit est fermé, cette fois le serveur envoie un FIN au client, (troisième fois)
le client reçoit FIN, puis renvoie un accusé de réception au serveur; (le premier quatre)
ce processus de déconnexion, communément appelé « quatre vagues »
Insérer ici l'image Description
Pourquoi l' état TIME WAIT il?
1.TIME_WAIT étendu l'état des informations de maintenance en cours de connexion TCP pour le processus de fermeture normale gérer correctement connecté acquittement Wen perte est nécessaire.
État 2.TIME_WAIT pour veiller à ce que les segments de l'ancienne connexion ne seront pas réutilisés avant de disparaître sur le réseau , de manière à éviter de perturber la nouvelle connexion.
Blog de référence:
https://blog.csdn.net/L19002S/article/details/103667549

Publié 35 articles originaux · louange 107 won · Vues 8721

Je suppose que tu aimes

Origine blog.csdn.net/qq_43676757/article/details/105340617
conseillé
Classement