'TCP/IP' - vs - 'UDP' c'est quoi la difference ?

'TCP/IP' - vs - 'UDP' c'est quoi la difference ? - C++ - Programmation

Marsh Posté le 10-07-2003 à 16:31:00    

Voila je dois concevoir une appli permettant la communication entre un simulateur et un serveur. Un ordinateur entre les deux doit se charger d'envoyer des donnees au serveur par protocole reseau. Que choisir : programmation TCP/IP ou bien UDP ?
eclaircicez moi sur les differences, la facilite d'implimentation en C++ (Visual C++)...
Merci

Reply

Marsh Posté le 10-07-2003 à 16:31:00   

Reply

Marsh Posté le 10-07-2003 à 16:35:04    

pas dur  
 
TCP protocole en mode connecté (stream) utile pour les applis qui ont besoin d etre en mode connecté (ex : client ftp)
 
UDP protocole en mode non connecté (datagram) ex : quake (tu peux rejoindre une partie en cours)
 
 
En gros pour utiliser ces protocoles sous windows tu utilises winsock2. tu auras l aide dans MSDN je ne vais pas te detailler tout.  
 
Juste un truc, apparemment toi, tu as besoin d un mode connecté donc TCP.
 
:)
 
 

Reply

Marsh Posté le 10-07-2003 à 16:35:47    

pas dur  
 
TCP protocole en mode connecté (stream) utile pour les applis qui ont besoin d etre en mode connecté (ex : client ftp)
 
UDP protocole en mode non connecté (datagram) ex : quake (tu peux rejoindre une partie en cours)
 
 
En gros pour utiliser ces protocoles sous windows tu utilises winsock2. tu auras l aide dans MSDN je ne vais pas te detailler tout.  
 
Juste un truc, apparemment toi, tu as besoin d un mode connecté donc TCP.
 
:)
 
 

Reply

Marsh Posté le 10-07-2003 à 16:38:14    

HS  
 
j ai enfin compris pourquoi y en avait qui avaient 2 posts identiques a la suite : en utilisant la touche (de merde) precedente du navigateur, ca rappelle le script de post et ca reposte.
 
 
Fait chier je deteste cette touche mais j ai pas d autre choix, je suis sur un mac (de merde aussi) et ca rame tellement pour rappeler les pages que je prefere faire precedent plutot que d attendre au moins 2 mn pour chaque page .
 
/HS

Reply

Marsh Posté le 10-07-2003 à 16:56:09    

xilebo a écrit :

HS  
 
j ai enfin compris pourquoi y en avait qui avaient 2 posts identiques a la suite : en utilisant la touche (de merde) precedente du navigateur, ca rappelle le script de post et ca reposte.
 
 
Fait chier je deteste cette touche mais j ai pas d autre choix, je suis sur un mac (de merde aussi) et ca rame tellement pour rappeler les pages que je prefere faire precedent plutot que d attendre au moins 2 mn pour chaque page .
 
/HS


 
 [:zoumzoumzeng]

Reply

Marsh Posté le 10-07-2003 à 17:02:39    

Dc tu penses que je dois utiliser TCP/IP a priori. En fait, plus exactement, il s'agit d'un simulateur qui comporte des capteurs. Ces derniers fournissent des informations que l'on recueille sur un PC intermediaire. Celui-ci fait a partir de ces donnees recues des calculs necessaires ; ainsi, les donnees sont pretes a etre envoyees (par protocole reseau (carte ethernet)) au serveur qui lui aura donc une tache allegee en recevant ainsi les donnees toutes pretes du PC intermediaire. Il s'agirait donc d'une simple communication classique. UDP ne suffit - il donc pas ?

Reply

Marsh Posté le 10-07-2003 à 17:36:46    

xilebo a écrit :


UDP protocole en mode non connecté (datagram) ex : quake (tu peux rejoindre une partie en cours)


ca m'étonnerait que le proto d'un jeu se base sur de l'UDP ...
et pkoi il faudrait de l'UDP pour pouvoir se connecter en cours de partie  :??:


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 10-07-2003 à 17:36:50    

si tu considere que tu n as pas besoin d authentification et que tu veux juste "recevoir" des donnees d un client pour les  traiter ensuite, le mode UDP peut dans ce cas te satisfaire (parait que c plus rapide m'enfin)...
 
tu recevras des paquets venant de ton client et ton serveur devra les traiter.
 
Il me semble juste (par contre la c pas sur) que les paquets UDP n arrivent pas forcement dans l ordre (c est un truc qui fait partie du QoS de TCP) mais je ne sais plus si c est pour UDP ou carrement IP (parceque pour IP parcontre c sur)
 
regarde les RFC pour en etre sur (je regarde de mon coté)
 
 
 
Enfin tout ca pour dire que ce que tu veux implementer , t en auras pas pour longtemps ni beaucoup de code a pondre (enormement d exemples sur le net sur MSDN)
 
tiens pour te dire : j ai implementé un petit programme (3 jours) qui sert a relayer des ecritures port com a travers internet ... j ai utilisé le mode TCP mais effectivement j aurai pu utiliser UDP. C est juste parce que j ai pas l habitude de l utiliser (et il est moins utilisé d ailleurs)

Reply

Marsh Posté le 10-07-2003 à 17:38:13    

pour UDP : l'ordre des paquets n'est aps assuré, ni le fait que tu les reçoives ...  
 
franchement, faire de l'UDP c'est vraiment se compliquer la tache ! :/


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 10-07-2003 à 17:44:41    

benou a écrit :

pour UDP : l'ordre des paquets n'est aps assuré, ni le fait que tu les reçoives ...  
 
franchement, faire de l'UDP c'est vraiment se compliquer la tache ! :/


 
:jap: merci de me confirmer ceci.
 
je pense qu il y a quand meme des interets a utiliser ce protocole , ne serait que pour la vitesse (ping ou transfert) , mais aussi  pour ne pas avoir a gerer de "session"

Reply

Marsh Posté le 10-07-2003 à 17:44:41   

Reply

Marsh Posté le 10-07-2003 à 17:49:04    

a part opur de l'optimisation, je vois pas l'intérêt [:spamafote]
 
et vous la complexité (ordonancement des paquets, gestion des ressoumission, etc ...), faut vraiment avoir un sacré besoin de performance pour justifier de se faire chier avec ca.
 
par exemple, le proto HTTP qui est basé sur du "question-réponse" (mode déconnecté), ce qui correspond bien au modèle UDP, bha il utilise du TCP pour pas avoir à se faire chier avec tout ca ...
 
edit : et si tu veux pas gérer de session, bha tu fermes tes connexions et puis voilou ...


Message édité par benou le 10-07-2003 à 17:49:46

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 10-07-2003 à 17:53:56    

chui d accord avec toi ,si pas besoin de performances , alors vaut mieux utiliser TCP (plus simple etc...)
 
 
mais bon je suis persuadé que quake utilise UDP. c pas pour rien.

Reply

Marsh Posté le 10-07-2003 à 17:56:40    

xilebo a écrit :

pas dur  
 
TCP protocole en mode connecté (stream) utile pour les applis qui ont besoin d etre en mode connecté (ex : client ftp)
 
UDP protocole en mode non connecté (datagram) ex : quake (tu peux rejoindre une partie en cours)


 
ca n'a RIEN à voir  :heink:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 10-07-2003 à 17:57:18    

xilebo a écrit :


ne serait que pour la vitesse (ping ou transfert) , mais aussi  pour ne pas avoir a gerer de "session"


 
mais qu'est ce que tu racontes toi?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 10-07-2003 à 17:59:17    

xilebo a écrit :

mais bon je suis persuadé que quake utilise UDP. c pas pour rien.


 
quake utilise UDP parce qu'il peut se permettre de perdre un peu de détails comparé à la latence si un paquet TCP était perdu. Avec TCP chaque paquet se doit d'etre délivré et dans un ordre correct. Si un paquet se perd dans le réseau par suite de congestion sur un noeud par exemple, il y aura une latence avant que l'émetteur ne s'en rende compte et retransmette. Cette latence est inadmisible pour un jeu en réseau.
 
Par contre perdre un ou deux paquets c'est pas bien grave, c'est pas comme si tu transmettais un document ou un mail par exemple.
 
Mais ca n'a rien a voir avec le fait que tu peux te connecter à une partie en cours [:mlc]


Message édité par darklord le 10-07-2003 à 18:00:00

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 10-07-2003 à 18:02:14    

vous êtes sur que c'est de l'UDP quake ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 10-07-2003 à 18:04:54    

benou a écrit :

vous êtes sur que c'est de l'UDP quake ?


 
pour une partie du traffic je pense que c'est ce qu'il y a de plus raisonnable


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 10-07-2003 à 18:05:22    

benou a écrit :

vous êtes sur que c'est de l'UDP quake ?

Oui

Reply

Marsh Posté le 10-07-2003 à 18:05:29    

http://www.doc.ic.ac.uk/~cjp99/mrq [...] node3.html
 
Edit: et ce lien résumé mon post précédent d'ailleurs :o


Message édité par darklord le 10-07-2003 à 18:06:17

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 10-07-2003 à 18:06:53    

DarkLord a écrit :


 
ca n'a RIEN à voir  :heink:  


 
+1
 
En gros :  
- TCP : c'est le téléphone : avantage tu es sûr que quand tu envois qqchose, ça arrive. Tu peux avoir plusieurs téléphone (plusieurs connection)
- UDP : c'est la poste. Tu envois, ça peux ne pas arriver (grève :D). Avantage très minime: c'est un poil plus rapide car celui qui reçoit ne transmet pas d'accusé
 
Edit : pour le temsp réel( Quake, serveur vidéo,..), on préfère utiliser UDP


Message édité par pascal_ le 10-07-2003 à 18:08:48
Reply

Marsh Posté le 10-07-2003 à 18:07:06    

Merci google ( quake network udp ) : http://www.alumni.caltech.edu/~chamness/qwPackets.html
 
Et aussi google (quake network tcp ) :
http://www.jfind.com/articles/glass033100.shtml


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 10-07-2003 à 18:09:57    

pascal_ a écrit :


 
+1
 
En gros :  
- TCP : c'est le téléphone : avantage tu es sûr que quand tu envois qqchose, ça arrive. Tu peux avoir plusieurs téléphone (plusieurs connection)
- UDP : c'est la poste. Tu envois, ça peux ne pas arriver (grève :D). Avantage très minime: c'est un poil plus rapide car celui qui reçoit ne transmet pas d'accusé
 
Edit : pour le temsp réel( Quake, serveur vidéo,..), on préfère utiliser UDP


 
bon téléphone/poste c'est pas super comme image. Surtout qu'en téléphonie sur IP c'est clairement pas TCP qui est utilisé :D
 
(ok ok je fais ma pute désolé)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 10-07-2003 à 19:47:15    

DarkLord a écrit :


 
quake utilise UDP parce qu'il peut se permettre de perdre un peu de détails comparé à la latence si un paquet TCP était perdu. Avec TCP chaque paquet se doit d'etre délivré et dans un ordre correct. Si un paquet se perd dans le réseau par suite de congestion sur un noeud par exemple, il y aura une latence avant que l'émetteur ne s'en rende compte et retransmette. Cette latence est inadmisible pour un jeu en réseau.
 
Par contre perdre un ou deux paquets c'est pas bien grave, c'est pas comme si tu transmettais un document ou un mail par exemple.
 
Mais ca n'a rien a voir avec le fait que tu peux te connecter à une partie en cours [:mlc]


 
:jap: ok , de toutes facons ca n'etait que des suppositions... je me tairais la prochaine fois plutot que de raconter mes conneries  :D
 
merci pour tes eclaircissements. Juste une question, est ce que la plupart des jeux utilisent UDP ou c est specifique a peu de jeu comme quake ?

Reply

Marsh Posté le 10-07-2003 à 19:49:35    

xilebo a écrit :

merci pour tes eclaircissements. Juste une question, est ce que la plupart des jeux utilisent UDP ou c est specifique a peu de jeu comme quake ?

http://www.doc.ic.ac.uk/~cjp99/mrq [...] node3.html
T'as lu le titre ?

Reply

Marsh Posté le 10-07-2003 à 19:56:13    

Reply

Marsh Posté le 10-07-2003 à 20:03:52    


 

xilebo a écrit :

:jap: ok , de toutes facons ca n'etait que des suppositions... je me tairais la prochaine fois plutot que de raconter mes conneries  :D  


 
 :heink:  
 
 [:tapai]


Message édité par darklord le 10-07-2003 à 20:04:17

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 10-07-2003 à 20:05:58    

DarkLord a écrit :


 
 
 
 :heink:  
 
 [:tapai]


 
la violence ne resoud rien :)

Reply

Marsh Posté le 10-07-2003 à 20:29:36    

pascal_ a écrit :

+1
 
En gros :  
- TCP : c'est le téléphone : avantage tu es sûr que quand tu envois qqchose, ça arrive. Tu peux avoir plusieurs téléphone (plusieurs connection)
- UDP : c'est la poste. Tu envois, ça peux ne pas arriver (grève :D). Avantage très minime: c'est un poil plus rapide car celui qui reçoit ne transmet pas d'accusé
 
Edit : pour le temsp réel( Quake, serveur vidéo,..), on préfère utiliser UDP

Et on peut même ajouter que ca arrive dans l'ordre où ca a été émis :)  
Alors qu'en UDP, rien n'empêche un paquet d'en doubler un autre [:kokolekoko]


Message édité par mrbebert le 10-07-2003 à 20:30:34
Reply

Marsh Posté le 10-07-2003 à 20:50:57    

le fait que les paquets UDP n'arrivent pas dans l'ordre n'est pas du au fait qu'ils doivent traverser le "réseau" (chemins différents possibles pour deux paquets UDP) ?
 
si c'est en local, normalement les paquets étant envoyés dans l'ordre ils devraient arriver dans l'ordre non ? (sauf collision => perte du paquet)
 
 
 
je suis neuneu ! n'est-ce pas ?


---------------
oui oui
Reply

Marsh Posté le 10-07-2003 à 20:52:43    

Oui, en local, il y a de très fortes chances pour qu'ils arrivent dans l'ordre :D  
Mais ce n'est pas garanti, tu ne peux pas te baser sur cette hypothèse pour ton programme [:proy]

Reply

Marsh Posté le 11-07-2003 à 11:05:35    

En gros UDP : plus performant/rapide mais moins fiable
TCP : moins performant mais fiable
 
Pour mon cas j'utiliserai dc UDP :D
Bon OK merci a tous  :hello:

Reply

Marsh Posté le 11-07-2003 à 11:41:04    

giz a écrit :

En gros UDP : plus performant/rapide mais moins fiable
TCP : moins performant mais fiable
 
Pour mon cas j'utiliserai dc UDP :D
Bon OK merci a tous  :hello:  


 
ah bon, tu peux te permettre de perdre des infos en route, pour économiser 2ko/s de bande passante en ethernet ??
 
prends du tcp, il est tellement plus adapté a ton utilisation!

Reply

Marsh Posté le 11-07-2003 à 12:49:51    

apolon34 a écrit :


 
ah bon, tu peux te permettre de perdre des infos en route, pour économiser 2ko/s de bande passante en ethernet ??
 
prends du tcp, il est tellement plus adapté a ton utilisation!


 
Ben avt il ni avait pas de PC intermediaire (celui ci que je dois programmer) et ils utilisaient le protocole UDP (j'ai les sources) pour communiquer (entre serveur et simulateur) a croire qu'il ont fait un choix qu'ils jugeaient correct :/...ou bien ils ont fait ca a la rache  [:spamafote] . Il est vrai que ca depend de l'appli : je ne sais pas si on se doit d'avoir des communications hyper fiables :/. Il n'y a aucune personne pour me le dire  (aucun informaticien) [:spamafote]


Message édité par Giz le 11-07-2003 à 12:52:47
Reply

Marsh Posté le 11-07-2003 à 16:08:05    

giz a écrit :


 
Ben avt il ni avait pas de PC intermediaire (celui ci que je dois programmer) et ils utilisaient le protocole UDP (j'ai les sources) pour communiquer (entre serveur et simulateur) a croire qu'il ont fait un choix qu'ils jugeaient correct :/...ou bien ils ont fait ca a la rache  [:spamafote] . Il est vrai que ca depend de l'appli : je ne sais pas si on se doit d'avoir des communications hyper fiables :/. Il n'y a aucune personne pour me le dire  (aucun informaticien) [:spamafote]  


 
le probleme de savoir si tu as besoin de communications fiables n'est absolument pas informatique.
 
Si tu peux te permettre de perdre des infos de tes capteurs de temps en temps, alors tu PEUX utiliser udp.
 
je penses néanmoins que c'est se faire chier pour rien, il te suffit d'etablir une connection tcp vers ton serveur et de lui balancer les données.
 
Ca sera un tout ptit poil plus utilisateur de ressources que l'udp mais bien plus simple a programmer et tes communications seront sures

Reply

Marsh Posté le 11-07-2003 à 16:15:31    

Y'a peut-être un facteur temps qui joue :
 
Si les capteurs envoient des infos à haute fréquence, l'utilisation de TCP peut alors poser un problème en introduisant un temps d'arrêt dans les comunication alors que les données continues d'arriver des capteurs.
 
S'il y a un rique d'engorgement TCP est à proscrire.
 
C'est sans doute une des raisons qui fait que les jeux en réseaux utilisent UDP.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 17-07-2003 à 10:07:33    

UDP protocole en mode non connecté (datagram) ex : quake (tu peux rejoindre une partie en cours)
 
-> HalfLife il est en tcp ...
 
je dirais que l'udp il faut se taper la gestion des paquets, alors que le tcp, non. tout depend ce qu'on veut faire, mais une bonne gestion des paquets tcp peut se montrer meilleur qu'utiliser du tcp.


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 17-07-2003 à 10:08:58    

BlackGoddess a écrit :

UDP protocole en mode non connecté (datagram) ex : quake (tu peux rejoindre une partie en cours)
 
-> HalfLife il est en tcp ...
 
je dirais que l'udp il faut se taper la gestion des paquets, alors que le tcp, non. tout depend ce qu'on veut faire, mais une bonne gestion des paquets tcp peut se montrer meilleur qu'utiliser du tcp.


 
une guerre de retard. Ca a déjà été dit ;)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 17-07-2003 à 12:00:33    

BlackGoddess a écrit :

UDP protocole en mode non connecté (datagram) ex : quake (tu peux rejoindre une partie en cours)
 
-> HalfLife il est en tcp ...
 
je dirais que l'udp il faut se taper la gestion des paquets, alors que le tcp, non. tout depend ce qu'on veut faire, mais une bonne gestion des paquets tcp peut se montrer meilleur qu'utiliser du tcp.


 
ràv


Message édité par ceyquem le 17-07-2003 à 12:03:02
Reply

Marsh Posté le 17-07-2003 à 15:01:43    

UDP : protocole qui peut perdre des paquets. C'est là le principal interet pour les jeux. Typiquement, on parle ici des paquets de mise à jour de position qui ont cette tête là :
 
( au temps T0, l'objet O est à la position P )
 
Si tu perds le paquet et que TCP le renvoye 2 secondes plus tard, l'information fournie est dépassée de tt façon.

Reply

Marsh Posté le 17-07-2003 à 15:09:53    


 
ca aussi ca a été dit. Vous lisez les topics un peu avant de répondre?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed