floure.ARCHIVO / Tecnologías de la información
← Volver a la colección7 MIN DE LECTURA

Tecnologías de la información

Capa de Transporte y Capa de Aplicación

Redes y Comunicaciones

Capa de transporte

Transporte y aplicación resuelven problemas distintos. Un flujo TCP fiable no nos dice si la aplicación aceptó la operación ni si los datos viajaron cifrados. Cada capa conserva su trabajo.

Multiplex y Demultiplex

Multiplex en la capa de transporte significa que los nodos en una red tienen la habilidad de dirigir el tráfico a distintos servicios receptores. Demultiplex es el mismo concepto pero como receptor, recibiendo el tráfico dirigido a un nodo y dirigiéndolo a los servicios correspondientes.

Esto se realiza a través de puertos. Un puerto es un número de 16bit usado para dirigir el tráfico a servicios específicos de un computador.


TCP Segment

TCP acepta información, la fragmenta y agrega un TCP Header así creando un TCP Segment. Este es encapsulado en el datagrama IP e intercambiado. En la jerga se usa 'paquete TCP' pero para ser más precisos:

  • segment se refiere a TCP Protocol Data Unit (TCP PDU)
  • datagram se refiere a IP Protocol Data Unit (IP PDU)
  • frame se refiere al Data Link PDU.

El segmento TCP consta de una sección de encabezado y una de data. También posee 10 campos obligatorios y el campo opcional de opciones.

  • Source y Destination Port
    • Indican puerto de origen y de destino
  • Sequence number
    • Identifica el número de secuencia del primer byte de datos; SYN y FIN también consumen un número
  • Acknowledgment number
    • Indica el siguiente número de secuencia esperado (normalmente el siguiente byte), no el número de segmento.
  • Header Length
    • Largo del encabezado
  • Empty
    • Bits reservados; el dibujo de seis corresponde a una representación histórica, revisar cabecera actual
  • Control Flags
    • Banderas de control TCP
  • TCP Window
    • Especifica el rango de numeros secuenciales que se podrían enviar antes de que una respuesta sea requerida.
  • Checksum
    • Comprobación
  • Urgent
    • Usado en conjunto a los control flags para indicar segmentos que podrían ser más importantes. (aparentemente casi no se ha usado ¿?)
  • Options
    • Similar a las opciones del paquete IP para mayor control y control de flujo
  • Padding
    • Serie de ceros para asegurar que la carga útil comience en el lugar esperado

Banderas TCP

O puntos de control

En el encabezado TCP aparecen en el orden que los plantearé, un valor de 1 es 'activo'.

1. URG

Urgent. El segmento se considera urgente, habrá más información en el segmento Urgent del paquete.

2. ACK

Acknowledged. Es básicamente un flag de 'recibido'

3. PSH

Push. Indica que el equipo transmisor quiere empujar la información del buffer a la aplicación lo más pronto posible.

4. RST

Reset. Aborta o rechaza una conexión; no es el mecanismo normal de recuperación de segmentos perdidos.

5. SYN

Synchronize. Se usa al principio de la conexión para asegurar que la conexión está establecida y se mantenga así.

6. FIN

Finish. Indica que el emisor no tiene más datos para enviar en esa dirección; puede seguir recibiendo.

Three-way handshake

El proceso es básicamente el siguiente:

  • X envía un paquete con el SYN activo y el sequence number, de modo que Y lo recibe.
  • Y responde normalmente con SYN y ACK, anunciando también su número inicial de secuencia
  • X nuevamente responde con un ACK. Básicamente se dicen "reconozco tu reconocimiento"
    • SYN-SYN/ACK-ACK Esto es el THREE WAY HANDSHAKE
  • Ahora la conexión está realizada por lo que el intercambio de datos se puede realizar. Esto es también una conexión Full Duplex
  • Cada segmento enviado repite el ACK cada vez que se envían paquetes.
  • Cuando X o Y está listo para terminar conexión, se envía un FOUR-WAY HANDSHAKE:
  • Se envía un último paquete con el flag FIN y el receptor envía un ACK.
    • Hipotéticamente se puede mantener una conexión Simplex pero no es frecuente.

TCP Socket

Instancia del end-point en una posible conexión TCP. Requieren que un programa los instancie.

  • LISTEN:
    • El socket está listo y escuchando para conexiones entrantes
    • Server-side
  • SYN_SENT:
    • Se ha enviado solicitud de sincronización
    • Client-side
  • SYN_RECEIVED:
    • Un socket en LISTEN recibió un request de comunicación y envió un SYN/ACK pero no ha recibido un ACK del cliente
    • Server-side
  • ESTABLISHED:
    • Conexión establecida
    • Server y Client-side
  • FIN_WAIT_1 / FIN_WAIT_2:
    • FIN_WAIT_1 espera el ACK del FIN propio o el FIN remoto; FIN_WAIT_2 ya recibió el ACK y espera el FIN remoto
    • Cliente o Servidor, según quién inició el cierre
  • CLOSE_WAIT:
    • Se recibió FIN remoto; la aplicación local todavía no ha cerrado su lado de envío. No está cerrada por completo.
    • Server-side
  • CLOSING:
    • Ambos enviaron un FIN pero no se ha recibido el ACK
    • Ambos (cliente-servidor)
  • LAST_ACK:
    • Después de recibido el FIN y enviado el ACK, el socket espera el ACK final del otro lado antes de cerrarse
    • Cliente o servidor (quien no inició el cierre)
  • TIME_WAIT:
    • Después del último ACK el socket espera para asegurarse que el otro extremo recibió el ACK final
    • Quien inició el cierre
  • CLOSED:
    • Conexión completamente terminada y no hay más comunicación.
    • Ambos.

UDP

User Datagram Protocol.

A diferencia de TCP, que es orientada a conexión, UDP no lo es. Esto significa que no establece conexión persistente entre emisor y receptor. Esto lo hace más rápido y eficiente en ciertos casos pero sacrifica fiabilidad y control de flujo que ofrece TCP.

En general: Baja latencia pero no necesitan confirmación de recepción por lo que pueden duplicarse, perderse y llegar desordenados y son útil para streaming, juegos o transmisiones multicast.

Los pasos de uso son:

  1. Emisión
  2. Encapsulación
  3. Recepción
  4. Procesamiento

Los estados y procesos son más simples en UDP por la no necesidad de una conexión formal. Sin embargo tiene algunos conceptos clave:

  • Bind
    • Se asocia el socket a un puerto local específico en el host para escuchar
  • Sendto:
    • Se envia un datagrama a una IP y puerto específico
  • Recvfrom:
    • Recepción del datagrama en una IP y puerto específico
  • Multiplex/Demultiplex
    • Proceso de asignar los datagramas a la app correcta en el host, según puerto de destino

El ejemplo más común es los juegos en linea porque la prioridad es la baja latencia. El usar UDP para los movimientos del jugador permite una actualización rápida de los mismos pero si se pierde un paquete no es crítico porque llegará un nuevo paquete rápidamente con la información actualizada.


Firewalls

Dispositivo que bloquea tráfico según ciertos criterios. Puede ser físico o no. Pueden operar en distintas capas de la red, por lo que podriamos colocar firewalls en la capa de aplicación para monitorear el tráfico de las aplicaciones o podriamos colocar un firewall que bloquee rangos de ip. El uso más común es colocarlos en la capa de transporte para bloquear conexiones y tráfico a ciertos puertos, algo así como policia fronteriza.


Capa de Aplicación

En la capa de aplicación es donde las aplicaciones transmiten su información. En general, hay distintos protocolos para cada cosa pero al final del día todas hablan más o menos lo mismo. Por ejemplo para comunicar información de un servidor web podemos tener Apache, Nginx o IIS pero todos hablarán el mismo protocolo. Lo mismo con FTP, podemos tener FileZilla o WinSCP pero ambos utilizarán el mismo protocolo FTP y puertos según protocolo: FTP usa control TCP/21 (datos aparte); SFTP usa SSH, normalmente TCP/22, y es distinto de FTP y FTPS.

En el modelo OSI, se agregan dos capas más a la capa de aplicación: la capa de sesión y la de presentación.

Capa de presentación

La capa de presentación traduce los datos entre el formato de red y el formato de la aplicación o viceversa. Se ocupa tanto de la transformación y codificación como del cifrado y descifrado. Ejemplos:

  • Conversión de formato de imágenes
  • Cifrado SSL/TLS
  • Compresión
Capa de sesión

La capa de sesión gestiona y controla las conexiones entre dos dispositivos (sesiones). También maneja la sincronización y el dialogo entre aplicaciones. Gestiona la recuperación en casos de interrupciones y coordina la retransmisión de los datos si es necesario. Ejemplos:

  • Define quién puede enviar datos (semiduplex o fullduplex)
  • Checkpoints para asegurar la recuperación de datos en caso de fallos.

Contraste: TCP actual, RFC 9293. ACK indica que el campo de reconocimiento es válido; SYN sincroniza números iniciales. El cierre normal puede requerir cuatro segmentos, combinar FIN/ACK o ser simultáneo. CLOSE_WAIT no es exclusivo del servidor; FIN_WAIT y TIME_WAIT pueden aparecer en cualquiera de los extremos según quién cierre. La ventana anuncia bytes aceptables, no un número de segmentos. URG valida el puntero urgente, no prioridad de red. ECN añade flags al esquema histórico de seis. UDP no garantiza baja latencia ni vuelve inocua cualquier pérdida: lo decide la aplicación. La correspondencia OSI/TCP-IP es conceptual; TLS no es una implementación universal de la capa 6.

+----------------------------------------+
| Floure &                               |
| Tachibana's guild                      |
| [Hikari · Nozomi · Rin]                |
| SEAL: sha256/12: 05fa8e25fc51          |
| STATUS: LITURGY_IN_PROGRESS            |
+----------------------------------------+

Conexiones

Desde este apunte · 1

Enlazan aquí · 1

Abrir red completa ↗
✳

Fin del apunte

Seguir explorando ↗