Número de Asentamiento

El receptor de segmentos de datos tiene que asentir lo que le llegan correctamente, activando el flag ACK y rellenando el campo AcknowledgmentNum. No es necesario enviar un asentamiento por cada segmento con datos que se recibe. Se puede esperar a asentir varios segmentos de una sola vez.

El número de asentimiento indica el número de secuencia del próximo byte que se espera recibir, asintiéndose de esa manera hasta el byte anterior incluido.

Si siempre hay datos que enviar, se aprovecha para mandar en ese mismo segmento la información del número de asentimiento.

Si el lado que ha recibido datos no tiene nada que enviar, construirá un segmento, donde enviará el número de asentimiento que corresponda.

Ventana Deslizante

Se usa un protocolo de ventana para coordinar el envío de segmentos de datos (control de flujo). El receptor indica en el campo AdversiteWindow (ventana anunciada o de flujo) el número de bytes que está dispuesto a recibir el emisor.

El emisor puede transmitir esos bytes aunque no reciba asentimientos, pero una vez transmitidos tendrá que parar hasta recibir nuevos.

Ambos extremos pueden enviar datos, hay dos ventanas de flujo diferentes.

El Nivel de Transporte

El nivel de transporte se encarga de gobernar el acceso múltiple a la red de los diversos procesos de la misma máquina que quieran usarla: en TCP/IP se hace a través de puertos. Hay dos protocolos: TCP y UDP.

Puertos

En una máquina multiproceso, el nivel de transporte debe preocuparse de saber a qué proceso va destinada una unidad de datos de UDP o TCP que acaba de llegar. La dirección IP no es suficiente. Los procesos, por eso, usan direcciones de nivel de transporte denominadas puertos.

Cada puerto proporciona a una aplicación un punto de acceso a la red de comunicaciones (esta puede dialogar con otra situada en un puerto de la máquina remota).

El nivel de transporte:

  • Multiplexa las unidades de datos que envían las aplicaciones a través de los puertos, encapsulándolas en unidades de datos UDP o TCP.
  • Demultiplexa las unidades de UDP y TCP, pasando datos a las aplicaciones.

Se identifican con un número de 16 bits. UDP y TCP se manejan por separado. Cuando se envía una unidad de datos del nivel de transporte se especifica el puerto de destino y el puerto desde el que se envía.

Una comunicación de nivel de transporte queda completamente identificada con los siguientes parámetros: protocolo, IP origen, puerto origen, IP destino, puerto destino.

NAT (Network Address Translation)

NAT (Traducción de Direcciones de Red) recibe este nombre la reescritura, por parte de un encaminador, de campos de la cabecera IP de los datagramas que encamina (cambia dirección IP origen y puerto origen en tráfico saliente, cambia dirección IP destino y puerto destino en tráfico entrante). Esta técnica se utiliza con el propósito de paliar la escasez de direcciones IP. Con NAT, una organización puede usar direcciones privadas internamente, y tener solo una dirección IP pública en el encaminador que le da salida a Internet.

Direcciones IP Privadas:

  • 10.0.0.0 – 10.255.255.255
  • 192.168.0.0 – 192.168.255.255
  • 172.16.0.0 – 172.31.255.255

Funcionamiento de NAT

Todos los ordenadores de la red interna usan direcciones privadas (no válidas para Internet), el que tiene la dirección pública es el router que da acceso a Internet (podría tener más de una).

El router NAT cambia la IP de origen sustituyendo la IP privada de la máquina que crea el datagrama por la IP pública del router. La máquina que recibe el datagrama cree que el origen es el propio del router NAT. El router NAT mantiene una tabla con los cambios que hace en el tráfico saliente para más tarde hacer los cambios en el tráfico entrante.

Si coincide que otra máquina de la red privada usa el mismo puerto local de origen para comunicarse y el mismo protocolo de nivel de transporte, el router NAT elige un puerto externo distinto al interno y cambiará el puerto origen del datagrama por el nuevo.

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 coincidan con la IP destino y puerto destino del datagrama entrante.

Si llega al router un datagrama entrante no correspondiente a tráfico saliente previo, no sabrá a qué máquina interna redirigirlo. Lo descarta. En la configuración se puede poner una IP interna a la que redirigirlo. En la configuración también se pueden añadir manualmente entradas para tráfico entrante nuevo en función del puerto (abrir puertos).

Al abrir un puerto y apuntarlo en la columna “puerto externo” de la tabla NAT pueden “colarse” en la red privada dos servidores en distintas máquinas en el mismo puerto, pero tendrán que ser conocidos desde fuera de la red interna con puertos distintos.