Foros - Stratos

Programadores => Programación en red => Mensaje iniciado por: Lord Trancos en 08 de Octubre de 2002, 11:10:55 PM

Título: UDP
Publicado por: Lord Trancos en 08 de Octubre de 2002, 11:10:55 PM
                                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?

:)                                
Título: UDP
Publicado por: RePAnd en 09 de Octubre de 2002, 12:40:18 AM
                                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                                
Título: UDP
Publicado por: Gunder en 09 de Octubre de 2002, 10:07:06 AM
                                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.                                
Título: Totalmente de acuerdo con Gunter
Publicado por: plugin en 09 de Octubre de 2002, 11:42:06 AM
                                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                                
Título: UDP
Publicado por: Lord Trancos en 09 de Octubre de 2002, 04:45:06 PM
                                gracias chicos ;)                                
Título: UDP
Publicado por: ethernet en 14 de Octubre de 2002, 01:34:14 AM
                                -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                                
Título: UDP
Publicado por: Lord Trancos en 14 de Octubre de 2002, 02:07:43 AM
                                Ok, gracias por los consejos :)