Réponses:
Nous disons que TCP segment
c'est l'unité de données de protocole qui se compose d'un en-tête TCP et d'un élément de données d'application (paquet) qui provient de la couche d'application (supérieure). Les données de la couche transport sont généralement nommées comme segment
et l'unité de données de la couche réseau est nommée comme datagram
mais lorsque nous utilisons UDP comme protocole de couche transport, nous ne disons pas UDP segment
, à la place, nous disons UDP datagram
. Je pense que c'est parce que nous ne segmentons pas l'unité de données UDP (la segmentation est effectuée dans la couche de transport lorsque nous utilisons TCP).
Le TCP RFC d'origine est un peu flou avec la façon dont il utilise le terme «segment».
Dans certains cas, le terme "segment" se réfère uniquement à la partie actuelle du flux de données d'application qui est transmise, ce qui exclut les en-têtes TCP. Par exemple, la «taille maximale de segment» TCP (MSS) est la taille maximale du bloc de données d'application dans ce message, sans compter les en-têtes TCP.
Mais dans d'autres cas, le terme "segment" inclut l'ensemble du message TCP, y compris les en-têtes TCP. En fait, dans au moins un cas, la spécification mentionne des segments TCP sans données d'application (tels que des Acks simples).
Un seul message IP entier est un "datagramme".
L'IP RFC d'origine fait référence aux messages de couche liaison comme des "paquets". Les datagrammes IP peuvent être divisés en "fragments" pour s'adapter aux limites de taille de paquet sur les réseaux à petits paquets.
La couche de liaison IEEE 802.3 / Ethernet fait référence à une transmission de couche physique contiguë unique en tant que "paquet". La partie de liaison de données MAC du paquet est appelée "trame". La trame commence par l'adresse MAC de destination et se termine par la séquence de vérification de trame. La partie de la trame qui peut contenir un datagramme IP (ou un fragment de celui-ci) est appelée "champ de données client MAC".
Donc, techniquement, il n'y a rien de tel qu'un "paquet TCP" ou un "paquet IP". Les paquets sont des termes des couches inférieures à IP. TCP a des "segments" et IP a des "datagrammes".
L'en-tête TCP, également appelé "en-tête de segment", et la charge utile, ou données, ou "données de segment" constituent le segment TCP, de taille variable.
Un segment TCP est appelé un datagramme. En règle générale, un segment ou un datagramme est un paquet. Lorsque le datagramme ou le paquet est traité par la couche réseau, il ajoute l'en-tête IP aux données et il devient un paquet IP.
La couche de transport segmente les données en unités plus petites appelées segments, datagrammes ou soi-disant paquets. Mais nous les appelons généralement des segments.
Le segment TCP n'est qu'un concept, c'est différent avec la défragmentation IP
lorsque vous envoyez des données plus grandes que ip mtu, elles sont placées dans un seul paquet ip, mais la couche ip trouve alors que le paquet ip est trop long pour être transmis , donc il divisera le gros paquet en plusieurs morceaux, chacun d'eux a le même Identifiant mais avec un décalage et une longueur de données différents. le côté réception est responsable de la collecte de tous les morceaux, après avoir reçu tous les morceaux, il va rassembler tous les morceaux dans un paquet ip entier et le pousser vers la couche de protocole supérieure.
mais la couche tcp a un comportement différent. lorsque vous envoyez des données suffisamment volumineuses, la couche tcp ne place pas les données dans un seul paquet tcp puis les divise en morceaux (mais ip le fait), elle récupère une partie des données brutes dans un paquet tcp, puis pousse paquet tcp à la couche ip, la longueur du paquet tcp est déterminée par mss, plus tard, il récupérera une autre partie des données restantes dans un autre paquet tcp et répétera le processus jusqu'à ce que toutes les données soient transmises.
si tcp n'utilise pas mss, c'est horrible. supposons que vous envoyez des données plus grandes que mss, elles seront mises dans un seul paquet tcp (les données ne sont pas divisées en petits morceaux car mss n'est pas utilisé), le paquet tcp est plus grand que ip mtu, donc l'ip divisera le tcp paquet en morceaux. le paquet TCP sera retransmis si l'une des pièces est perdue, perdez du temps et de la bande passante
ps: tcp_mss = ip_mtu - tcp_header
Un en-tête n'est pas composé de segments. Un en-tête a toujours la même taille et doit être complet. Sinon, le paquet n'a pas pu être décodé.
Ce que vous appelez "segment" est l'ensemble du "paquet" qui est ensuite combiné avec d'autres au flux TCP. Voir:
Le protocole de contrôle de transmission accepte les données d'un flux de données, les «segmente» en morceaux et ajoute un en-tête TCP créant un segment TCP.
TCP reçoit les données de la couche application et «découpe» ces données en plusieurs segments de données; morceaux des données d'origine avec un en-tête TCP ajouté. Une partie de cet en-tête est un numéro de séquence qui est utilisé par le protocole TCP à la réception pour mettre tous les segments reçus (moins les en-têtes) dans le bon ordre et réassembler les données d'origine qu'il transfère ensuite à la couche application .
Donc, pour répondre à votre question; le terme «paquet TCP» n'existe pas vraiment. Il est appelé un «segment» qui se compose d'un en-tête et d'une section de données. L'en-tête lui-même se compose de plusieurs «champs» qui contiennent, entre autres, un numéro de séquence, une somme de contrôle et des numéros de port source et de destination.
Lorsque vous envoyez des données via une connexion TCP, la quantité de données que vous envoyez peut dépasser la taille maximale d'octets autorisée par la connexion dans un seul paquet. Ce montant "Maximum Segment Size" (également appelé MSS) est "négocié" (1) au moment de la connexion entre les deux points de terminaison TCP (le client et le serveur). Le protocole TCP de niveau 4 OSI est responsable de la diffusion / collecte. Cela signifie que votre flux de données est divisé en parties plus petites (appelées segments) et envoyés séparément via le réseau. De l'autre côté, la couche TCP est responsable de rassembler le paquet dans le bon ordre pour reformer le flux comme il a été envoyé. Rien ne peut vous dire que les segments arriveront à destination dans le même ordre qu'au départ. C'est aussi pourquoi les paquets sont numérotés. Plus, les paquets sont accusés réception un par un séparément (2) par le récepteur mais parfois des paquets peuvent être perdus. Ensuite, aucun ACK ne sera renvoyé de la destination du paquet à l'émetteur. Ensuite, l'émetteur doit le renvoyer (c'est aussi le rôle de TCP). Parfois le paquet est reçu correctement mais l'acquittement n'est pas reçu par l'émetteur (nouveau paquet perdu). Dans un tel cas, l'émetteur le renverra, mais le récepteur voit qu'il l'a déjà reçu (c'est-à-dire un paquet Dup) et l'élimine mais renvoie l'acquittement à l'expéditeur.
De plus, pour améliorer le débit, l'émetteur peut envoyer plusieurs paquets en série et n'a pas à attendre l'acquittement précédent pour envoyer le paquet suivant. Il fait également partie du protocole TCP et est appelé fenêtres coulissantes. Le nombre de paquets envoyés en attente pour un accusé de réception est limité.
(1) Dans les faits, il n'y a aucune négociation, chaque point final indique la taille maximale avec laquelle il est capable de traiter. Cette valeur n'inclut pas les 20 octets d'en-tête IP, ni les 20 octets d'en-tête TCP. (2) plusieurs paquets peuvent également être acquittés par un seul ACK.
Gardez à l'esprit que les datagrammes sont des données encapsulées envoyées sur un réseau IP ou utilisant un protocole sans connexion comme UDP. Les paquets sont des données encapsulées pour un protocole orienté connexion comme TCP. Les segments sont des parties d'un flux de données envoyées sur TCP. Voir W.Richard Stevens "TCP / IP illustré" pour avoir une bien meilleure explication de tout cela.
Le terme "générique" pour des choses comme celle-ci est Protocol Data Unit, ou PDU.
LAYER # - OSI NAME - COMMON PROTOCOL OR USE - PDU NAME
------- ------------ ---------------------- --------------------------
Layer 1 - Physical - Transceiver - bits, or a physical signal
Layer 2 - Datalink - Ethernet - frame
Layer 3 - Network - IP - packet
Layer 4 - Transport - TCP - segment
Layer 5 - Session - SIP - data, request, or response
Layer 6 - Presentation - Encryption/compression - data, request, or response
Layer 7 - Application - HTTP - data, request, or response
Les choses deviennent floues avec des protocoles spécifiques de la couche 4 et plus (par exemple, à ce jour, je ne connais rien de vraiment purement un protocole de session, et il n'y a vraiment rien de tel qu'un protocole de "présentation" commun mais c'est certainement une couche presque séparée dans beaucoup de piles de logiciels / communication).
En outre, comme mentionné précédemment, chacune de ces PDU a un en-tête distinct de sa charge utile ou de ses données. L'en-tête contient des informations sur les données et éventuellement une somme de contrôle pour vérification à l'autre extrémité.