est-il possible d'envoyer plusieurs paquets TCP ou UDP sur un seul paquet IP? Existe-t-il des spécifications dans le protocole qui ne le permettent pas. p>
Si cela est autorisé par le protocole mais n'est généralement pas effectué par les implémentations TCP / UDP pourriez-vous me signaler à la partie correspondante du code source Linux qui le prouve. P>
Y a-t-il des implémentations de TCP / UDP sur certains OS qui envoient plusieurs paquets sur un seul paquet IP. (si c'est permis). p>
6 Réponses :
Il est L'en-tête SEQMENT TCP ne décrit pas sa longueur. La longueur de la charge utile TCP est dérivée de la longueur du ou des paquets IP moins la longueur des en-têtes IP et TCP. Alors seulement un segment TCP par paquet IP. P>
Inversement, cependant, un seul segment TCP peut être fragmenté sur plusieurs paquets IP par fragmentation IP. P>
C'est là que j'ai eu cette idée de!
voulait confirmer si cela est spécifié dans le protocole.
Dans TCP, ils s'appellent "segments", pas "paquets".
@CAF a changé, mais 50/50 s'il est plus compréhensible
Qu'en est-il de UDP, il a un champ de longueur dans son en-tête, non? Si le receveur autorisé ne semble pas avoir de problème pour trouver les paquets individuels, n'est-ce pas?
"Un segment TCP peut être fragmenté sur plusieurs paquets IP" - cela n'est pas souhaitable, car si même l'un des paquets tombe, tout le segment doit être retransmis, est-ce correct?
TCP n'envoie pas de paquets: il s'agit d'un flux continu. Vous envoyez des messages.
UDP, étant basé sur le paquet, n'enverra qu'un paquet à la fois. P>
Le protocole lui-même ne le permet pas. Cela ne va pas casser, ça ne se produira pas. p>
La suggestion d'utiliser un tunneling est valide, mais c'est donc l'avertissement. P>
Mais finalement, un segment TCP est envoyé en extrayant des données d'un flux d'octets.
Basez-vous votre réponse sur la base des implémentations ou du protocole ne le permet pas. Serait quelque chose si nous avons une implémentation qui envoie plus d'un segment TCP à l'intérieur d'un paquet IP.
Vous voudrez peut-être essayer TCP TCP sur TCP, bien qu'il soit généralement considéré comme un mauvaise idée . En fonction de vos besoins, votre kilométrage peut varier. P>
Vous voudrez peut-être jeter un oeil sur le Protocole de transmission de la commande de flux qui permet plusieurs données Streams sur une seule connexion TCP. P>
Edit - Je ne savais pas que TCP n'a pas son propre champ d'en-tête, il n'y aurait donc aucun moyen de le faire sans écrire un équivalent TCP personnalisé contenant cette information. SCTP peut toujours être utile cependant, je vais donc laisser ce lien. P>
TCP est une spécification publique, pourquoi pas simplement la lire? P>
RFC4164 est le document de la feuille de route, RFC793 est TCP lui-même et RFC1122 contient des errata et montre comment il s'intègre avec le reste de l'univers (IPv4). P>
Mais en bref, car l'en-tête TCP (RFC793 Section 3.1) n'a pas de champ de longueur, les données TCP s'étend à partir de l'extrémité du remplissage d'en-tête à la fin du paquet IP. Il n'y a nulle part où mettre un autre segment de données dans le paquet. P>
Vous ne pouvez pas emballer plusieurs paquets TCP dans un paquet IP - c'est une restriction de la spécification mentionnée ci-dessus. TCP est l'API la plus proche qui est axée sur l'application. Ou vous souhaitez programmer l'envoi de messages IP bruts? Dites-nous simplement quel problème voulez-vous résoudre? Pensez à la manière dont vous organisez la livraison des messages d'une application à une autre, ou mentionner que vous souhaitez accrocher à TCP / IP Stack. Ce que je peux vous suggérer: p>
Cette question se pose parce que j'ai remarqué qu'il n'y avait aucune longueur de champ de segment TCP dans l'en-tête TCP. C'est pourquoi je voulais confirmer. Merci beaucoup!
Qu'en est-il de UDP, il a un champ de longueur dans son en-tête, non? Si le receveur autorisé ne semble pas avoir de problème pour trouver les paquets individuels, n'est-ce pas?
@Rohitbanga: À cet égard TCP en effet, TCP n'a pas de champ code> code> avec la taille des données. Il repose sur le protocole de transport sous-jacent que (AFaik) l'a toujours toujours. Donc, il n'est pas nécessaire d'ajouter une autre valeur redondante.
@Dhanarajdurairaj: Oui, UDP a la longueur, Checkout Wikipedia . Toutefois, TCP et UDP servent différentes questions: elles ne peuvent pas être mélangées. Ils sont deux branches situées au sommet de la propriété intellectuelle: TCP est destinée à la diffusion de données séquentielle des données, UDP est pour un échange de messages courts où l'ordre n'a pas beaucoup d'importance.