3. PROTOCOLOS DE TRANSPORTE :

Las conexiones de red son orientadas a conexión o sin conexión. Así un protocolo orientado a conexión debe establecer un enlace con otra aplicación antes de que se de cualquier tipo de comunicación. En cambio uno no orientado a conexión no establece un enlace antes de transmitir, con lo que cada mensaje que envie deberá incluir toda la información necesaria para su posterior entrega.

 

La familia de protocolos TCP/IP contempla dos protocolos de transporte UDP y TCP :

- Servicio sin conexión : UDP.

- Servicio orientado a conexión : TCP

 

UDP es el más sencillo de los dos , pero no ofrece fiabilidad alguna porque dispone de un control de error muy pobre comparado con TCP , con UDP no podemos asegurar que los datos enviados lleguen a su destino.

 

En cuanto a la forma de transmisión , TCP utiliza para transmitir el flujo de bytes , es decir, transmite toda la información como una serie de bytes continuos. Mientras que UDP utiliza datagramas, transmite los datos en unidades individuales.

 

Entre otras funciones a destacar de los protocolos de transporte :

- Extienden el esquema de direccionamiento de IP.

- Se encargan también de la segmentación de los mensajes y de su posterior reensamblado. Asi mismo también supervisan la llegada en orden de los mismos.

- Control de errores y control de flujo basado en créditos. El receptor informa al emisor del espacio de almacenamiento disponible. El emisor no debe enviar mas información de la que se le ha permitido.

 

La estructura de los mensajes de control de los protocolos de este nivel se compone de :

a) Un identificador de host por medio de su dirección IP.

b) Un identificador de proceso por medio de la asignación de un puerto.

c) Un identificador del protocolo que se está utilizando : TCP o UDP.

 

 

3.1 UDP (User Datagram Protocol) :

Es un protocolo de transporte no orientado a conexión que proporciona un servicio de datagramas de usuario, que se caracteriza por no incluir mecanismos que eviten la perdida de mensajes , es decir , no ofrece fiabilidad. Lo cual implica que las aplicaciones que lo utilicen deben responsabilizarse de este tipo de problema.

 

Las direcciones de transporte UDP , añaden un número de puerto a la dirección IP . Los números de puerto identifican a los procesos emisor y receptor.

 

UDP se utiliza a veces como sustituto de TCP, cuando no hay que utilizar los servicios de este. UDP sirve como interfaz de aplicación simple para IP. Como multiplexor / demultiplexor del envío y recepción del tráfico de IP.

 

3.1.1 Formato del datagrama UDP :

El campo longitud mensaje incluye a la cabecera y a los datos del mismo. El campo checksum es opcional, cuando no se emplea se pone a cero.

0................................15

16............................................31

Puerto origen UDP

Puerto destino UDP

Longitud mensaje

Checksum

AREA DE DATOS

 

 

El encabezado UDP cuenta con sólo ocho bytes de longitud. Los campos de puerto son valores enteros de 16 bits que representan un puerto de protocolo.

 

Puerto origen: Identifica al puerto del proceso de aplicación remitente. Es opcional , si no se utiliza se pone a cero.

Puerto destino: Identifica el proceso de recepción en el ordenador de destino.

Longitud mensaje: Indica la longitud del datagrama de usuario, incluyendo la cabecera y los datos. La longitud mínima es de 8 octetos.

Checksum: Contiene el valor del complemento a 1 en 16 bits del complemento a 1 de la suma de la pseudocabecera de IP, la cabecera de UDP y los datos.

Aunque el checksum (Suma de Comprobación) de UDP incluye los datos de UDP en sus calculos , el protocolo no necesita que se calcule e incluya en el encabezado UDP, contrariamente a lo que ocurre con IP y TCP, ya que ambos si que necesitan de ese checksum en sus respectivos encabezados.

 

 

El módulo UDP acepta los datagramas entrantes , para posteriormente ordenarlos y distribuirlos de acuerdo con los números de puerto del destino.

 

Aquí se presenta una relación de puertos UDP reservados por algunos servicios :

 

 

Numero

Clave

Descripción

11

Users

Usuarios activos

13

Daytime

Fecha y hora del sistema

53

Domain

Servidor de nombres de dominio

67

Bootps

Servidor protocolo "bootstrap"

68

Bootpc

Cliente protocolo "bootstrap"

69

Tftp

Trivial File Transfer Protocol

 

 

 

3.2 TCP (PROTOCOLO DE CONTROL DE TRANSPORTE) :

Ciertas aplicaciones de usuario requieren asegurarse de que todos los datagramas han llegado correctamente a su destino. Los mecanismos para realizar estos servicios residen en TCP. TCP debe ser capaz de establecer y gestionar sesiones (conexiones lógicas) entre los usuarios locales y los remotos. TCP , por tanto debe tener conocimiento de las actividades de los usuarios para dar soporte a la transferencia de sus datos por la interred.

 

TCP reside en el nivel de transporte del modelo de niveles convencional, situado entre IP y los niveles superiores. Está diseñado para residir en los ordenadores o en las maquinas que se ocupan de conservar la integridad de la transferencia de datos entre extremos. Lo más común es que TCP resida en los ordenadores de usuario.

 

TCP es quién se tiene que encargar de las tareas de fiabilidad , control de flujo, secuenciamiento, aperturas y cierres. Puede soportar otros protocolos , como los de aplicación FTP (Protocolo de transferencia de archivos) y SMTP (Protocolo de transferencia de correo simple).

 

 

3.2.1 Caracteristicas de TCP :

TCP es un protocolo orientado a conexión . Esto quiere decir que TCP mantiene información del estado de cada cadena de datos de usuario que circula por él. Es responsable de la transferencia de datos entre extremos por la red o redes hasta la aplicación de usuario receptora. Es responsable de la transferencia fiable de cada uno de los caracteres que recibe del nivel superior correspondiente.

 

Cada octeto transmitido lleva asignado un número de secuencia. El módulo TCP receptor utiliza una rutina de checksum para comprobar la posible existencia de daños en los datos producidos durante el proceso de transmisión. Si son aceptables , se envia una aceptación positiva (ACK) al módulo TCP remitente. En cambio , si los datos han resultado dañados , el receptor los descarta y utiliza un número de secuencia para informar al remitente del problema. También , TCP emplea temporizadores para garantizar que no transcurre un lapso de tiempo demasiado grande antes de la transmisión de aceptaciones desde el nodo receptor y/o de la transmisión de datos desde el nodo transmisor.

 

TCP recibe datos de un protocolo de nivel superior de forma orientada a cadenas, es decir, se envian caracteres separados y no bloques, tramas, datagramas , etc . Los datos son enviados byte a byte , y cuando llegan al nivel TCP , los bytes son agrupados para formar segmentos . Dichos segmentos se transfieren a IP para su transmisión.

 

TCP , también se encarga de comprobar la duplicidad de los datos . Descarta los datos redundantes que puedan aparecer en la interred . Además soporta el concepto de función push . Esta función se utiliza cuando una aplicación desea asegurarse de que todos los datos que han pasado al nivel inferior se han transmitido.

Emplea un esquema de aceptación inclusiva, el número de aceptación acepta todos los octetos hasta e incluyendo el del número de aceptación menos uno. El módulo TCP receptor se ocupa también de controlar el flujo de los datos del transmisor, lo que es muy útil para evitar el desbordamiento de los dispositivos de almacenamiento y la saturación de la máquina receptora. La idea que utiliza TCP se basa en enviar al dispositivo transmisor un valor de "ventana". Se permite que el transmisor envie un número máximo de bytes igual al valor de su ventana. Cuando se ha llegado a ese valor , la ventana se cierra y el transmisor debe interrumpir el envío de datos.

TCP proporciona transmisión en modo duplex integral entre las entidades que se comunican , así la transmisión se puede efectuar en ambos sentidos sin necesidad de esperar la señal de indicación de cambio de sentido. Aparte de todo esto , también permite especificar niveles de seguridad y prioridades de las conexiones.

Una conexión TCP está identificada por los dos extremos que conecta :

 

Ej : (158.42.53.1 , 1151) y (158.42.53.5 , 1375) (Dirección IP, Puerto)

 

Hay que tener en cuenta que un mismo número de puerto puede estar siendo utilizado en distintas conexiones.

 

3.2.2 El segmento TCP:

El segmento TCP se divide en dos partes , la parte de cabecera y la parte de datos, que sigue a la parte de cabecera. Los primeros dos campos del segmento se denominan puerto de fuente y puerto de destino. Son campos de 16 bits e identifican a los programas de aplicación de nivel superior que utilizan la conexión TCP.

El siguiente campo es el número de secuencia , que contiene el número de secuencia del primer octeto del campo de datos de usuario. Su valor especifica la posición de la cadena de bits del módulo transmisor. Dentro del segmento especifica el primer octeto de datos de usuario. Este número se utiliza también durante la operación de gestión de la conexión.

 

 

Estructura del Segmento TCP

PUERTO TCP FUENTE (16)

PUERTO TCP DESTINO (16)

NUMERO DE SECUENCIA (32)

NUMERO DE ACEPTACION (32)

DESPLAZAMIENTO

RESERVADO (6)

FLAGS

VENTANA (16)

CHECKSUM (16)

PUNTERO DE DATOS URGENTES (16)

OPCIONES (variable)

RELLENO

DATOS (variable)

 

 

 

El valor del campo de número de aceptación permite aceptar los datos previamente recibidos. Este campo contiene el valor del número de secuencia del siguiente octeto que se espera recibir del transmisor. Así , permite la aceptación de todos los octetos hasta e incluyendo el valor de este número menos uno.

 

Los reconocimientos o numeros de aceptación siempre indican el número de secuencia del siguiente octeto que se espera recibir.

 

 

Las retransmisiones emplean un temporizador , pero su duración es crítica :

- Los tiempos que emplean los paquetes en sus recorridos por la red son muy variables,

incluso entre paquetes consecutivos.

- Si el plazo es muy corto pueden darse demasiadas retransmisiones innecesarias

- Si el plazo es muy largo el proceso de recuperación de errores será lento.

 

Para la retransmisión se emplea un algoritmo de retransmisión adaptativa. TCP controla los retardos sobre cada conexión y ajusta los timeouts de acuerdo con ellos

- Cada vez que se obtiene un nuevo round trip se ajusta el estimado para la conexión

(RTT= Round Trip Time) .

 

RTT = ( a*anterior_RTT) + ((1-a)* round_trip_medido)

Donde 0<=a<1 (Recomendado a=0.9)

Timeout = B*RTT (B<1 , se recomienda B=2)

 

 

El campo desplazamiento de datos especifica el número de palabras alineadas de 32 bits de que consta la cabecera de TCP. Este campo se utiliza para determinar donde comienza el campo de datos. Los seis bits siguientes al campo reservado (para uso futuro) , son los flags , bits de control que se utilizan para especificar ciertos servicios o utilidades que se pueden emplear durante la sesión .

 

Son los siguientes :

URG : Indica que el campo de puntero de urgencia es significativo.

ACK : Indica si el campo de aceptación es significativo.

PSH : Indica que el módulo va utilizar la función push.

RST : Indica que la conexión se va a inicializar.

SYN : Indica que se van a sincronizar los números de secuencia.

FIN : Indica que el remitente no tiene más datos para enviar.

 

 

 

TCP es libre de dividir el flujo de datos en los segmentos que estime oportuno. Esto puede interferir con algunas aplicaciones que esperan una entrega inmediata , como es el caso de una sesión interactiva con terminal remoto después de teclear una orden. La operación PUSH fuerza a TCP a enviar un segmento y que este sea entregado de inmediato a la aplicación en el otro extremo.

El campo siguiente denominado ventana , se pone a un valor que indica cuántos octetos desea aceptar el receptor. Este valor se establece teniendo en cuenta el valor del campo de aceptación. La ventana se establece sumando los valores del campo de ventana y del campo de número de aceptación. TCP utiliza ventana deslizante para el control de flujo y error.

El campo checksum contiene el complemento a uno de 16 bits del complemento a uno de la suma de todas las palabras de 16 bits del segmento , incluyendo la cabecera y los datos. Esto se realiza para determinar si el segmento procedente del transmisor ha llegado libre de errores.

El campo puntero urgente , se utiliza solo si el indicador URG está a 1. Su función es identificar el octeto de datos al que siguen datos urgentes . Los datos urgentes se denominan datos fuera de banda.

El campo de opciones está concebido para posibilitar futuras mejoras de TCP. Cada opción se especifica mediante un byte que especifica el número de opción , un campo que contiene la longitud de la opción , y finalmente , los valores de la opción propiamente dichos .

Las opciones son las siguientes :

0 : fin de lista de opciones.

1 : no operación.

2 : tamaño máximo de segmento.

Generalmente se utilizan con la opción Tamaño Máximo de Segemento, la cual señala el tamaño más grande de segmento que espera recibir el módulo TCP.

Finalmente el campo relleno asegura que la cabecera TCP ocupa un múltiplo par de 32 bits .

 

 

      1. ESTABLECIMIENTO Y CIERRE DE LA CONEXIÓN TCP:

Antes de transferir cualquier dato, el módulo TCP del lado cliente que solicitó la conexión debe confirmar el mensaje de respuesta inicial del módulo TCP del lado servidor para sincronizarse. En el campo número de confirmación ,el módulo cliente almacena el número de secuencia inicial más uno del módulo TCP del lado servidor. Es decir para establecer la conexión todo se reduce a los siguientes pasos :

 

 

  1. El módulo TCP del lado cliente pide una conexión TCP enviando una solicitud de sincronización y un número de secuencia inicial.
  2. El módulo TCP del lado servidor confirma la solicitud de conexión y solicita que el lado cliente se sincronice con su número de secuencia inicial.
  3. El módulo TCP del lado cliente confirma la solicitud de sincronización del lado servidor.

 

Para el cierre de la conexión , uno de los dos lados envia un mensaje con la bandera FIN. Así un lado realiza un cierre activo y el otro un cierre pasivo, al recibir la bandera , envia la suya , se reciben las respectivas confirmaciones y la conexión TCP termina.

 

 

      1. Puertos TCP :

Entre los puertos TCP reservados más comunes destacan :

Número Puerto

Aplicación

Descripción

7

Echo

Eco

11

Users

Usuarios Activos

13

Daytime

Fecha y hora

20

FTP – Datos

Transferencia de ficheros con FTP

21

FTP – Control

Transferencia de comandos en FTP

23

Telnet

Conexión Remota

25

SMTP

Transferencia de Correo.

37

TIME

Time

42

Nameserver

Servidor de Nombres

53

Domain

Servidor de Nombres de Dominio

79

Finger

Finger

101

Hostname

Servidor de nombres nic

110

POP3

Recuperación de Correo.

119

NNTP

Acceso a noticias en la Red.