Wednesday, November 26, 2008

Deine Indifferenz ist mir scheißegal!

Bien, la versión 4 del protocolo IP (Internet Protocol). Es el estándar actual de Internet para identificar dispositivos conectados a esta red.
Sin embargo, IPV4 no fue la primera versión del protocolo IP que existió, (esto es claro, debido a que es la versión 4!) Veremos ahora unas diferencias que existen entre la versiòn 4 y la versiòn 2, esto es IPV2.

En RFC 791,ó en IPV2, el mismo espacio de dirección así como los mismos campos de la cabecera IP (Las direcciones de destinatario y fuente) son usados para identificar y localizar, usualmente el identificador de un host es idéntico a su localizador,
este identificador es ùnico tanto en tiempo como en espacio.
En IPV4, es un hecho que las direcciones YA NO son globalmente únicas y no tienen un nivel de vida indefinido.

Tambièn han existido mucha evoluciòn en el modo de hacer routing desde que IP se especificò por primera vez [RFC 791]. Muchos de los principios de Routing han pasado a ña historia, algunos principios sí se han perservado, mientras que nuevas principios han sido introducidos.
Más información, se puede leer aqui->
  • Click hier,um etwas schön zu sehen!
  • Wednesday, November 19, 2008

    Von zeit zur zeit denke ich an dich und mich...

    No es sencillo en Windows, (a partir de Windows XP), sacar datos por el puerto paralelo.
    El sistema operativo simplemente no da permisos para hacerlo, los sistemas operativos Windows 2000 y XP no permiten que los programas tengan acceso directo a este puerto!
    Es mucho más fácil hacerlo en Linux Gnu, pero si uno está obsesionado con hacerlo en Windows XP, aquí están los pasos que deberá seguir para tener acceso a la escritura en este puerto:

    1. Baja y descomprime el archivo UserPort

    2. Copia el archivo userport.sys al directorio C:\WINDOWS\SYSTEM32\DRIVERS

    3. Ejecuta el programa userport.exe, y sin tocar nada mas, presiona el botón "Start", luego cierra el userport.Esto tendrás que hacerlo cada vez que reinicies el ordenador.

    4. Finalmente ejecuta el programa que daba problemas en modo de compatibilidad para “Windows 98”. ¿como se hace esto? Muy sencillo:

    Para establecer las propiedades de compatibilidad de un programa:

    * Haga clic en el botón derecho del ejecutable o en el acceso directo al mismo, y haga clic en Propiedades.
    * Seleccione la casilla de Ejecutar este programa en modo compatibilidad.
    * Seleccione de la lista el sistema operativo Windows 98.
    * Ejecute el programa de nuevo cuando haya terminado de cambiar la configuración.

    Ahora bien, se "supone" que con esto debemos poder tener acceso al puerto paralelo, claro está que es necesario probarlo, para hacerlo se puede hacer un sencillo programa en C++, y usar la siguiente función:
    _outp(a,b);
    Esta función, localizada en la librería de Conio.h, (uuuh Conio...gag me with a spoon!) recibe 2 parámetros, " a" es el puerto al cual se desea escribir, en este caso es el puerto paralelo y por ende se pondría aquí 0x378, que es el número asigando a este puerto, y "b", que es el valor que se desea enviar a esta puerto. b es un valor entero, y el valor máximo que puede tomar es 255,esto se debe a la configuración del puerto paralelo que usé, contaba con 8 bits de salida, y los demás representaban tierra y uno extra la señal de storbe.
    Recordemos que el bianrio 11111111 equivale a 255, y por ende es el mayor valor que se puede representar con esta salida, ahora bien el menor valor es cero, y es cuando tenemos 00000000.

    Un programa simple, para verificar que nuestro puerto paralelo está funcionado adecuadamente se presenta a continuación: (Este programa lo corrí en Visual Studio 2003)


    #include
    #include
    #include
    int main()
    {
    char c='s';
    int orden, alphacommand = 1, betacommand = 2;

    while (tolower(c)=='s')
    {
    printf("\n1 = alphacommand\n");
    printf("2 = betacommand\n");
    printf("Elija el comando (1/2): ");
    scanf("%i",&orden);
    if (orden==alphacommand)
    _outp(0x378, 0x1);
    else if (orden==betacommand)
    _outp(0x378, 0x0);

    printf("\nComando Realizado.\n\nDesea Continuar?:(S/N)");
    c = getch();
    }

    return 0;
    }

    El programa anterior cuando se escoje el alfacomando, prenderá un bit del puerto paralelo, con un multimetro se puede verificar que esto se lleve acabo realmente.
    Esperemos que este post ahorre el tiempo de las personas...und sie können mit dieser Zeit eine gute Liebe finden





    Tuesday, November 18, 2008

    Un mensajito no de amor, sino de ICMP...:(

    Los errores de mensajes ICMP, se usan por los routers y los hosts ó clientes, para decirle a un dispositivo enviador de datagramas, que se tuvieron problemas recibiéndolo.
    En la versión original de ICMP, 5 diferentes mensajes de error son definidos. Estos mensajes se describen en el estándar ICMP, RFC 792.
    Veamos ahora los mensajes de error que presenta ICMPv4:

    Mensaje de "Destino Inalcanzable" : Los cuales se envían cuando existen fallos en el envió del datagrama.
    Seamos reales, el protocolo de internet es uno que no es muy confiable, no existe garantía que un datagrama que es enviado por dispositivo hacia otro vaya realmente a llegar. Toda la red de clientes y routers hará su mayor esfuerzo para entregar un datagrama, pero es posible que no llegue a su destino por un sin fin de razones. Claro está, que los dispositivos que se encuentran en una red IP entienden esto, y se diseñan adecuadamente.

    Ahora bien, a pesar de que IP está diseñado para fallar, no se deben tomar estas fallas a la ligera. Se necesita un mecanismo que le diga al dispositivo fuente, que algo "malo" está sucediendo, además se le deberá decir la razón de ello.
    En IPV4 este servicio se brinda através de la transmisión del mensaje "Destino Inalcanzable". Estos mensajes, incluyen la porción de los datagramas que no se pudieron entregar, esto ayuda a que emisor entienda en dónde se tuvo el error.

    Se muestra a continuación el formato que tiene el mensaje de Destino Incalcanzable

    Grafik

    Se muestran a continuación códigos de los subtipos de errores (Error Subtype) que presenta este tipo de mensajes:

    Valor de código

    Subtipo de mensaje

    Descripción

    0

    Red inalcanzable

    El datagrama no pudo ser entregado a la red que se especificó en el campo de ID de red en la porción de la dirección IP. Se peude deber a un problema en el routing, aunque también puede ser causado por tener una mala dirección

    1

    Cliente inalcanzable

    El datagrama logró llegar a la red que se especificó, mas no pudo ser entregado al host que se indicó en la dirección. Esto suele ser de nuevo un problema relacionado con el ruteo.

    2

    Protocolo inalcanzable

    El protocolo que se especifico en el campo del protocolo fue inválido para el cliente al cual el datagrama fue entregado.

    3

    Puerto inalcanzable

    El puerto destino, especificado en la cabecera UDP ó TCP fue inválido.


    Mensajes de Fuente sofocada: Se utiliza para decirle al dispositivo que deberá enviar los datagramas a una menor tasa.
    Si un destinatario, está recibiendo datagramas a una tasa relativamente lenta, es posible que procese cada uno de los datagramas al vuelo, en el momento en el que los recibe. Sin embargo, la recepción de datagramas en una red tienede a ser disparejo, debido a las tasas altas y bajas de tráfico existente. Para esos momentos en los cuales se reciben datagramas a una frecuencia mayor que en la que se pudiesen estos procesar, todos los dispositivos cuentan con un buffer en donde pueden temporalmente guardar a los datagramas que reciben, se guardarán allí hasta que ya tengan tiempo para procesarlos.
    Sin embargo el buffer es en si de un tamaño limitado, y pueden existir casos en los que el tráfico se recibe tan rápido que el buffer se llena. Cuando esto sucede, el dispositivo se ve obligado a desahacerse, descartar todos los nuevos datagramas que le lleguen. El receptor deberá por ende enviar un mensaje de retroalimentación a la fuente y explicarle su problema.

    En IPv4,un dispositivo que es obligado a "tirar" datagramas debido a una congestion, le envía al receptor retroalimentación a la fuente, mediante los mensajes de Sofocamiento de la fuente. Es una manera cortés de decirle a la fuente: " ¡¡No tan rápido!!" . Cuando un dispositivo recibe este tipo de mensajes, sabe que debe disminuir la frecuencia a la cual envía los datagramas al receptor en cuestión.
    Se muestra continuación el formato de este tipo de mensaje:


    Nombre del Campo

    Tamaño (bytes)

    Descripción

    Tipo

    1

    Tipo: Identifica el tipo de mensaje ICMP. Para mensajes de Sofocamiento de fuente, este valor se pone en 4.

    Código

    1

    Code: Identifica el subtipo de error siendo comunciado, en este caso no se usa y se deja en 0.

    Checksum

    2

    Checksum: Campo de 16 bits usado en la cabecera del ICMP

    SinUso

    4

    SinUSO: 4 bytes que se dejan en blanco y no se usan

    Porción original del Datagrama

    Variable

    Porción original del Datagrama: Incluye toda La cabecera así como los primero 8 bytes del datagrama que fueron descartados debido a congetionamiento.





    Mensaje de tiempo excedido: Se envía cuando un datagrama ha estado viajando por la red demasiado tiempo, ó cuando se está tardando mucho en unir los distintos fragmentos del datagrama, para re esamblarlo.

    Mensaje de Redirección: Este mensaje permite que el router dé retro alimentación respecto a mejores rutas que existen para llegar a un cliente.

    Mensaje de Problema con los Parámetros: Este es un mensaje genérico, usado para todos los demás problemas que pudiesen existir que no están cubiertos en los otros mensajes de error de ICMP.
    Si un dispositivo encuentra problemas serios con cualquiera de los parametros dentro de la cabecera de un datagrama IP, deberá descartar o deshacerse del datagrama. AHora bien, debido a que se trata de una situación crítica, deberá comunciarse con el emisor del datagrama y reportr su problema. Esto se logra através del uso del mensaje "Problema de Parametro" que ICMPv4 brinda.
    Este es un tipo de mensaje que peude ser usado, para indicar cualquier tipo de error que exista en la cabecera de un datagramaIP.sage had the problem.



    Nombre del Campo

    Tamaño (bytes)

    Descripción

    Tipo

    1

    Tipo: Identifica el tipo de mensaje ICMP, este valor se pone en 12.

    Código

    1

    Code: Identifica el subtipo de error siendo comunciado, se muestra una tabla abajo de esta que indica el tipo de suberrores que pueden existir.

    Checksum

    2

    Checksum: Campo de 16 bits usado en la cabecera del ICMP

    Apuntador

    1

    Apuntador: Apunta a la localización del datagrama donde se ocasionó el problema.
    Se utiliza este campo, sólo cuando el valor del código es 0.

    SinUso

    4

    SinUSO: 4 bytes que se dejan en blanco y no se usan

    Porción original del Datagrama

    Variable

    Porción original del Datagrama: Incluye toda La cabecera así como los primero 8 bytes del datagrama que fueron descartados debido a congetionamiento.





    Ahora se muestran los parámetros para interpretar los códigos de error


    Valor del Códig

    Tipo de Submensaje

    Descripción

    0

    El apuntador indica el error

    El apuntador indica donde se localiza el error.

    1

    Falta un campo requerido

    Debido a que el apuntador no puede señalar donde existió este tipo de error, debido a que el campo NO existe, es necesario manejarlo de este modo.

    2

    Longitud incorrecta

    La longitud total de datagrama fue incorrecta, lo cual indica un problema general con todo el datagrama. De nuevo el apuntador no es de mucha ayuda.

    Monday, October 06, 2008

    Why I no longer hate networking, as much as before

    Creo, que los algoritmos de deodificación, me agradan bastante. ¿Ya conocían el de Viterbi?
    Está bastante interesante como funciona, usa likelihood probabilities, en Aprendizaje o Machine Learning, se usa mucho para diversos métodos de aprendizaje.
    No conocía en lo personal yo el de Markov, y de hecho Viterbi se basa en este método para su funcionamiento ,Belive it or no, es bastante straight foward.
    Je, veamos sí es tan cierto,intentaré explicarlo:

    Viterbi: Es un algoritmo de decodificación, desarrollado a finales de 1960 por Andrew Viterbi. Los decodificadores Viterbi, han sido la manera más efectiva de decodificar comunciaciones de voz inalámbricas en transmisiones satelitales y de celular. Viterbi saca ya sea 0 o 1, dependiendo de lo que estima, que es el bit de entrada.El algoritmo de Viterbi, brinda una manera eficiente de encontrar la secuencia de caracetres con mayor probablidad a posteriori, (MAP)

    Para ilustrar como funciona el algorimto de Viterbi, daré un pequeño ejemplo:
    Assúmase, que se tiene un alfabeto de 4 letras, A={T,A,C,O}, y que se tiene un Optical Character Readers , un lector de caracteres, el cual intentará leer palabras que sean válidas del inglés. Supónase, que la cadena observada por la maquina OCR es: Z= -CAT-, donde el "-" denota espacios en blanco. Los vectores característicos z1, z2, and z3 son obtenidos cuando el extractor de característica detecta a C,A,T. (GATO en español, y es una palabra válida del idioma inglés.)
    La información disponible obtained y relevante que el algoritmo Viterbi utliza para tomar una decisión, se expresa en término de la gráfica direccionada, que se muestra a continuación. Todos los nodos, excpetos los que están en blanco "-", poseen una probablidad ascosciada a ellos.

    Denker



    Vemos, de la figura , que cualquier camino , de un nodo principio, hasta un nodo final, represneta una secuencia de letras, mas no necesariamente una palabra válida. Se trata de hallar la sequencia de letras que maximizen el producto de probabilidades en su camino. Esto se puede lograr, al porcesar los nodos verticales, paso por paso de izqueirda a derecha. De este modo, si se agregan los logaritmos de las orillas, y las probabildiades de nodo, del camino, obtenemos:

    gGAT(z1,Z2,Z3)=logp(z1|C)+logp(z2|A)+ logp(Z3|T)+log[P(C|-)P(A|C)P(T|A)P(-|T)]


    Con este modelo, las letras del idioma inglés se visualizan como salidas, de un proceso de M estados de Markov, donde M es el número de caracteres distinguibles, si se trata de letras, el número será de 26, ya que el alfabeto del idioma inglés, pose 26 letras. En cada etapa de la secuencia (palabra), las 26 más probables secuencias se procesarán, la secuencia más probable que terminé en A, la secuencia más probable que termine en B, etc. En la etapa final, la secuencia más probable es seleccionada.
    Denker



    Saturday, September 27, 2008

    Stay home saturday...

    Sometimes I just can't be bothered with the Bingo or going down the local strip joint and just want a quiet night in and sometimes I don't get a choice.

    I sometimes have to make up an excuse to friends if I want to stay in as they would not accept the truth. They think I'm sad if I forsake the chance of fun and frolics (and maybe prizes) or having some jigglies thrust in my face for a night in at Casa Ham&Onion.

    Do you agree with my friends and think it is sad to stay in on a Saturday night? Or do you think it is fine enjoy one's own company and the telly with a plate of chips and some neopolitan icecream?

    I don't tell them about the Babyliss Foot Spa I have.

    Saturday, September 20, 2008

    Cantando con Radio Felicidad...

    My 64 bit Kubuntu, finally has the freaking flash plug in!!
    This webpage is really good :
    https://help.ubuntu.com/community/AMD64/FirefoxAndPlugins?action=show&redirect=Firefox2AMD64Flash9Java

    It explains everything soooo clearly! step by step, for dummies like mua.
    To celebrate, let's sing an old fashion love song:





    Wednesday, September 17, 2008

    Battery Mattery...

    Pilas: Se puede leer el nivel de las pilas, con el reporte 0x20. Se recibe este reporte, cuando se conecta algo estern al Wiimte. O se peude solicitar, al enviar un reporte 0x15, con el payload puesto en cualqueir valor , aunque el bit 1 debe estar encendido. (a1) 20 00 00 02 00 00 C0
    el 0xC0, al final indica el nivel de pila. Depende mucho, de la marca, ya que algunas pueden rgistrar valores de 0xC8, al estar totalmente cargadas.
    Es importante notar, que se puede obtener este mensaj sin solicitud, cuando esto suceda, se tendrá que enviar un reporte 0x12 con el numero de reporte deseado, para poder recibir información nueva y de otro tipo.