> For the complete documentation index, see [llms.txt](https://juan-martin-franco.gitbook.io/network-+/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://juan-martin-franco.gitbook.io/network-+/2.-modelo-osi/2.9-encapsulamiento-y-desencapsulamiento.md).

# 2.9 - Encapsulamiento y Desencapsulamiento

## Encapsulamiento y Desencapsulamiento

A medida que los datos recorren las diferentes capas del modelo OSI, en encapsulan o desencapsulan según la dirección en la que estén recorriendo.

Para entender los conceptos de Encapsulamiento y Desencapsulamiento, es necesario entender que es una PDU.

### Protocol Data Unit (PDU)

Una PDU (Unidad de datos de Protocolo), es una unidad de información transmitida en una red de computadoras.&#x20;

En el modelo OSI, se las llama simplemente <mark style="color:green;">**L \[CAPA] PDU**</mark>. \
Por ejemplo, L7 PDU corresponde a una PDU de la Capa de Aplicación (Capa 7).

Estos PDUs reciben diversos nombres según la capa a la que correspondan:

7\. Capa de Aplicación --> <mark style="color:blue;">**Data / Datos**</mark>

6\. Capa de Presentación --> <mark style="color:blue;">**Data / Datos**</mark>

5\. Capa de Sesión --> <mark style="color:blue;">**Data / Datos**</mark>

4\. Capa de Transporte --> <mark style="color:red;">**Segmento (TCP) / Datagrama (UDP)**</mark>

3\. Capa de Red --> <mark style="color:green;">**Paquete**</mark>

2\. Capa Enlace de Datos --> <mark style="color:purple;">**Frame / Trama**</mark>

1\. Capa Física --> <mark style="color:orange;">**Bits (0 y 1s)**</mark>

### Encapsulamiento y Desencapsulamiento

El encapsulamiento es el proceso de agregarle cabeceras (headers) y en ocasiones trailers alrededor de nuestros datos.&#x20;

Si movemos los datos <mark style="color:blue;">**hacia las capas inferiores**</mark> del modelo OSI, desde la capa 7 hacia la 1, estamos encapsulando los datos.

Si un usuario crea datos y los quiere enviar a través de una red, estos datos van a entrar en una aplicación en la Capa 7 del Modelo OSI. Estos datos ahora tienen agregados una cabecera de Capa 7 agregada, la cual contiene metadatos con los parámetros acordados por la aplicación específica.

Ahora, esa información es pasada a la Capa 6, donde se encapsula la cabecera de capa 7 y los datos juntos, y se le agrega el header de Capa 6, el cual contiene su propios metadatos con información acerca de los formatos de presentación y el encriptado utilizado.

Luego, todo este bloque se pasa a la Capa 5, donde se encapsula la cabecera de Capa 6 con los datos y se le agrega la cabecera propia de Capa 5 basada en los metadatos referentes a la sesión.

En la Capa 4, esto varía dependiendo de si se utiliza TCP o UDP.

<mark style="background-color:green;">**Header TCP**</mark>

El **header TCP** tiene <mark style="color:blue;">**10 campos obligatorios**</mark>, los cuales totaliza 20 bytes de información. \
Estos campos son:

* <mark style="color:blue;">**Puerto de Origen**</mark>
* <mark style="color:blue;">**Puerto de Destino**</mark>
* <mark style="color:blue;">**Número de secuencia**</mark>
* <mark style="color:blue;">**Número de ACK**</mark>
* <mark style="color:blue;">**Desplazamiento de datos TCP (Offset)**</mark>
* <mark style="color:blue;">**Datos reservados (siempre es 0, no se utiliza)**</mark>
* <mark style="color:blue;">**Banderas TCP**</mark>
  * <mark style="color:green;">**SYN (Synchronization)**</mark>: Utilizada para sincronizar la conexión durante el Three-Way Handshake.
  * <mark style="color:green;">**ACK (Acknowledgement)**</mark>: Utilizada durante el Three-Way Handshake, pero también se utiliza para acusar el recibo de los datos.
  * <mark style="color:green;">**FIN (Finished)**</mark>: Utilizada para cerrar las conexiones virtuales creadas utilizando el Three-Way Handshake. Esta bandera aparece en los últimos paquetes intercambiados entre cliente y servidor.
  * <mark style="color:green;">**RST (Reset)**</mark>: Utilizada cuando un cliente o un servidor recibe un paquete no deseado durante la conexión actual.
  * <mark style="color:green;">**PSH (Push)**</mark>: Utilizada para asegurarse que se le dio prioridad a los datos y fueron procesados en los extremos. A menudo se agrega esta bandera al comienzo o al final de una transferencia de datos.
  * <mark style="color:green;">**URG (Urgent)**</mark>: Similar a la bandera PSH pero identifica los datos entrantes como urgentes. La principal diferencia con PSH es que PSH es utilizada por el emisor para indicar datos con un nivel de prioridad mas alto, mientras que URG se envía al receptor para que la procese inmediatamente e ignore lo que sea que haya en la cola.
* <mark style="color:blue;">**El tamaño de la ventana (Window)**</mark>
* <mark style="color:blue;">**Checksum**</mark>
* <mark style="color:blue;">**Puntero de Urgente**</mark>
* <mark style="color:blue;">**Datos mTCP (Opcional)**</mark>&#x20;

<mark style="background-color:green;">**Header UDP**</mark>

El header UDP contiene solo 4 campos y totaliza 8 bytes. \
Estos campos son:

* <mark style="color:blue;">**Puerto de Origen**</mark>
* <mark style="color:blue;">**Puerto de Destino**</mark>
* <mark style="color:blue;">**Longitud (Length)**</mark>
* <mark style="color:blue;">**Checksum**</mark>

Ahora, todo esto (L5 PDU + Cabecera UDP o TCP) se mueve hacia la capa 3 (Capa de Red) y se agrega el IP Header.&#x20;

<mark style="background-color:green;">**Header IP**</mark> \
\
Esta cabecera contiene varios campos, incluyendo:

* <mark style="color:blue;">**IP Version**</mark> (0100 o 0110 según sea IPv4 o IPv6)
* <mark style="color:blue;">**Longitud de la cabecera**</mark>
* <mark style="color:blue;">**ToS (Type of Service)**</mark>
* <mark style="color:blue;">**Longitud total del paquete y la cabecera**</mark>
* <mark style="color:blue;">**Identificador del paquete**</mark>
* <mark style="color:blue;">**Flags**</mark>
* <mark style="color:blue;">**Desplazamiento**</mark>&#x20;
* <mark style="color:blue;">**TTL:**</mark> Valor que disminuye a medida que un paquete recorre diferentes routers
* <mark style="color:blue;">**Protocolo**</mark>
* <mark style="color:blue;">**Checksum**</mark>
* <mark style="color:blue;">**IP Origen**</mark>
* <mark style="color:blue;">**IP Destino**</mark>
* <mark style="color:blue;">**Opciones y Padding**</mark>

Ahora, una vez encapsulada la cabecera IP, los datos bajan una capa y se llega a la Capa 2, la capa de Enlace de Datos.\
Una vez allí, se encapsulan los datos con la cabecera de Capa 3 y se le agrega una cabecera Ethernet.

<mark style="background-color:green;">**Header Ethernet**</mark>

La cabecera Ethernet cuenta con unos pocos campos:

* <mark style="color:blue;">**MAC Destino**</mark>
* <mark style="color:blue;">**MAC Origen**</mark>
* <mark style="color:blue;">**EtherType**</mark>: Utilizado para indicar que protocolo es encapsulado en el Payload (IPv4 o IPv6).
* <mark style="color:blue;">**VLAN Tag (Opcional)**</mark>

<mark style="color:red;">**Adicional al header Ethernet, un frame enviado desde la capa 2 también agregará un Payload.**</mark>

El Payload mínimo es de **42 Bytes** si <mark style="color:green;">**se utilizan VLANs**</mark>.\
El Payload mínimo es de **46 Bytes** si <mark style="color:green;">**NO se utilizan VLANs**</mark>.

Cuando se quiere enviar un Payload, hay un tamaño máximo para esto, llamado MTU (Maximum Transmission Unit).\
Por defecto, <mark style="color:red;">**Ethernet utiliza un MTU de 1500 Bytes**</mark> como tamaño máximo.&#x20;

Por último, una vez llegado a la Capa 1, se transmiten los datos de Capa 2 como una serie de 0s y 1s sobre un medio.

Cuando es recibido por el próximo dispositivo, por ejemplo un Switch, revisa la dirección MAC y se fija si esa dirección está en alguno de sus puertos. Si está, la reenvía por el mismo. Si no está, la reenvía por el default gateway, el cual es el router.

El router desencapsula los datos hasta la capa 3, y lee la dirección IP. Si está en su red, lo reenvía hacia ese dispositivo. Si no está en su red, reencapsula los datos y los reenvía por su default gateway. Este proceso continua hasta que se llega con el dispositivo destino.

Una vez se llega al dispositivo destino, este desencapsula la información hacia la Capa 7 donde una aplicación puede leer y entender los datos
