Está en la página 1de 5

Datagramas UDP

UDP es bsicamente una interfaz de aplicacin para IP. No soporta confiabilidad, control de flujo o recuperacin de errores para IP. Simplemente sirve como "multiplexor/demultiplexor" para enviar y recibir datagramas, usando puertos para dirigir los datagramas como se muestra en la figura adjunta. Se pueden encontrar ms detalles sobre puertos en Puertos y Sockets.

UDP proporciona un mecanismo para que una aplicacin enve un datagrama a otra. La capa UDP es sumamente delgada por lo que tiene pocas sobrecargas, pero requiere que la aplicacin sea responsable de la recuperacin de errores y dems caractersticas no soportadas. Formato del Datagrama UDP

Cada datagrama UDP se enva con un nico datagrama IP. Aunque el datagrama IP se puede fragmentar durante la transmisin, la implementacin de recepcin IP lo re-ensamblar antes de presentarlo a la capa UDP. Todas las implementaciones IP estn preparadas para aceptar datagramas de 576 bytes, permitiendo un tamao mximo de cabecera IP de 60 bytes sabiendo que un datagrama UDP de 516 bytes lo aceptan todas las implementaciones. Muchas implementaciones aceptarn datagramas mayores, aunque no se puede asegurar. El datagrama UDP tiene una cabecera de 16 bytes que se describe en la figura siguiente:

DATAGRAMAS TCP
TCP se ocupa de convertir el flujo de datos saliente de una aplicacin de forma que se pueda entregar como fragmentos. La aplicacin traslada los datos a TCP y ste sita los datos en un buffer de envo. TCP toma un trozo de esos datos y le aade una cabecera, creando de esta forma un segmento. Este segmento es trasladado a IP para que lo entregue como un nico datagrama. El empaquetado de estos datos en trozos de tamao adecuado permite usar de una manera eficiente los servicios de transmisin.

FORMATO DEL SEGMENTO TCP


El segmento TCP est compuesto por los datos enviados desde la capa de aplicacin y la cabecera aadida por el protocolo de transporte. El segmento TCP es luego encapsulado en un datagrama IP para ser enviado por la capa de red. El formato de la cabecera TCP se detalla a continuacin:

CAMPOS DE LA CABECERA TCP


Puerto origen (16 bits): Identifica el puerto emisor. Puerto destino (16 bits): Identifica el puerto receptor.

Estos dos valores identifican la aplicacin receptora y la emisora, junto con las direcciones IP del emisor y receptor identifican de forma unvoca cada conexin. La combinacin de una direccin IP y un puerto es llamado socket. Es el par de sockets (direccin IP + puerto del emisor y direccin IP+ puerto del receptor) emisor y receptor el que especifica los dos puntos finales que unvocamente se corresponden con cada conexin TCP en internet.

Nmero de secuencia (32 bits): Identifica el byte del flujo de datos enviado por el emisor TCP al receptor TCP que representa el primer byte de datos del segmento.

Si consideramos un flujo de bytes unidireccional entre las dos aplicaciones, TCP numera cada byte con un nmero de secuencia. Este nmero de secuencia es de 32 bits sin signo que retorna a 0 al llegar a 232 -1. Cuando una conexin est siendo establecida el flag SYN se activa y el campo del nmero de secuencia contiene el ISN (initial sequence number) elegido por el host para esa conexin. El

nmero de secuencia del primer byte de datos ser el ISN+1 ya que el flag SYN consume un nmero de secuencia.

Nmero de acuse de recibo (32 bits): Contiene el valor del siguiente nmero de secuencia que el emisor del segmento espera recibir.

Una vez que la conexin ha sido establecida, este nmero se enva siempre y se valida con el flag ACK activado. Enviar ACKs no cuesta nada ya que el campo de acuse de recibo siempre forma parte de la cabecera, al igual que el flag ACK. TCP se puede describir como un protocolo sin asentimientos selectivos o negativos ya que el nmero de asentimiento en la cabecera TCP significa que se han recibido correctamente los bytes anteriores pero no se incluye ese byte. No se pueden asentir partes selectivas del flujo de datos (suponiendo que no estamos usando la opcin SACK de asentimientos selectivos). Por ejemplo si se reciben correctamente los bytes 1-1024 y el siguiente segmento contiene los bytes 2049-3072, el receptor no puede asentir este ltimo segmento. Todo lo que puede enviar es un ACK con 1025 como nmero de asentimiento, al igual que si llega el segmento 1025-2048 pero con un error de cheksum.

Longitud de cabecera (4 bits): especifica el tamao de la cabecera en palabras de 32 bits.

Es requerido porque la longitud del campo opciones es variable. Por lo tanto el tamao mximo de la cabecera est limitado a 60 bytes, m ientras que sin opciones el tamao normal ser de 20 bytes. A este campo tambin se le suele llamar data offset por el hecho de que es la diferencia en bytes desde el principio del segmento hasta el comienzo de los datos.

Reservado (3 bits): para uso futuro. Debe estar a 0. Flags (9 bits):

NS (1 bit): ECN-nonce concealment protection. Para proteger frente a paquetes accidentales o maliciosos que se aprovechan del control de congestin para ganar ancho de banda de la red. CWR (1bit): Congestion Window Reduced. El flag se activa por el host emisor para indicar que ha recibido un segmento TCP con el flag ECE activado y ha respondido con el mecanismo de control de congestin. ECE (1 bit): Para dar indicaciones sobre congestin. URG (1 bit): Indica que el campo del puntero urgente es vlido. ACK (1 bit): Indica que el campo de asentimiento es vlido. Todos lo paquetes enviados despus del paquete SYN inicial deben tener activo este flag. PSH (1 bit): Push. El receptor debe pasar los datos a la aplicacin tan pronto como sea posible. RST (1 bit): Reset. Reinicia la conexin. SYN (1 bit): Synchronice. Sincroniza los nmeros de secuencia para iniciar la conexin. FIN (1 bit): El emisor finaliza el envo de datos.

Tamao de ventana (16 bits): Tamao de la ventana de recepcin que especifica el nmero mximo de bytes que pueden ser metidos en el buffer de recepcin o dicho de otro modo, el nmero mximo de bytes pendientes de asentimiento. Suma de verificacin (16 bits): Checksum utilizado para la comprobacin de errores tanto en la cabecera como en los datos. Puntero urgente (16 bits): Cantidad de bytes desde el nmero de secuencia que indica el lugar donde acaban los datos urgentes. Opciones: Para poder aadir caractersticas no cubiertas por la cabecera fija. Relleno: Se utiliza para asegurarse que la cabecera acaba con un tamao mltiplo de 32 bits.

OPCIONES DE LA CABECERA

Opcin de tamao mximo de segmento (MSS)

Los segmentos enviados a travs de una conexin no son todos del mismo tamao. Sin embargo, los dos extremos pueden acordar un tamao mximo para los segmentos que sern transferidos en la conexin. En TCP se utiliza el campo "opciones" para conseguir negociar ciertos parmetros con la capa de transporte del otro extremo. Una de ellas permite que el protocolo especifique un tamao mximo de segmento (MSS), ste ser el nmero mximo de bytes que est dispuesto a recibir en un mismo segmento. Es importante por ejemplo cuando se conectan computadores con distintas capacidades de memoria ya que alguna de ellos puede ser ms restrictiva. En computadores conectados a una misma red fsica, TCP computar un MSS de tal forma que los datagramas IP se correspondan con la MTU de la red. Si los computadores no estn en la misma red fsica, se puede intentar descubrir cual es la MTU mnima en el camino que hay entre los dos extremos. La eleccin de un tamao mximo de segmento apropiado puede llegar a ser bastante difcil ya que si se escoge demasiado grande o demasiado pequeo no se conseguir una utilizacin apropiada de la red. Si es muy pequeo la gran proporcin entre las cabeceras y los datos har que se produzca un uso ineficiente del ancho de banda. Por otro lado, si es demasiado grande y viajan a travs de una red con MTU pequea, IP deber fragmentarlos y a diferencia de un segmento TCP, un fragmento no se puede confirmar o retransmitir de forma independiente por lo que todos los fragmentos debern llegar correctamente o se tendr que retransmitir todo el datagrama de nuevo. Tericamente el tamao ptimo de segmento ocurre cuando los datagramas IP llevan sementos lo ms grande posibles sin que haya necesidad de fragmentarlos.

Opcin de escalado de ventana

Como el campo "ventana" de la cabecera TCP tiene longitud 16 bits, el tamao mximo de la ventana sera de 64 Kbytes. Aunque ese tamao era suficiente para las primeras redes, lleg la necesidad de utilizar tamaos ms grandes en las redes ms avanzadas. Para conseguirlo se propuso la opcin de escalado de ventana. Consiste en tres octetos, un tipo, una longitud, y un valor de desplazamiento. Esencialmente el valor de desplazamiento especifica un factor de escalado que se le aplica al valor de la ventana. La opcin puede ser negociada cuando la conexin es

inicialmente establecida, en ese caso toda la comunicacin se asume con el tamao de ventana negociado. Por otra parte, la opcin puede ser especificada para cada segmento, en este caso el factor de escalado de la ventana vara de un segmento a otro.

Acuse de recibo selectivos

Aunque se puede decir que TCP es un protocolo bastante robusto tiene alguna que otra debilidad, una de ellas tiene que ver con los acuses de recibo, por ello ha sido incluida esta opcin. Como vimos anteriormente los asentimientos corrientes solo podan especificar hasta que nmero de secuencia se haba recibido de forma correcta. Con este nuevo servicio se pueden utilizar acuses de recibo selectivos y para comprobar que los dos extremos son capaces de llevar a cabo este servicio, se comprueba en la fase de establecimiento de la conexin

Opcin timestamp

Esta opcin fue inventada para hacer un cmputo del tiempo que tarda un paquete por la red entre los extremos de la conexin. Para TCP, el tiempo medio que tarde un paquete en llegar al otro extremo determinar cuanto tendr que esperar antes de retransmitir un paquete que no ha sido acusado de recibo. Puesto que las caractersticas de latencia en redes distintas son nicas, TCP deber adaptarse a ellas modificando convenientemente el valor de sus temporizadores de asentimiento.