6 Lección 6
6 Lección 6
6 Lección 6
Lección 6 – TCP/UDP
Mg. Ing. Marcelo Araoz
En contrapartida, en la capa 4 tenemos también a UDP, que no cumple con estas premisas. Vamos
a ver en detalle cada uno.
TCP
El siguiente gráfico muestra el formato del protocolo TCP:
Puerto de origen y destino: son dos Bytes que identifican la aplicación que estamos usando. Es una
nueva dirección que debemos aprender, junto con MAC e IP, y que en conjunto determinan el
direccionamiento del sistema de comunicaciones. En un apartado vamos a tratar cómo se establece
este número de port.
Número de secuencia: los mensajes de la capa aplicación se van a segmentar en muchos datagramas.
Este campo es el que le asigna un número a cada datagrama para poder rearmar el mensaje en el
otro extremo.
Número de secuencia: es el ACK de los datagramas que llegan del otro extremo.
Desplazamiento de datos: 4 bits nos indican la cantidad de filas del encabezado, lo que posibilita el
envío de opciones.
Reservado: 6 bits
Banderas:
Puntero urgente: Puntero que indica la cantidad de datos urgentes (identifica el final de los datos
urgentes en el campo de datos que deben tratarse con prioridad)
Los números de puerto son asignados por el IANA y se clasifican de tres maneras:
Puertos bien conocidos (Well Know Port): Los puertos conocidos son los del 0 al 1023. Están
definidos por el IANA para determinados servicios públicos.
Puertos registrados (Registered Port): Los puertos registrados son los del 1024 al 49151. Son
utilizados por los servers para asignar direcciones libres para el host.
Puertos dinámicos o privados: Los puertos dinámicos y / o privados son los del 49152 al 65535. Se
utilizan para conexiones que no requieran un valor establecido por el server.
Cuando una PC desea obtener servicios de un server, el port de origen es un número aleatorio
mientras que el de destino es el de la aplicación que se busca conectar. Por ejemplo, una PC desea
descargar una página web, y apunta a la dirección IP del server, pero en el esquema de puertos, el
port de origen será 80 (en principio copia el del servicio) y el puerto de destino será el servicio web,
es decir 80. El server al responder le asigna un puerto de los registrados para que identifique quién
es el que ha solicitado la descarga de la web. En el ejemplo, el server le asigna el número 5000. A
partir de allí el PC siempre se va a comunicar por el puerto 5000 hacia el puerto 80 del server.
Port O Port D
80 80
IP O IP D
PC Server
Port O Port D
80 5000
IP O IP D
Server PC
Port O Port D
5000 80
IP O IP D
PC Server
¿por qué el server le asigna el puerto 5000 a la PC? Los servidores deben atender muchos usuarios.
Su capacidad de atención depende del procesador, la memoria y la velocidad de acceso al disco.
Entonces a cada cliente le va a asignar un número de los registrados diferente; de esta manera sabrá
identificar con cada uno quién las diferentes comunicaciones.
Envía un datagrama con el bit SYN en uno indicando la necesidad de conectarse. En este encabezado
coloca un número de secuencia de arranque, el tamaño de ventana sugerido para el esquema de
créditos de ventana deslizante, el port de origen sugerido y el de destino del servicio. Del otro
extremo devuelve el datagrama con otro mensaje similar, pero el tamaño de ventana se ajusta a las
dimensiones de atención que pone el server. Y el puerto de destino se corrige al valor que le asigne
el server.
Una vez que está el acuerdo de la secuencia y tamaño de ventana, comienza el envío de mensajes
siguiendo un esquema de créditos de ventana deslizante. En el esquema siguiente, sobre el inicio
ambos extremos se ponen de acuerdo para transmitir hasta 1400 bytes en envíos de a 200. Entonces
la ventana es de 1400. Comienza el envío con el número de secuencia 1001 hasta 1200, luego 1201
a 1400, 1401 a 1600. A medida que se van enviado los datagramas, los mensajes enviados dentro
de la ventana se van reduciendo, pero la ventana no se mueve hasta recibir confirmación ACK del
otro extremo.
Cuando el extremo B envía la respuesta de ACK, le indica como es costumbre el número de SN que
espera recibir. Pero en este caso también le solicita modificar el tamaño de la ventana. Ambos
extremos corrigen la ubicación de la ventana y continúa la transmisión.
¿por qué el extremo B cambió el tamaño de la ventana? TCP tiene una enorme ventaja respecto a
otros protocolos, pues puede negociar el tamaño de la ventana según sean las condiciones de
memora y procesamiento que disponen los extremos. Si las condiciones varían, para mejor o peor,
puede ampliar o reducir el tamaño de la venta y así acomodarse a las condiciones de flujo que sean.
Si existen errores puede genera un rechazo selectivo del datagrama en cuestión. Y la transmisión
continúa. De igual manera detecta los mensajes duplicados.
Para finalizar, lo hace de la misma manera que estableció al principio un mensaje de SYN, en este
caso lo hace con sendos mensajes de FIN entre ambos extremos.
Así que veamos un ejemplo sencillo. Tengo un enlace Ethernet de 1 Gig de Chicago a Nueva York
con una latencia de ida y vuelta de 30 milisegundos. Si intento transferir un archivo grande de un
servidor en Chicago a un servidor en Nueva York usando FTP, ¿cuál es el mejor rendimiento que
puedo esperar?
Primero, convierta el tamaño de la ventana TCP de bytes a bits. En este caso, estamos usando el
tamaño de ventana TCP estándar de 64 KB de una máquina Windows.
A continuación, tomemos la ventana TCP en bits y dividámosla por la latencia de ida y vuelta de
nuestro enlace en segundos. Entonces, si nuestra latencia es de 30 milisegundos, usaremos 0.030
en nuestro cálculo.
524288 bits / 0,030 segundos = 17476266 bits por segundo rendimiento = 17,4 Mbps máximo
rendimiento posible.
Si hacemos el cálculo suponiendo la ventana default: 64KB y con un delay de 250 ms:
Hay que tener en cuenta que son valores aproximados, pero están más relacionados con el delay
que con el BW.
Es decir, cuando se trata de delays tan altos, el BW se va reflejar cuando se hagan muchas
conexiones simultáneas (con distintas máquinas) y no con una sola conexión.
Y otra aclaración válida es que el aumento del tamaño de la ventana a infinito, no aumenta la tasa
de transferencia a infinito.
Por eso cuando realizamos una medición de velocidad de nuestro vínculo de internet hogareño,
debemos hacerlo usando UDP. Es probable que, si realizamos una descarga de archivos o usemos
una página web que se encuentra muy lejana, con alto delay, la performance sea muy baja. Por
eso debemos atender al delay de los contenidos que solemos utilizar.
UDP
UDP es un protocolo sencillo de trasmisión de información, que no cuenta con ningún tipo de
control de flujo o pedido de retransmisiones por errores, lo que no asegura una entrega de
servicio con calidad. Se encuentra especificado en la RFC 768, y se la utiliza habitualmente en
protocolos donde no resistan la solicitud de retransmisión de mensajes (tiempo real) o aquellos
que la pérdida de datos no altere la necesidad del servicio (recolección de datos de gestión).
Los puertos de origen y destino se correspo0nden con los de TCP. La longitud indica el largo del
mensaje y la suma de comprobación determina si hubo errores en el mensaje (encabezado +
información útil).
Listas de acceso
En los routers de una red se pueden realizar un control del tráfico mediante las denominadas listas
de acceso. Se trata de configurar filtros para que determinado tipo de paquetes puedan conmutarse
en la intranet o desde la Internet. Vamos a considerarlas porque son los principios básicos de un
firewall.
Una lista de acceso es una serie de sentencias que determinan si el tráfico está permitido (permit)
o negado (deny) a ser enrutado.
Para realizar los filtrados, el router puede analizar los campos de la capa 3 y 4 y tomar decisiones en
base a:
Las listas de acceso se dividen en estándar y extendida. Las primeras solo van a analizar la dirección
IP de origen y las segundas pueden analizar todos los campos indicados más arriba.
Para crear la lista, lo primero que se configura son los ítems generales para luego pasar a los más
particulares. El router toma cada paquete y lo compara con cada sentencia. En el siguiente diagrama
se observa la lista como un diagrama de flujo, donde cada sentencia representa un cuadro de
decisión. Si la sentencia se cumple, luego se analiza si se trata de un permiso o una negación. Y en
caso de permit, se enruta el paquete. Si la sentencia no coincide con el paquete, pasa a la siguiente
sentencia. Y así continúa hasta la última sentencia donde por definición, si el paquete no coincide
se niega el servicio (implicit deny).
172.16.20.0/24 172.16.40.0/24
s0 s0 s1 s0
RouterA .1 .2 RouterB .1 .2 RouterC
.1 e0 .1 e0 .1 e0
Primero se debe configurar la lista de acceso, en este caso se trata de la lista número 10. En cada
sentencia se indica la dirección IP que debe ser permitida de enrutar. En la última sentencia se indica
que se niega el tránsito de toda otra dirección IP de esa red. Para eso se indica como dirección IP
0.0.0.0 y máscara 255.255.255.255. En algunos equipos esto se indica como any any.
Luego, en el comando de configuración de la interfaz e0 se aplica la lista en modo in. Eso quiere
decir que cada paquete que tenga como dirección de origen alguna de estas cuatro PC, al ingresar
al router por la e0 van a ser permitidos. Cualquier otro paquete que tenga una IP de origen diferente
va a ser rechazado.
En este caso la cantidad de bits 1 indican el grupo de host que debemos considerar en la lista. En el
siguiente ejemplo, 8 bits uno al final de la máscara wildcard nos indica que todos los host de la red
172.16.30.X cumplen con la condición de test.
Por ejemplo, en la siguiente lista, todos esos hosts cumplen la condición y tiene permitido enrutar.
El comando access-list + el número de la lista , luego el comando que permite o niega, más el
protocolo de capa 4 (TCP/UDP/ICMP) más la dirección IP de origen y su máscara, más la IP de destino
y su máscara, más el operador (menor que, mayor que, igual, no igual) más el número de port.
Veamos un ejemplo:
En este caso, permite el protocolo TCP, del host origen 172.16.50.2 al host 172.16.10.2 con la
aplicación http (80).
Los firewalls
Los firewalls son equipos que filtran mensajes según las reglas de seguridad que el administrador le
aplique. En forma complementaria a las listas de acceso, los firewalls son equipos más potentes.
El firewall se identifica como un diodo y una pared, que deja o no pasar mensajes. Habitualmente
cuentan con una o más puertas de WAN que se conectan a los servicios de un ISP, algunas puertas
de LAN donde se encuentra la red privada y una o más puertas de DMZ (zona desmilitarizada).
Por ejemplo, ell equipo de la figura tiene 2 puertos de WAN -5- (óptico u eléctrico), dos puertos DMZ
-4-, doce puertos de LAN. 1 es el puerto de consola y 2 un puerto USB para descargar
configuraciones.
La zona desmilitarizada es usada para publicar servicios en la web: server de correo, web,
transferencia de archivos, centrales telefónicas IP. Esos servidores están protegidos por el hecho
que solo permiten el ingreso de paquetes de la aplicación de destino que corresponde. Si el server,
por alguna razón es hackeado, no se verá afectada la LAN.
El firewall realiza las mismas funciones que las listas de acceso, solo que su configuración es más
simple y amena. Además, el filtrado puede incluir muchos más detalles en el análisis de paquetes.
Eso requiere que el firewall tenga un procesamiento mucho mayor al de un router porque la
inspección de los paquetes es mucho más estricta.
En el gráfico vemos las posibilidades que tiene un firewall comercial de la empresa Fortinet:
En primer lugar, se utiliza como firewall de igual manera que vimos las listas de acceso en los routers.
También permiten realizar VPN conectándose a elementos remotos de la red Internet mediante un
enlace seguro y encriptado que se denomina túnel (lo veremos en la capa WAN).
Permite realizar un control sobre las aplicaciones, limitando aquellas que no se desea permitir, por
ejemplo, los accesos remotos.
Realiza una detección de intrusión. Es habitual que los hackers realicen una investigación y espionaje
de sus víctimas con antelación, para conocer sus capacidades operativas y financieras. Para eso
introducen en la red espías que envían información a servers remotos. Este equipo lo detecta y no
permite el tránsito de esos mensajes.
El antivirus analiza todo el contenido del mensaje, incluyendo la carga útil. Es necesario que el
antivirus del firewall esté debidamente actualizado porque a lista de virus en la web crece
exponencialmente.
El filtrado de URL no permite el tráfico a determinadas páginas web, identificadas en grupos (redes
sociales, drogas, sexo, pornografía, etc) o específicas (www.xxx.com).
El sandboxing es una caja de arena, donde los paquetes sospechosos son introducidos y abiertos
para verificar si tienen virus o actividades maliciosas. La idea es que exploten dentro de la caja de
arena, eliminando el efecto nocivo. Si el paquete no tiene nada, se conmuta hacia la red.
La inspección de SSL se realiza a los paquetes que están encriptados con seguridad SSL, con el fin de
evitar que se encuentren contaminados.
Debe quedar claro que el firewall es solo un elemento de seguridad en toda la gama de acciones y
productos que se deben contemplar en una red. Un administrador debe asesorarse correctamente
sobre todas las posibles formas de ser atacado y dañado, dado que los problemas de hackeos
muchas veces son muy onerosos y pueden llevar compañías a la quiebra, sobre todo si la imagen de
la empresa se ve afectada por el ataque o si los clientes de ellas se sientes vulnerados.