RESPONSABILIDADES CAPA 4
- Seguimiento de la comunicación indetenidamente entre aplicaciones en los Hosts de origen y destino.
- Segmentación de datos y gestión de cada porción reensamble de segmentos en flujos de datos de aplicación.
- Identificación de las diferentes aplicaciones.
- Ofrecer un servicio confiable en redes no confiables.
Para que los usuarios accedan al servicio de transporte, la capa de transporte debe contar con operaciones para los programas de aplicación, es decir, una interfaz del servicio de transporte. Cada servicio de transporte tiene su propia interfaz. El usuario puede utilizar las primitivas para solicitar dichos servicios.
Primitiva: forma en la que el usuario se comunica con el sistema operativo.
Como no se puede utiizar sólo la dirección IP para dichos servicios, se recurre a los sockets. Los sockets son puntos de accesos que una aplicación puede crear para acceder a los servicios de comunicación que ofrecen las pilas de protocolos. Estos sockets almacenan el par (IP, puerto)
De origen y destino junto con los datagramas a enviar o recibir, dependiendo de la acción.
Los puertos son direcciones asignadas por números enteros que identifican los distintos servicios de la computadora. Canalizaciones en UNIX (16 bits):
- Puertos privilegiados: 0 – 1023
- Puertos no privilegiados: 1024 – 65535 (=2¹⁶ – 1)
Ejemplo: el puerto 80 corresponde al servicio web (http)
A veces, hay redes privadas (intranet) que requieren de estos servicios, pero se ven imposibilitadas de utilizarlas, ya que sus direcciones IP son privadas (cada dirección IP de la red privada es privada) y por lo tanto, no routeables a la Internet.
NAT
Recibe este nombre la reescritura por parte de un encaminador de campos de la cabecera IP de los datagramas que encamina: cambiar IP y puerto origen en tráfico saliente, cambiar IP y puerto destino en tráfico entrante. Su propósito es paliar la escasez de direcciones IP, (por lo que una organización puede usar direcciones privadas internamente, y tener una sola IP global).
Direccionamiento
Todos los ordenadores de la red interna usan direcciones privadas. El router que da acceso a Internet tiene una dirección pública. Siempre que haya disponibles menos IPs públicas que máquinas en la red interna se realiza NAT.
Tráfico saliente, mecanismo básico
El router NAT cambia la IP de origen sustituyendo la IP privada de la máquina que creó el datagrama por la IP pública del router. La máquina que recibe el datagrama cree que el origen del mismo es el propio router NAT.
Tráfico saliente, mecanismo detallado
El router NAT mantiene una tabla con los cambios que hace el tráfico saliente, para más tarde poder hacer los cambios correspondientes al tráfico entrante. Si coincide que otra máquina de la red privada usa el mismo puerto local de origen para comunicarse, el router NAT elige un puerto externo distinto al interno, y cambia el puerto origen del datagrama por el nuevo puerto externo, en conjunto con la IP y el puerto de origen del mismo.
Tráfico entrante que responde al saliente
El router NAT cambia en el datagrama entrante la IP destino y el puerto destino por la IP interna y puerto interno de la fila de la tabla cuyos campos “IP externa” y “puerto externo” coinciden con IP destino y puerto destino que trae el datagrama entrante.
Tráfico nuevo entrante
Por defecto, un router NAT descarta el tráfico entrante nuevo. Soluciones:
- Incluir en la configuración del router una IP interna a la que redirija todo el tráfico nuevo.
- Abrir puertos: Añadir manualmente (y a priori) entradas en la tabla NAT para el tráfico entrante nuevo, en función del puerto al que va dirigido. Al abrir un puerto, se puede especificar que haya un cambio del puerto del destino a un valor diferente para la red interna. Por lo que pueden colocarse en la red privada dos servidores en distintas máquinas en el mismo puerto, pero tendrán que ser con puertos externos distintos.
Problema: direcciones/puertos en la parte de datos
Algunos protocolos o aplicaciones guardan las direcciones y/o puertos de origen en la parte de datos del datagrama IP. El router NAT sustituye los valores de la cabecera, pero los valores de la parte de datos no se cambian. Si la máquina destino utiliza los valores que viajan en la parte de datos para algo, no identificarán correctamente al origen. Solución: El router NAT debe conocer el protocolo concreto, y saber dónde de la parte de datos van los valores para modificarlos.
TCP/IP
Es el segundo servicio más importante y mejor conocido de nivel de red, la entrega de flujo es confiable. Es un protocolo independiente de propósitos generales que se puede adaptar para utilizarlo con otros sistemas de entrega.
Necesidad de la entrega de flujo
En el nivel más alto, los programas de aplicación a menudo necesitan enviar grandes volúmenes de datos de una computadora a otra. Por esto se genera un protocolo de propósito general para aislar los programas de aplicación de los detalles del trabajo con redes y permitir la definición de una interfaz uniforme para el servicio de transferencia de flujo.
Características del servicio de entrega confiable
Orientación de flujo:
Cuando dos programas de aplicación transfieren grandes volúmenes de datos, los consideramos como un flujo de bits divididos en octetos de un byte. El servicio de entrega de flujo en la máquina de destino pasa al receptor exactamente la misma secuencia de octetos que le pasa el transmisor de la máquina de origen.Conexión de circuito virtual:
Antes de poder empezar la transferencia, los programas de aplicación, transmisor y receptor interactúan con sus respectivos sistemas operativos, informándole la necesidad de realizar una transferencia de flujo.Transferencia con memoria intermedia:
Los programas de aplicación envían un flujo de datos a través del circuito virtual pasando repetidamente octetos de datos al software del protocolo. Cuando se transfieren datos, cada aplicación utiliza piezas del tamaño adecuado. En el extremo receptor, el software de protocolo entrega octetos del flujo de datos en el mismo orden que se enviaron, poniéndolos a disposición del programa de aplicación receptor tan pronto como se reciben y verifican. El software de protocolo puede dividir el flujo en paquetes, independientemente de las piezas que transfiera.
Para aplicaciones en las que los datos se deben entregar aunque no se llene una memoria intermedia, las mismas utilizan el mecanismo push para forzar una transferencia. En el extremo transmisor, un empuje obliga al software de protocolo a transferir todos los datos generados sin tener que esperar a que se llene una memoria intermedia. Cuando llega al extremo receptor, el empuje hace que el TCP ponga los datos a disposición sin demora.
Flujo no estructurado:
El servicio de flujo no está obligado a formar flujos estructurados de datos.Conexión Full Duplex:
Las conexiones del servicio TCP/IP permiten la transferencia en ambas direcciones. Una conexión full duplex consiste en dos flujos independientes que se mueven en direcciones opuestas, sin ninguna interacción aparente. Un proceso de aplicación puede terminar el flujo en una dirección mientras los datos continúan moviéndose en la otra dirección.
Proporcionando confiabilidad
El acuse de recibo positivo con retransmisión es una técnica que requiere que un receptor se comunique con el origen y le envíe un mensaje de acuse de recibo (ACK) conforme recibe los datos. El transmisor guarda un registro de cada paquete que envía y espera un acuse de recibo antes de enviar el siguiente paquete. El transmisor también arranca un temporizador cuando envía un paquete y lo retransmite si dicho temporizador expira antes de que llegue un acuse de recibo. Cuando termina el tiempo, el transmisor asume que el paquete se perdió y lo vuelve a enviar. Se pueden generar duplicados. Los protocolos confiables detectan los paquetes duplicados al asignar un número de secuencia y al obligar al receptor a recordar qué números de secuencia recibe. Los protocolos de acuses de recibo positivos envían los números de secuencia dentro de los acuses, para que el receptor pueda asociar correctamente los acuses de recibo con los paquetes.
Puertos, conexiones, puntos extremos
El TCP reside sobre el IP en el esquema de estratificación por capas de protocolos. El TCP permite que varios programas de aplicación en una máquina se comuniquen de manera concurrente y realiza el demultiplexado del tráfico TCP entrante en los programas de aplicación. Utiliza números de puerto de protocolo para identificar el destino final dentro de una máquina. Cada puerto tiene asignado un número entero pequeño utilizado para identificarlo.
Se diseñó según la abstracción de conexión, en la que los objetos a identificar son conexiones de circuito virtual, no puertos individuales. El TCP utiliza la conexión, no el puerto de protocolo, como su abstracción fundamental; las conexiones se identifican por medio de un par de puntos extremos. Los puntos extremos son pares de números enteros (anfitrión, puerto) en donde anfitrión es la IP de un anfitrión y puerto es un puerto TCP en dicho anfitrión. Como el TCP identifica una conexión por medio de un par de puntos extremos, varias conexiones en la misma máquina pueden compartir un número de puerto TCP.
Establecimiento de una conexión TCP
Para establecer una conexión, el TCP utiliza un saludo de tres etapas:
- Primer segmento: Tiene activo el bit de SYN en el campo de código.
- Segundo segmento: Tiene tanto el bit de SYN como el bit de ACK activos, indicando tanto el acuse de recibo del primer segmento SYN como el hecho de que se continúa con el intercambio.
- Mensaje final: Es sólo un acuse de recibo y se utiliza únicamente para informar al destino que ambos extremos están de acuerdo en establecer una conexión.
Número de secuencia inicial
El saludo de tres etapas realiza dos funciones importantes. Garantiza que ambos lados estén listos para transferir datos (y que tengan conocimiento de que ambos están listos) y permite, a ambas partes, acordar un número de secuencia inicial. Los números de secuencia son enviados y reconocidos durante el saludo. Un número de secuencia inicial debe ser seleccionado por cada máquina de forma aleatoria.
Terminación de una conexión TCP
Operación close: El TCP utiliza una modificación del saludo de tres etapas para cerrar conexiones. Cuando un programa de aplicación informa al TCP que ya no tiene más datos para enviar, éste cierra la conexión en una dirección, enviando un segmento con el bit FIN activado. De forma análoga se cierra la otra conexión. Y cuando ambas fueron cerradas, el software TCP en cada punto extremo borra sus registros de la conexión.
UDP
User Datagram Protocol – Protocolo de Datagrama de Usuario:
- Proporciona puertos utilizados para distinguir los servicios que se ejecutan en la computadora.
- Utiliza IP para transportar mensajes entre PCs y misma semántica de entrega de datagramas, sin conexión y no confiable.
- No emplea acuses de recibo (ACK), no proporciona retroalimentación para controlar la velocidad a la que fluye la información y no ordena los mensajes entrantes. Por lo tanto, los mensajes se pueden perder, duplicar y llegar sin orden.
- Demultiplexación en el host receptor: el UDP utiliza el número de puerto UDP para seleccionar el puerto apropiado de destino para los datagramas entrantes.