Pour l’échange de messages de protocole général, qui peuvent tolérer certaines pertes de paquets. Combien plus efficace est UDP TCP ?
Réponses
Trop de publicités?Les gens disent que la chose importante TCP vous donne, c'est la fiabilité. Mais ce n'est pas vraiment vrai. La chose la plus importante TCP vous donne est de contrôle de congestion: vous pouvez courir un 100 connexions TCP à travers un lien DSL tous d'aller au max de la vitesse, et tous les 100 connexions seront productifs, parce qu'ils sont tous "sens" de la bande passante disponible. Essayez cela avec plus de 100 différents UDP applications, tout en poussant des paquets aussi vite qu'ils peuvent aller, et voir comment les choses fonctionnent pour vous.
Sur une plus grande échelle, ce comportement TCP est ce qui maintient l'Internet à partir de verrouillage en congestion "effondrement".
Les choses qui tendent à pousser les applications vers UDP:
Livraison du groupe de la sémantique: il est possible de faire la fiabilité de la livraison à un groupe de personnes de manière beaucoup plus efficace que le protocole TCP point-à-point de l'accusé de réception.
De la livraison: dans de nombreuses applications, aussi longtemps que vous obtenez toutes les données, vous ne vous souciez pas de ce que l'ordre de leur arrivée; vous pouvez réduire application au niveau de la latence en acceptant une commande de bloc.
Froideur: sur un LAN party, vous ne pouvez pas les soins si votre navigateur web fonctions bien aussi longtemps que vous êtes blitting les mises à jour du réseau aussi vite que vous le pouvez.
Mais même si vous vous souciez de la performance, vous ne voulez probablement pas à aller avec UDP:
Vous êtes sur le crochet pour la fiabilité maintenant, et beaucoup de choses que vous pourriez faire pour mettre en œuvre la fiabilité peut être plus lente que ce que le protocole TCP déjà fait.
Vous êtes maintenant en réseau hostile, ce qui peut causer des problèmes dans des environnements partagés.
Plus important encore, les pare-feux ne vous bloquer.
Vous pouvez éventuellement surmonter certains TCP performances et les problèmes de latence par "trunking" plusieurs connexions TCP ensemble; iSCSI cela pour contourner contrôle de congestion sur les réseaux locaux, mais vous pouvez aussi le faire pour créer une faible latence "urgent" message channel (TCP est "URGENT" comportement est totalement cassé).
Dans certaines applications TCP est plus rapide (meilleur débit) que UDP.
C'est le cas lorsque vous faites beaucoup de petites écrit par rapport à la taille de la MTU. Par exemple, j'ai lu un test dans lequel un flux de 300 octets des paquets a été envoyé sur Ethernet (1500 octets MTU) et TCP a été 50% plus rapide que UDP.
La raison en est que le protocole TCP essaie de tampon et les données et le remplissage complet d'un segment de réseau ainsi faire un usage plus efficace de la bande passante disponible.
UDP sur l'autre main met le paquet sur le réseau immédiatement ainsi congesting le réseau avec beaucoup de petits paquets.
Vous ne devriez probablement pas utiliser UDP, sauf si vous avez une très bonne raison de le faire. D'autant plus que vous pouvez donner TCP le même genre de latence UDP par la désactivation de l' algorithme Nagle (par exemple si vous êtes à la transmission en temps réel des données de capteur et vous n'êtes pas inquiet au sujet de congesting le réseau avec plein de petits paquets).
UDP est plus rapide que TCP et la simple et bonne raison est parce que sa n’existe pas reconnaître des paquets (ACK) qui permet un flux continu, au lieu de TCP qui reconnaît un ensemble de paquets, calculée en utilisant la taille de fenêtre TCP et le temps d’aller-retour (RTT).
Pour plus d’informations, je recommande le simple, mais très compréhensible Skullbox explication (TCP ou UDP)
avec la perte tolérant
Voulez-vous dire "avec la perte de la tolérance" ?
Fondamentalement, UDP n'est pas une "perte tolérant". Vous pouvez envoyer 100 paquets à quelqu'un, et ils ne pourraient obtenir 95 de ces paquets, et certains sont peut-être dans le mauvais ordre.
Pour des choses comme le streaming vidéo et les jeux multi-joueurs, où il vaut mieux rater un paquet de retarder tous les autres paquets derrière elle, c'est le choix évident
Pour la plupart des autres choses bien, un manquant ou "réarrangé' paquet est critique. Vous devez écrire du code supplémentaire pour exécuter au-dessus d'UDP pour réessayer si les choses se sont manqués, et de faire respecter le bon ordre. Ce serait ajouter un petit peu de surcharge dans certains endroits.
Heureusement, certaines personnes très intelligentes ont fait cela, et ils l'ont appelé TCP.
Pensez-y de cette façon: Si un paquet est manquant, préférez-vous tout simplement obtenir le paquet suivant le plus rapidement possible et de continuer (UDP), ou avez-vous réellement besoin que les données manquantes (utilisation du protocole TCP). La surcharge ne sera pas question, sauf si vous êtes vraiment dans une bordure scénario.
Le protocole qui a de meilleures performances (en termes de débit) - UDP ou TCP - dépend des caractéristiques du réseau et le trafic réseau. Robert S. Barnes, par exemple, met en avant un scénario où TCP fonctionne mieux (de petite taille pour l'écrit). Maintenant, imaginez un scénario dans lequel le réseau est congestionné et a la fois le trafic TCP et UDP. Les expéditeurs du réseau utilisant le protocole TCP, sera le sens de la "congestion" et de réduire leur envoyant des taux. Cependant, UDP n'a pas l'encombrement d'évitement ou de mécanismes de contrôle, et les expéditeurs utilisant UDP continuera à pomper dans les données à la même vitesse. Progressivement, TCP expéditeurs de réduire leur envoyant des taux minimum et si UDP expéditeurs ont suffisamment de données pour être envoyé sur le réseau, ils porc jusqu'à la majorité de la bande passante disponible. Alors, dans ce cas, UDP expéditeurs ont un débit plus élevé, comme ils obtiennent la plus grande tarte de la bande passante du réseau. En fait, c'est un sujet de recherche actif - Comment améliorer le débit TCP en présence de trafic UDP. Une façon, à ce que je sache, à l'aide duquel les applications TCP peut améliorer le débit est par l'ouverture de plusieurs connexions TCP. De cette façon, même si, à chaque connexion TCP est le débit peut être limité, la somme totale de la production de toutes les connexions TCP peut être plus élevé que le débit pour une application utilisant le protocole UDP.