Quelle est la différence entre TCP et UDP?
Je sais que TCP est utilisé dans le cas d'applications critiques non temporelles, et UDP est utilisé pour les jeux ou les applications qui nécessitent une transmission rapide des données. Je sais que TCP est utilisé pour HTTP, HTTP, FTP, SMTP et Telnet. Je sais que UDP est utilisé pour DNS et DHCP.
Mais pourquoi? Quelles caractéristiques de TCP et UDP le rendent utile pour leurs cas d'utilisation respectifs?
tcp
network-programming
udp
protocols
user749414
la source
la source
Réponses:
TCP
est un flux orienté connexion sur un réseau IP. Il garantit que tous les paquets envoyés atteindront la destination dans le bon ordre. Cela implique l'utilisation de paquets d'accusé de réception renvoyés à l'expéditeur, et une retransmission automatique, entraînant des délais supplémentaires et une transmission générale moins efficace queUDP
.UDP
est un protocole sans connexion. La communication est orientée vers les datagrammes . L'intégrité n'est garantie que sur le seul datagramme. Les datagrammes arrivent à destination et peuvent arriver dans le désordre ou ne pas arriver du tout. Il est plus efficace queTCP
parce qu'il n'utilise pas ACK . Il est généralement utilisé pour la communication en temps réel, où un petit pourcentage de taux de perte de paquets est préférable à la surcharge d'uneTCP
connexion.Dans certaines situations, il
UDP
est utilisé car il permet la transmission de paquets de diffusion. Ceci est parfois fondamental dans des cas comme leDHCP
protocole, car la machine cliente n'a toujours pas reçu d'IP
adresse (c'est leDHCP
but du protocole de négociation) et il n'y aura aucun moyen d'établir unTCP
flux sans l'IP
adresse elle-même.la source
Extrait de l'article Skullbox:
1) TCP est orienté connexion et fiable alors que UDP est moins connecté et peu fiable.2) TCP a besoin de plus de traitement au niveau de l'interface réseau alors que ce n'est pas le cas dans UDP.
3) TCP utilise, prise de contact à 3 voies, contrôle de la congestion, contrôle de flux et autre mécanisme pour assurer une transmission fiable.
4) UDP est principalement utilisé dans les cas où le délai de paquet est plus grave que la perte de paquet.
la source
is the most commonly used protocol on the Internet
déclaration soit discutable et dépend vraiment de la façon dont vous définissezmost commonly used
,protocol
etthe Internet
. Par exemple, le protocole Internet est un concurrent plus probable à cette couronne particulière.Considérez TCP comme un ramassage / dépôt UPS / FedEx programmé dédié de colis entre deux emplacements, tandis que UDP équivaut à jeter une carte postale dans une boîte aux lettres.
UPS / FedEx fera tout son possible pour s'assurer que le colis que vous envoyez par la poste arrive à destination et l'achemine à temps. Avec la carte postale, vous avez de la chance si elle arrive, et elle peut arriver en panne ou en retard (combien de fois avez-vous reçu une carte postale de quelqu'un APRÈS son retour de vacances?)
TCP est aussi proche d'un protocole de livraison garanti que possible, tandis qu'UDP est simplement «meilleur effort».
la source
Raisons pour lesquelles UDP est utilisé pour DNS et DHCP:
DNS - TCP nécessite plus de ressources du serveur (qui écoute les connexions) que du client. En particulier, lorsque la connexion TCP est fermée, le serveur doit se souvenir des détails de la connexion (en les gardant en mémoire) pendant deux minutes, pendant un état appelé TIME_WAIT_2. Il s'agit d'une fonctionnalité qui empêche que les paquets répétés par erreur d'une connexion précédente soient interprétés comme faisant partie d'une connexion en cours. La maintenance de TIME_WAIT_2 utilise la mémoire du noyau sur le serveur. Les requêtes DNS sont petites et arrivent fréquemment de nombreux clients différents. Ce modèle d'utilisation exacerbe la charge sur le serveur par rapport aux clients. On pensait que l'utilisation d'UDP, qui n'a aucune connexion et aucun état à maintenir sur le client ou le serveur, améliorerait ce problème.
DHCP - DHCP est une extension de BOOTP. BOOTP est un protocole que les ordinateurs clients utilisent pour obtenir des informations de configuration à partir d'un serveur, pendant le démarrage du client. Afin de localiser le serveur, une diffusion est envoyée demandant des serveurs BOOTP (ou DHCP). Les diffusions ne peuvent être envoyées que via un protocole sans connexion, tel que UDP. Par conséquent, BOOTP nécessitait au moins un paquet UDP pour la diffusion de localisation de serveur. De plus, étant donné que BOOTP est en cours d'exécution pendant que le client ... démarre, et qu'il s'agit d'une période pendant laquelle le client peut ne pas avoir toute sa pile TCP / IP chargée et en cours d'exécution, UDP peut être le seul protocole que le client est prêt à gérer. temps. Enfin, certains clients DHCP / BOOTP ont uniquement UDP à bord. Par exemple, certains thermostats IP implémentent uniquement UDP.
Comme d'autres l'ont mentionné, UDP est également utile pour le streaming multimédia, en particulier l'audio. Les conversations sonnent mieux en cas de décalage du réseau si vous supprimez simplement les paquets retardés. Vous pouvez faire cela avec UDP, mais avec TCP, tout ce que vous obtenez pendant le décalage est une pause, suivie d'un son qui sera toujours retardé d'autant qu'il a déjà été mis en pause. Pour les conversations téléphoniques bidirectionnelles, cela est inacceptable.
la source
Une des différences est en bref
UDP : envoyer un message et ne pas regarder en arrière s'il a atteint la destination, protocole sans connexion
TCP : envoyer le message et garantir d'atteindre la destination, protocole orienté connexion
la source
TCP établit une connexion avant la transmission des données, pas UDP. De cette manière, UDP peut fournir une livraison plus rapide. Les applications comme DNS, l'accès au serveur de temps utilisent donc UDP.
Contrairement à UDP, TCP utilise le contrôle de la congestion. Il répond à la charge du réseau. Contrairement à UDP, il ralentit lorsque la congestion du réseau est imminente. Ainsi, des applications comme le multimédia préférant un débit constant peuvent opter pour UDP.
De plus, UDP n'est pas fiable, il ne réagit pas aux pertes de paquets. Ainsi, les applications sensibles aux pertes telles que la transmission multimédia préfèrent UDP. Cependant, TCP est un protocole fiable, donc les applications qui nécessitent de la fiabilité comme le transfert Web, le courrier électronique, le téléchargement de fichiers préfèrent TCP.
De plus, dans Internet d'aujourd'hui, UDP n'est pas aussi accueillant que TCP en raison des boîtes du milieu. Certaines applications comme skype tombent en TCP lorsque la connexion UDP est supposée être bloquée.
la source
La loi des abstractions qui fuient par Joel Spolsky
http://www.joelonsoftware.com/articles/LeakyAbstractions.html
la source
Différences courtes et simples entre les protocoles Tcp et Udp:
1) Tcp - Protocole de contrôle de transmission et Udp - Protocole de datagramme utilisateur.
2) Tcp est un protocole fiable, alors que Udp est un protocole non fiable.
3) Tcp est un flux orienté, où comme Udp est un protocole orienté message.
4) Tcp est plus lent que Udp.
la source
Entrez dans ce fil et laissez-moi essayer de l'exprimer de cette manière.
TCP
Poignée de main à 3 voies
Bob: Hey Amy, j'aimerais te dire un secret
Amy: OK, vas-y, je suis prêt
Bob: OK
Communication
Bob: «Je», ceci est la première lettre
Amy: Première lettre reçue, veuillez m'envoyer la deuxième lettre
Bob: «», ceci est la deuxième lettre
Amy: Deuxième lettre reçue, veuillez m'envoyer la troisième lettre
Bob: «L ', ceci est la troisième lettre
Après un certain temps
Bob: ' L ', ceci la troisième lettre
Amy: Troisième lettre reçue, s'il vous plaît envoyez-moi la quatrième lettre
Bob: ' O ', ceci la quatrième lettre
Amy: ...
... ...
Poignée de main à 4 directions
Bob: Mon secret est exposé, maintenant, vous connaissez mon cœur.
Amy: OK. Je n'ai rien à dire.
Bob: OK.
UDP
Bob: I LOVE U
Amy a reçu: OVI LE
TCP est plus fiable que UDP avec un ordre de message uniforme garanti, c'est sans aucun doute pourquoi UDP est plus léger et efficace.
la source
Explication simple par analogie
TCP est comme ça.
Imaginez que vous ayez un correspondant sur Mars (nous avons communiqué avec des lettres écrites dans le bon vieux temps avant Internet).
Vous devez envoyer à votre correspondant les sept habitudes des personnes très efficaces. Vous décidez donc de l'envoyer en sept lettres distinctes:
etc.
etc .. Lettre 7 - Affûter la scie
Exigences:
Vous voulez vous assurer que votre correspondant reçoit toutes vos lettres - dans l'ordre et qu'elles arrivent parfaitement . Si votre stylo paye reçoit la lettre 7 avant la lettre 1, ce n'est pas bon. si votre correspondant reçoit toutes les lettres sauf la lettre 3 - ce n'est pas non plus bon.
Voici comment nous nous assurons que nos exigences sont satisfaites:
la source
TLDR;
Avant de commencer, rappelez-vous que tous les inconvénients de quelque chose sont une continuation de ses avantages . Il n'y a qu'un bon outil pour un travail, pas de panacée. TCP / UDP coexistent depuis des décennies, et pour une raison.
TCP
Il a été conçu pour être extrêmement fiable et il fait très bien son travail. C'est tellement complexe parce qu'il accomplit une tâche difficile: prouver un transport fiable sur le protocole IP non fiable.
Étant donné que toute la logique complexe de TCP est encapsulée dans la pile réseau, vous êtes libre de faire beaucoup de tâches de bas niveau laborieuses et sujettes aux erreurs dans la couche application.
Lorsque vous envoyez des données via TCP, vous écrivez un flux d'octets sur le socket de l'expéditeur où il est divisé en paquets, transmis dans la pile et envoyé sur le câble. Du côté du récepteur, les paquets sont réassemblés à nouveau en un flux continu d'octets.
Maintenir cette belle abstraction a un coût en termes de complexité et de performances. Si le premier paquet du flux d'octets est perdu, le récepteur retardera le traitement des paquets suivants même ceux qui sont déjà arrivés.
De plus, pour être fiable, TCP implémente ceci:
Tout cela est exacerbé dans les réseaux sans fil lents et peu fiables, tandis que TCP a été conçu pour les réseaux câblés où les retards sont prévisibles et la perte de paquets n'est pas si courante. De plus, comme beaucoup de gens l'ont déjà mentionné, pour certaines choses, TCP ne fonctionne tout simplement pas (DHCP). Cependant, le cas échéant, TCP fait toujours son travail exceptionnellement bien.
En utilisant une analogie avec le courrier, une session TCP est similaire à raconter une histoire à votre secrétaire qui la divise en courriers et envoie un service de courrier merdique à un éditeur. De l'autre côté, une autre secrétaire rassemble les courriers en un seul morceau de texte. Certains e-mails sont perdus, certains sont corrompus, une procédure très complexe est donc nécessaire pour une livraison fiable et votre article de 10 pages peut prendre beaucoup de temps pour parvenir à votre éditeur.
UDP
UDP, d'autre part, est orienté message, de sorte qu'un récepteur écrit un message (paquet) sur la socket, puis il est transmis à un récepteur tel quel, sans aucune division / assemblage.
Par rapport à TCP, sa spécification est très simple. Essentiellement, tout ce qu'il fait pour vous est d'ajouter une somme de contrôle au paquet afin qu'un récepteur puisse détecter sa corruption. Tout le reste doit être mis en œuvre par vous, développeur de logiciels. Maintenant, lisez la volumineuse spécification TCP et essayez de penser à en réimplémenter certaines parties.
Certaines personnes sont allées dans ce sens et ont obtenu des résultats très décents, au point que HTTP / 3 utilise QUIC - un protocole basé sur UDP. Cependant, c'est plus une exception. Les applications courantes d'UDP sont les applications de streaming audio / vidéo et de conférence comme Skype, Zoom ou Google Hangout où la perte de paquets n'est pas si importante par rapport à un délai introduit par TCP.
la source