Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





UDP

Iniciado por Lord Trancos, 08 de Octubre de 2002, 11:10:55 PM

« anterior - próximo »

Lord Trancos

                                Tengo un par de dudas acerca de UDP.

Si envio paquetes UDP """"bastantes grandes"""" (500 bytes o asin), existe la remota posibilidad de que alguien me los fragmente antes de que llegen a la maquina de destino ? Y si son paquetes pequeños ? Corro el riesgo de que alguien pueda agrupar varios paquetes pequeños en uno mas grande ?

En resumen, a parte del riesgo de perder algun paquete o de que los paquetes no llegen en el orden en que fueron enviados, hay que tener algo mas en cuenta a la hora de enviar paquetes UDP a traves de Internet?

:)                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

RePAnd

                                Hola,

Pues ahora no tengo muy fresco el tema de UDP, pero a ver si te puedo ayudar.
Hay un termino llamado MTU (Maximun Transfer Unit, eso creo ;P) y esta asociado a una red. Indica el tamaño máximo de paquete que puede pasar por esa red. Habitualmente es 1500 bytes en ethernet, creo recordar. Si tu envias por internet un paquete, independientemente de si es TCP o UDP, este paquete puede ser fragmentado porque por la red que pasa hay un MTU menor q en la red de partida. Si los paquetes son pequeños está claro que hay muchas menos posibilidades de fragmentación. Si no recuerdo mal, TCP incorpora un mecanismo de optimizacion del tamaño del paquete para evitar la fragmentación.

Sobre el riesgo de que unan los paquetes no entiendo bien a que te refieres.

Y respecto a tu ultima pregunta, no te debes preocupar, porque la fragmentacion es a nivel de IP (si es q no vuelvo a recordar mal)

Ahora llegará el gay del ethernet y dira que todo lo que he puesto es mentira ;PP

ethernet ;**

venga, un saludo

PD: tengo q repasar mis apuntes de redes xDD                                

Gunder

                                Hola,

si alguien, que no se quien, te parte los paquetes en paquetes mas pequeños, alguien que no se tampoco quien los juntará.

Y siguiendo esta normal, si alguien que no se quien te junta paquetes pequeños en uno mas grande, alguien que tampoco se quien, te los partira y te los entregara como tu los has enviado.


Solo has de tener en cuenta el que UDP usa datagramas y TCP usa striming. Osea que en el primer caso, el protocolo te entraga los mensajes tal y como fueron enviados y el TCP los entrega como un chorro de bytes.

Ale,
Gunder.                                
riticar, critica hasta el mas tonto.

plugin

                                Pues si. Totalmente conforme con lo que dice Gunter. La fragmentación o unión de paquetes no va a ocurrir y, en el caso de que ocurra, a ti te llegará EXACTAMENTE lo que has mandado. En UDP la fragmentacion/union de paquetes la controlas tu. (Al menos la aplicacion que estoy haciendo y por la cual puse un post hace poco, funciona a la perfeccion, me llega exactamente lo que mando, sin fragmentar ni nada...)


Saludos
--plugin                                

Lord Trancos

                                gracias chicos ;)                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.

ethernet

                                -El q se encarga de fragmentar paquetes es IP y lo hace en funcion de la MTU entre otras cosas como bein decia repand (;**)

-Otras cosas q debes tener en cuenta:
·control de flujo (no vayas a flodear al server o viceversa)
·perdida de paquetes
·los paquetes pueden llegar descolocados
·para los usuario de windows: en microsoft hay unos consejos de como usar winsock eficientemente, algunos muy utiles XD

-otras cosas q se deben tener en cuenta en general:
·no nos cebemos con UDP, para un monton de cosas TCP es tan valido y eficiente como UDP y no hay q liarse haciendo nada.
·el lag: para evitarlo se "predicen" los movimientos. Para mas info mirad la funcionn  CL_Frame del codigo del quake2, alli se me claramente como lo hace (tb mirar SV_Frame)
·por ultimo, mira el codigo fuente del quake2 (o quakeworld) q alli se aprenden un monton de cosas (parece mentira q funciona)

Saludos                                

Lord Trancos

                                Ok, gracias por los consejos :)                                
i>SaludoteZ de Lord Trancos!
http://www.dxlab.tk - http://dxlab.host.sk - programación de DirectX con Delphi.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.