TCP n'est pas un protocole de message uniquement. C'est un protocole basé sur les flux et prend soin de séparer les données pour nous. Lemme vous amène à la section de base. Il y a deux parties dans le cas de TCP: la segmentation et la fragmentation.
La segmentation se produit au niveau de TCP (Transport Layer). Cela dépend de deux paramètres - MSS et taille de la fenêtre. MSS détermine la taille maximale du segment qu'un périphérique peut recevoir. Le MSS est communiqué lors de l'établissement de la connexion initiale via les options TCP. Chaque direction du flux de données peut utiliser un MSS différent et le système d'exploitation le détermine. Cependant, la taille de la fenêtre est envoyée dans l'en-tête TCP par le récepteur pour communiquer le maximum de données qu'il peut tamponner en même temps du côté réception d'une connexion avant d'attendre une reconnaissance et une mise à jour de fenêtre de l'hôte récepteur. C'est-à-dire qu'un hôte peut envoyer un certain nombre de segments (facteur MSS) avant d'épuiser la taille de la fenêtre du récepteur.
La fragmentation se produit à l'adresse IP (couche réseau) de deux manières. S'il n'y a pas de périphériques avec limitation MTU sur le chemin de communication entre l'expéditeur et le destinataire, la fragmentation rencontrera le MTU d'ethernet (1500 octets) seul. Cependant, en cas de présence d'un dispositif intermédiaire avec une limitation MTU entre l'émetteur et le récepteur, la couche IP (protocole Internet) fragmente les datagrammes, de sorte que les paquets peuvent passer à travers une liaison avec une unité de transmission maximale plus petite (MTU) que la taille du datagramme d'origine. Dans le cas d'un dispositif intermédiaire avec limitations MTU, l'expéditeur doit également déployer la découverte MTU du chemin pour déterminer le MTU minimum dans le chemin réseau vers le récepteur et ajuster dynamiquement le MSS pour éviter la fragmentation IP au sein du réseau. La reconnaissance MTU du chemin est effectuée en définissant l'option DF (Do not Fragment) dans les en-têtes IP des paquets sortants. Tout périphérique sur le chemin de communication entre l'expéditeur et le destinataire, dont la MTU est plus petite que le paquet, laissera tomber ces paquets et répondra à l'expéditeur avec le message ICMP "Destination inaccessible (datagramme trop grand) contenant le MTU du périphérique. Cette information permet à l'expéditeur de réduire son MTU supposé de manière appropriée. Ainsi, cela conduit au point de relation entre le MSS et le MTU. La RFC 791 stipule que "tous les hôtes doivent être prêts à accepter des datagrammes jusqu'à 576 octets (qu'ils soient entiers ou en fragments)". Ainsi, le MTU minimum pour les réseaux IP est 576. Dans le cas de TCP, déduction de 20 octets pour l'en-tête TCP et de 20 octets pour l'en-tête IP, nous donnerons 536 octets comme MSS standard pour TCP.
Maintenant, allons dans la partie de réassemblage. La fragmentation peut se produire en fonction de MTU sur les périphériques intermédiaires, mais le réassemblage doit se produire uniquement sur le périphérique de destination. TCP prend en charge la segmentation, cependant sur le périphérique de destination, TCP doit prendre en charge la commande, mais le réassemblage des segments doit être pris en charge par l'application. Donc, si vous n'avez besoin que d'une communication basée sur des messages entiers et que la fiabilité n'est pas un problème, UDP doit être votre choix. Cependant, notez que si vous pouvez envoyer une grande quantité de données par fractionnement, UDP ne sera pas en mesure d'assurer la commande des paquets et il ne pourra pas traiter les pertes de paquets car il n'a pas de mécanisme de correction d'erreur comme la retransmission . Si vous souhaitez disposer d'une communication basée sur les messages, comme dans le protocole UDP, mais également couplée à des fonctionnalités TCP telles que la livraison fiable, le contrôle de la congestion et d'autres améliorations/fonctionnalités, comme le multi-streaming, Homing, MTU découverte intégrée, puis SCTP devrait être votre choix. Toutefois, si vous avez des systèmes NAT hérités sur votre réseau, vous devrez peut-être effectuer l'encapsulation de SCTP dans UDP.