2017-10-06 8 views
-1

Si j'envoie deux paquets via le net, l'un est un paquet UDP et l'autre est un paquet TCP, lequel paquet est le plus susceptible d'atteindre sa destination? On m'a dit que le protocole TCP est plus sûr, mais c'est à cause de son mécanisme "fail-safe". Mais cela signifie-t-il également que les paquets UDP sont plus susceptibles de tomber dans le chemin? Je pense que c'est lié à l'implémentation spécifique du routeur, parce que d'une part, si un paquet UDP disparaît, alors les deux parties savent probablement qu'il peut arriver et peuvent perdre un paquet ou deux, mais d'autre part, si un paquet TCP disparaît puis, par son mécanisme "fail-safe", il en enverra un autre et le problème est résolu, et le paquet TCP est beaucoup plus lourd. Je voudrais avoir une réponse plus solide pour cette question parce que je trouve ce sujet assez intéressant.udp vs tcp packet dropping

+0

Vous vous êtes déjà contredit. TCP a des fonctionnalités de fiabilité, alors pourquoi est-ce à la mise en œuvre du routeur? – EJP

Répondre

0

Si vous décidez du protocole à utiliser pour votre application, vous devez examiner les deux plus en détail. Voici juste un aperçu. TCP est un protocole de flux qui fournit plusieurs mécanismes qui fourniront: une livraison garantie des données, dans l'ordre. Il contrôlera la vitesse à laquelle les données sont envoyées (il commencera à transmettre lentement, puis augmentera la vitesse jusqu'à ce qu'il atteigne un taux qui est durable par le pair). Il renverra toutes les données qui n'ont pas été reçues de l'autre côté. Pour ce faire, vous payez un prix (par exemple le démarrage lent, le besoin d'acquitter toutes les données reçues, etc.)

UDP de l'autre côté est un protocole de "bloc de données" (datagramme) et ne fournit aucun des contrôles d'intégrité/taux/ordre. Il «compense» en étant (potentiellement) plus rapide: vous pompez les données aussi vite que possible, l'autre côté reçoit tout ce qu'il peut attraper, à la vitesse maximale du réseau dans le cas extrême. Aucune garantie de livraison ou de commande de données arrivant de l'autre côté. Ils reçoivent le datagramme entier ou rien.

Toute décision on fait habituellement n'a rien à voir avec la possibilité des données perdues ou non, mais la criticité de perdre tout ça. Le streaming vidéo est effectué via UDP plusieurs fois car manquer le datagramme occasionnel est moins critique que d'avoir une image lisse. La transmission de fichiers ne peut pas entraîner de pertes de données ou d'inversions de blocs de données, donc TCP est le choix naturel. En dehors de cette question, rappelez-vous que le protocole réseau ne représente que la moitié de votre problème. L'autre moitié arrive avec votre protocole d'application pour interpréter les octets que vous recevez ...