perdón por tardar tanto, soy Luke en otro ordenador.
Sí, efectivamente los routers bloquean todo lo UDP también, pero lo que pasa es, al ser un poco diferente las conexiones udp a las tcp, (udp no tiene conexiones en sí, son más bien paquetes sueltos...) bueno, pues para que se abra un canal bidireccional entre dos dispositivos que están detrás de NAT esto sólo es posible hacerlo con udp, ya que la idea de conexión es más abierta y es posible si se hacen un par de cosas (mandar desde los dos lados al lado opuesto paquetes por el mismo puerto) pues haciendo esto es posible que ambos routers NAT abran una conexión (bueno, no conexión... más bien una "entrada" en su tabla NAT para que todo lo que llegue futuramente por ese puerto vaya a una IP interna determinada) ya que con UDP tienen que "adivinar" más que con TCP. Esto no es posible con TCP ya que si mandas paquetes a la ip opuesta el router del otro lado se queda "y .. que quieres que haga con esto" ya que para abrir una conexion tcp no basta con tirar paquetes, en tcp hay que establecer una conexion en condiciones.
Las conexiones directas (entre ordenadores no detrás de NAT, o uno detrás de NAT y el otro no) por supuesto van por TCP ya que es mucho mas fiable blahblah y es posible ya que uno de los dos lados siempre será capaz de aceptar conexiones entrantes.
Cuando no es posible ninguno de los anteriores casos va por TCP, por proxy de Microsoft.
No se si está suficientemente claro.... eso espero.