> 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-+/3.-modelo-tcp-ip/3.2-transferencia-de-datos-a-traves-de-las-redes.md).

# 3.2 - Transferencia de datos a través de las redes

## Transferencia de datos a través de las redes

Cuando transferimos datos a través de las redes, tenemos que encontrar una forma de decirle a los datos donde tienen que ir.&#x20;

Utilizamos las direcciones IP para localizar los datos en el sistema correcto, pero necesitamos que los datos sepan que aplicaciones están en escucha en ese sistema particular.

En estas situaciones es donde aparecen los <mark style="color:blue;">**puertos**</mark>.

### Puertos

Un puerto es una **apertura lógica en un sistema** que representa un **servicio** o una **aplicación en escucha** que espera por tráfico.

En las redes de computadoras, <mark style="color:green;">**los puertos son enumerados desde el 0 hasta el 65.535**</mark>.\
Incluso, aunque tengamos una dirección IP única, tenemos 65.535 aperturas diferentes para permitirnos correr diferentes servicios y aplicaciones.

Este gran número de puertos se quiebra en 2 grupos distintos:

* <mark style="color:blue;">**Puertos bien conocidos / Puertos Reservados**</mark>: Abarca el rango desde el Puerto 0 hasta el 1023. En este grupo se incluyen cosas como FTP (Puerto 21), SMTP (Puerto 25) y HTTP (Puerto 80), entre otros.
* <mark style="color:red;">**Puertos efímeros**</mark>: Abarca el rango desde el Puerto 1024 hasta el 65.535. Esto puertos son puertos temporales de corta vida, que se abren por un corto periodo de tiempo a partir de un rango predefinido de puertos.

### Transferencia de Datos

La transferencia de datos ocurre utilizando direcciones IP y puertos.

<figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2FM9GvMPVUlaW74x3LTpcI%2Fimage.png?alt=media&amp;token=aa9e1efe-98a1-4b56-9ce1-e34149e2e2aa" alt=""><figcaption></figcaption></figure>

En el gráfico de arriba se puede apreciar las direcciones IP del Cliente (192.168.1.24) y el Servidor Web (64.82.46.21).

Cuando el cliente realiza una solicitud al servidor web, envía un paquete cuya dirección IP es la propia (en este caso 192.168.1.24) y un número de puerto alto aleatorio (en este caso 49163) obtenido desde el rango de puertos efímeros.&#x20;

Estos datos se envían al servidor web, por medio de la dirección IP destino (en este caso 64.82.46.21) y, obviamente, el puerto destino será el puerto 80, ya que es una petición web por medio de HTTP. En caso de utilizar el protocolo HTTPS, el puerto destino sería 443.

Una vez hecho esto, el servidor web hará el proceso inverso, intercambiando los valores de Dirección IP Origen, Dirección IP Destino, Puerto Origen y Puerto Destino.

Cuando se termina la transmisión de datos entre el servidor web y el cliente, el puerto efímero aleatorio del cliente (49163) que fue abierto para dicha comunicación se cierra y la próxima vez que se realice una comunicación entre cliente y otro servidor web (u otra aplicación) se abrirá otro puerto efímero aleatorio distinto (o no) al anterior.

Desde el lado del servidor web, el puerto 80 se mantiene siempre abierto, ya que un servidor web constantemente recibe peticiones de los clientes que desean comunicarse.

### Envío de información a través de la red

Cuando enviamos la información a través de la red, estamos haciéndolo como un paquete IPv4.

Un <mark style="color:blue;">**paquete IPv4**</mark> consiste de:

* <mark style="color:red;">**Dirección IP Origen**</mark> (Dirección IP del emisor)
* <mark style="color:red;">**Dirección IP Destino**</mark> (Dirección IP del receptor)
* <mark style="color:red;">**Banderas IP**</mark> (IP Flags, las cuales permiten la fragmentación de los paquetes)
* <mark style="color:red;">**Protocolo**</mark> (Indica si nos comunicamos utilizando TCP o UDP)

Todas estas cosas van a formar el header de un paquete IPv4.
