Quand un réseau TCP paquet fragmenté à l'application de la couche?
Quand un paquet TCP être fragmenté au niveau de la couche application? Lorsqu'un paquet est envoyé à partir d'une application, le destinataire à l'application de la couche jamais reçu le paquet en deux ou plusieurs paquets? Si oui, quelles sont les conditions de provoquer le paquet pour être divisé. Il semble comme un paquet ne sera pas fragmenté jusqu'à ce qu'il atteigne l'Ethernet (au niveau de la couche réseau) limite de 1500 octets. Mais, que la fragmentation sera transparent pour le destinataire à la couche d'application depuis le réseau d'une couche de réassembler les fragments avant d'envoyer le paquet à la couche suivante, à droite?
- La seule chose qui peut fragment TCP transmissions au niveau de la couche application est l'application. Votre question n'a pas vraiment de sens.
Vous devez vous connecter pour publier un commentaire.
Il sera divisé quand il frappe un périphérique réseau avec une baisse de la MTU ensuite les paquets de la taille. La plupart des périphériques ethernet 1500, mais il peut souvent être plus petits, en 1492 si l'ethernet est d'aller sur le PPPoE (DSL) en raison de la surcharge de l'information de routage, même si faible, si une deuxième couche est ajoutée comme le Partage de Connexion Internet Windows. Et accès à distance est normalement 576!
En général, bien que vous devriez vous rappeler que TCP n'est pas un paquet de protocole. Il utilise des paquets au niveau le plus bas de transmettre sur IP, mais aussi loin que l'interface pile TCP est concerné, il est un protocole de flux et n'a aucune obligation de vous fournir avec une relation 1:1 à la physique des paquets envoyés ou reçus (par exemple, la plupart des piles tiendra les messages jusqu'à une certaine période de temps a expiré, ou il y a assez de messages pour maximiser la taille des paquets IP pour le MTU)
Comme un exemple, si vous avez envoyé deux "paquets" (appel de votre fonction d'envoi de deux fois), le programme de réception peut recevoir seulement 1 "paquet" (la réception de la pile TCP peut les combiner). Si vous êtes implimenting un type de message de protocole sur TCP, vous devez inclure un en-tête au début de chaque message (ou un autre en-tête/pied de page mecanisme), de sorte que le récepteur peut diviser le flux TCP de retour dans les messages individuels, soit lors de la réception d'un message en deux parties, ou lorsque plusieurs messages sont reçus dans un segment.
MSS
qui n'est pas mentionné ici.La Fragmentation doit être transparent pour une application TCP. Gardez à l'esprit que le protocole TCP est un protocole de flux: vous obtenez un flux de données, pas de paquets! Si vous êtes à la construction de votre demande fondée sur l'idée de compléter les paquets de données, alors vous aurez des problèmes, sauf si vous ajoutez une couche d'abstraction pour assembler l'ensemble des paquets du flux et ensuite passer les paquets jusqu'à l'application.
La question de fait une hypothèse qui n'est pas vrai -- TCP ne pas livrer les paquets à ses extrémités, plutôt, il envoie un flux d'octets (octets). Si une application écrit deux chaînes en TCP, il peut être livré sous forme de chaîne à l'autre extrémité; de même, une chaîne peut être livré que deux (ou plus) les chaînes de caractères à l'autre extrémité.
RFC 793, Section 1.5:
Mots clés flux continu d'octets (en octets).
RFC 793, Section 2.8:
L'intégralité de l'article 2.8 est pertinent.
À la couche d'application il ya un certain nombre de raisons pour lesquelles l'ensemble de 1500 octets peuvent ne pas présenter d'une lecture. Différents facteurs dans le système d'exploitation interne et la pile TCP peut entraîner l'application pour obtenir quelques octets à lire d'appel, et pour certains, à la prochaine. Oui, la pile TCP doit ré-assembler le paquet avant de l'envoyer, mais cela ne signifie pas que votre application va tout obtenir d'un seul coup (c'est PROBABLEMENT le faire en une seule lecture, mais il n'est pas GARANTI pour le faire en une seule lecture).
TCP essaie de garantir la livraison dans l'ordre des octets, avec la vérification des erreurs, automatique envoie de nouveau, etc qui se passe derrière votre dos. Pensez-y comme une pipe à l'application de la couche et ne pas trop s'enliser dans la façon dont la pile envoie sur le réseau.
Si un paquet dépasse le maximum MTU d'un périphérique réseau, il sera divisé en plusieurs paquets. (Notez que la plupart des équipements est fixé à 1500 octets, mais ce n'est pas une nécessité.)
La reconstruction du paquet devrait être totalement transparente pour les applications.
Différents segments de réseau peut avoir différentes valeurs MTU. Dans ce cas, la fragmentation peut se produire. Pour plus d'informations, voir Taille Maximum d'un segment TCP
Ce (de)la fragmentation se produit dans la couche TCP. Dans la couche d'application, il n'y a pas plus de paquets. TCP présente une ligne de flux de données de l'application.
Une "application layer" un paquet TCP (ainsi, le segment vraiment; TCP à son propre calque ne sais pas à partir de paquets) n'est jamais fragmenté, car il n'existe pas. La couche application vous permet d'afficher les données sous forme d'un flux d'octets, délivrés de manière fiable et dans l'ordre.
Si vous pensez autrement, vous êtes probablement en train d'atteindre quelque chose dans le mauvais sens. Toutefois, cela ne veut pas dire qu'il ne peut pas être une couche au-dessus de cette, disons, une séquence de messages délivrés au cours de cette fiable, dans l'ordre bytestream.
Cette page est une bonne source d'informations sur certaines des questions que d'autres ont mis en place, à savoir la nécessité pour l'encapsulation de données sur un protocole d'application par application du protocole de base Pas tout à fait autorité dans le sens que vous décrivez, mais il a des exemples et est source de bien des grands noms de la programmation réseau.
Correct - le plus instructif façon de voir c'est à l'aide de Wireshark, un outil précieux. Prendre le temps de comprendre, il - m'a sauvé plusieurs fois, et donne une bonne réalité vérifier
Si un 3000 octets par paquet entre dans un réseau Ethernet avec un défaut de taille MTU de 1500 (par ethernet), il sera fragmenté en deux paquets de 1500 octets de longueur. C'est le seul moment où je peux penser.
Wireshark est votre meilleur pari pour le contrôle de cette. Je l'ai utilisé pendant un certain temps et je suis totalement impressionné