sábado, 18 de julio de 2015

Los protocolos de transporte TCP y UDP

User Datagram Protocol (UDP)

Este protocolo es un protocolo no orientado a conexión. Es decir, cuando una maquina envía paquetes a otra, la conexión es unidireccional. La transferencia de datos se realiza sin crear una conexión previa con la maquina destino, y esta ultima recibe los datos sin enviar una confirmación al emisor. Dicho proceso se debe a que la encapsulación de datos enviados por UDP no permite transmitir la información relacionada al emisor, debido a esto, el destinatario no conocerá los datos del emisor, excepto su IP.

El protocolo UDP se utiliza por ejemplo cuando se necesita transmitir voz o vídeo y resulta más importante transmitir con velocidad que garantizar el hecho de que lleguen absolutamente todos los bytes.

Algunas Características:

  • Cada datagrama se envía de forma independiente del resto.
  • UDP no ofrece ningún mecanismo que permita garantizar al remitente que todos los datagramas hayan llegado al destino.
  • Los datagramas se envían sin que el propio datagrama ni su orden estén etiquetados, por lo que, mediante la información aportada por el protocolo UDP, no se puede identificar en el destino ni el orden de los datagramas ni si alguno ha llegado duplicado.
  • No existe mecanismo alguno que evite las congestiones.
  • No dispone de ningún mecanismo de fragmentación ni de gestión de fragmentos del tamaño adecuado para poder ser encapsulados mediante datagramas UDP.
  • Permite grandes velocidades de transferencia, sin ofrecer garantías de seguridad.

Cabecera UDP


La cabecera UDP consta de 4 campos de los cuales  2 son opcionales (el puerto origen y el checksum). Los campos de los puertos de origen y destino son campos de 16bits que identifican el proceso de origen y recepción. Ya que UDP carece de un servidor de estado y el origen UDP no solicita respuestas, el puerto origen es opcional, En caso de no ser utilizado, los 16bits deben ser puestos en 0. A los campos del puerto destino le sigue un campo obligatorio que indica el tamaño en 



bytes del datagrama UDP incluidos los datos, siendo el mínimo 8 bytes. El campo restante es el checksum, de 16bits que abarca una pseudo cabecera IP, la cabecera UDP, los datos y ceros hasta completar un múltiplo de 16. Este campo es opcional en IPv4 (mandatario en IPv6).

Transmission Control Protocol (TCP)

Contrariamente a UDP, este protocolo está orientado a conexión. Cuando una maquina A envía datos a una maquina B, B es informada de la llegada de datos y confirma a A su buena recepción. Aquí interviene el control CRC de datos que se basa en una ecuación matemática que verifica la integridad de los datos transmitidos. De esta manera, si los datos recibidos son corruptos, el protocolo TCP le permite al destinatario solicitar al emisor que vuelva a enviar los datos que estaban corruptos.

Algunas Características

  • Permite conexiones lógicas punto a punto
  • Multiplexación de conexiones, es decir, varias aplicaciones transmitiendo datos simultáneamente.
  • El host origen es capas de realizar fragmentación de los bloques de datos.
  • El host destino reordena y reconstruye los bloques.
  • Permite la detección de errores de transmisión.
  • Mediante el intercambio de mensajes se garantiza una entrega fiable de paquetes.
  • Existe la retransmisión automática en caso que el destino detecte un error.
  • De haber paquetes duplicados, son eliminados.
  • El protocolo ofrece un control de flujo y congestiones de paquetes.

Cabecera TCP

  1. Puerto origen - 16bits.
  2. Puerto destino - 16bits.
  3. Numero de secuencia - 32bits. Identifica el byte del flujo de datos enviado por el emisor TCP al receptor TCP que representa el primer byte de datos del segmento.
  4. Numero de acuse de recibido - 32bits. Contiene el valor del siguiente numero de secuencia que el emisor del segmente espera recibir.
  5. Longitud de cabecera - 4bits. Especifica el tamaño de la cabecera en palabras de 32bits. Es requerido porque la longitud del campo "opciones" es variable. Por lo tanto el tamaño máximo de la cabecera está limitado a 60bytes. Mientras que sin opciones el tamaño normal sera de 20bytes.
  6. Reservado - 3bits. Guardados para uso futuro, deben estar en 0.
  7. Flags - 9bits:
    1. NS: ECN-nonce concealment protection. Para proteger frente a paquetes accidentales o maliciosos que se aprovechan del control de gestión para ganar ancho de banda de la red.
    2. CWR: 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 congestión.
    3. ECE: Para dar indicaciones sobre congestión.
    4. URG: Indica que el campo del puntero urgente es válido.
    5. ACK: Indica que el campo de asentimiento es válido. Todos lo paquetes enviados después del paquete SYN inicial deben tener activo este flag.
    6. PSH: Push. El receptor debe pasar los datos a la aplicación tan pronto como sea posible, no teniendo que esperar a recibir más datos.
    7. RST: Reset. Reinicia la conexión, cuando falla un intento de conexión, o al rechazar paquetes no validos.
    8. SYN: Synchronice. Sincroniza los números de secuencia para iniciar la conexión.
    9. FIN: Para que el emisor (del paquete) solicite la liberación de la conexión.
  8. Tamaño de ventana o ventana de recepción - 16bits: Tamaño de la ventana de recepción que especifica el número máximo de bytes que pueden ser metidos en el buffer de recepción o dicho de otro modo, el número máximo de bytes pendientes de asentimiento. Es un sistema de control de flujo.
  9. Suma de verificación - 16bits: Checksum utilizado para la comprobación de errores tanto en la cabecera como en los datos.
  10. Puntero urgente - 16bits: Cantidad de bytes desde el número de secuencia que indica el lugar donde acaban los datos urgentes.
  11. Opciones: Para poder añadir características no cubiertas por la cabecera fija.
  12. Relleno: Se utiliza para asegurarse que la cabecera acaba con un tamaño múltiplo de 32 bits.

No hay comentarios:

Publicar un comentario