Está en la página 1de 14

Administrador de redes CLASE 5

Capa de transporte. Protocolo TCP. Puertos.

INTRODUCCION

Las funciones principales de la capa de transporte son transportar y regular el flujo de información
para garantizar la conectividad de extremo a extremo entre aplicaciones de host que se están
comunicando en red de manera confiable, eficiente y precisa, utilizando para ello los servicios de
la Capa de Red. Podemos resumir la funcionalidad de la Capa de Transporte en una corta frase:
calidad de servicio.

Los protocolos de transporte tienen la función de actuar de interfaces entre los niveles orientados
a la aplicación y los niveles orientados a la red dentro de la jerarquía de protocolos TCP/IP. En la
Capa de Transporte aparece un protocolo muy importante para una correcta transmisión de datos
entre redes, el Protocolo para el Control de la Transmisión (TCP), que ofrece maneras flexibles y de
alta calidad para crear comunicaciones de red confiables, sin problemas de flujo y con un nivel de
error bajo.

Para ello, TCP en el host fuente parte el flujo de bits en mensajes discretos y los envía, mientras
que TCP en el host destino los recibe y los monta de nuevo para crear el flujo original, manejando
el control de flujo de la transmisión.

TCP (TRANSMISSION CONTROL PROTOCOL). CARACTERISTICAS

Es uno de los protocolos fundamentales en Internet. Fue creado entre los años 1973 y 1974 por
Vint Cerf y Robert Kahn.

Muchos programas dentro de una red de datos compuesta por redes de computadoras, pueden
usar TCP para crear “conexiones” entre sí a través de las cuales puede enviarse un flujo de datos.
El protocolo garantiza que los datos serán entregados en su destino sin errores y en el mismo
orden en que se transmitieron. También proporciona un mecanismo para distinguir distintas
aplicaciones dentro de una misma máquina, a través del concepto de puerto.

TCP da soporte a muchas de las aplicaciones más populares de Internet (navegadores, intercambio
de ficheros, clientes FTP, etc.) y protocolos de aplicación HTTP, SMTP, SSH y FTP.

TCP es un protocolo estándar y se describe en el RFC 793 - Protocolo de Control de Transmisión.

TCP mantiene un diálogo entre el origen y el destino mientras fragmenta y empaqueta la


información de la capa de aplicación en unidades de tamaño adecuado, denominadas segmentos,
debiendo ocuparse de los datos independientemente del hardware y del software que tenga la red
con la que se esté trabajando.

1
Administrador de redes CLASE 5

 Características del protocolo TCP

 Es un protocolo orientado a la conexión, lo que significa que se establece una conexión entre
el emisor y el receptor antes de que se transfieran los datos entre ambos. Los segmentos de la
Capa de Transporte viajan de un lado a otro entre dos hosts para comprobar que la conexión
exista lógicamente para un determinado período, lo que se conoce como conmutación de
paquetes. Al circuito lógico por el que viajan los paquetes se le denomina circuito virtual,
porque aunque cada paquete enviado desde el host origen puede viajar por un camino o ruta
diferente hasta llegar al host destino por medio del protocolo IP, TCP consigue que parezca
que sólo existe un único circuito de comunicación entre ambos host. Con ello, el servicio
controla el flujo entre los host que se están comunicando, entregando al receptor
exactamente la misma secuencia de bytes que le ha pasado el trasmisor en el host origen.
 Es un protocolo fiable, implementando mecanismos para conseguir que la información
enviada por el emisor llegue de forma correcta al receptor. De esta forma, las aplicaciones que
envían datos no tienen porqué preocuparse de la integridad de los mismos, dando por hecho
que los datos recibidos son correctos. TCP aporta la fiabilidad de que carece el protocolo
inferior IP. Para ello, cada paquete se trata de forma independiente, asignándole el emisor un
número identificador único, lo que permite un posterior control de los paquetes enviados y
recibidos.
 Es un protocolo de flujo no estructurado, con posibilidad de enviar información de control
junto a datos.
 Es un protocolo con transferencia de memoria intermedia , sistema mediante el cual, y con
objeto de hacer eficiente la transferencia y minimizar el tráfico de red, se van almacenando
datos suficientes del flujo de transmisión hasta completar un paquete lo suficientemente largo
como para ser enviado. En el lado receptor ocurre un proceso similar, almacenándose los
datos recibidos hasta completar una secuencia completa y correcta de ellos, momento en el
que son pasados al proceso de aplicación de destino. De esta forma, la transferencia a través
de la red puede ser sumamente eficiente. Estos datos se almacenan en unas memorias
intermedias, denominadas buffers.
 Usa conexiones full-dúplex, en las que se permite la transferencia de datos concurrente en
ambas direcciones, sin ninguna interacción aparente desde el punto de vista de las
aplicaciones emisora y destinataria. Este sistema presenta la ventaja de que el software de
protocolo puede enviar datagramas de información de control de flujo al origen, a la vez que
lleva datos en dirección opuesta, con lo que se reduce el tráfico de red.
 Usa conexiones punto a punto, en cada conexión tiene exactamente dos puntos terminales.
TCP no reconoce ni la multitransmisión ni la difusión.

Una conexión TCP es en realidad una corriente de bytes, no una corriente de mensajes. Además,
los límites de los mensajes enviados por las aplicaciones no se conservan de extremo a extremo,
por lo que un mensaje de 1000 bytes enviado por una aplicación puede dividirse por ejemplo en
dos bloques de 400 bytes y otro de 200 bytes, siendo luego tarea del protocolo TCP del host
destino el ensamblar correctamente las partes para reconstruir el mensaje original.

2
Administrador de redes CLASE 5

Cuando una aplicación pasa datos al protocolo TCP, éste puede enviar los datos de inmediato o
almacenarlos en una memoria buffer intermedia, hasta reunir los suficientes datos como para
enviarlos juntos. Esta elección es exclusiva de TCP.

TCP. ESTABLECIENDO UNA CONEXIÓN. SALUDO DE 3 VIAS

Antes de poder transmitir datos entre dos host es necesario que el protocolo TCP abra una
conexión entre ellos. Los servicios orientados a conexión se dividen en tres fases:

 Fase de establecimiento de la conexión, en la que se determina una ruta virtual única


entre el origen y el destino. Normalmente los recursos se reservan en este momento para
garantizar un grado de servicio constante.
 Fase de transferencia de datos, durante la cual los datos se transmiten secuencialmente
siguiendo la ruta establecida, llegando a su destino en el orden en que se enviaron. Esto
es posible aunque en el camino se pierdan paquetes o lleguen dañados, ya que los
mecanismos de control que implementa TCP permiten el reenvío de los mismos y el
almacenamiento de los restantes hasta que se completa la secuencia original completa.
 Fase de terminación de la conexión, consistente en terminar la conexión entre el origen y
el destino cuando ya no se necesita.

Los hosts TCP establecen una sesión orientada a conexión entre sí a través de un intercambio de
señales de tres vías. Una secuencia de intercambio de señales de tres vías/conexión abierta
sincroniza una conexión en ambos extremos antes de transferir los datos. Este intercambio de
números introductorios de secuencia de conexión es importante, pues garantiza que si se pierden
datos debido a problemas de transmisión, se puedan recuperar más tarde.

 Mecanismo del Saludo de 3 Vías

 El host receptor, que en el caso de más común será un servidor, espera pasivamente una
conexión ejecutando las primitivas LISTEN y ACCEPT.
 En primer lugar, el host que desea iniciar la conexión ejecuta una primitiva CONNECT
especificando la dirección IP y el puerto con el que se desea conectar, el tamaño máximo del
segmento que está dispuesto a aceptar y opcionalmente otros datos, como alguna contraseña
de usuario. Entonces la primitiva CONNECT hace una apertura activa, enviando al otro host un
paquete que tiene el bit SYN (ver formato de un segmento TCP más abajo) activado,
indicándole también el número de secuencia inicial "x" que usará para enviar sus mensajes.
 El host receptor recibe el segmento revisa si hay algún proceso activo que haya ejecutado un
LISTEN en el puerto solicitado, es decir, preparado para recibir datos por ese puerto. Si lo hay,
el proceso a la escucha recibe el segmento TCP entrante, registra el número de secuencia "x"
y, si desea abrir la conexión, responde con un acuse de recibo "x + 1" con el bit SYN activado e
incluye su propio número de secuencia inicial "y", dejando entonces abierta la conexión por
su extremo. El número de acuse de recibo "x + 1" significa que el host ha recibido todos los
octetos hasta e incluyendo "x", y espera "x + 1" a continuación. Si no desea establecer la
conexión, envía una contestación con el bit RST activado, para que el host en el otro extremo
lo sepa.
 El primer host recibe el segmento y envía su confirmación, momento a partir del cual puede
enviar datos al otro extremo, abriendo entonces la conexión por su extremo.

3
Administrador de redes CLASE 5

 La máquina receptora recibe la confirmación y entiende que el otro extremo ha abierto ya su


conexión, por lo que a partir de ese momento también puede ella enviar datos. Con esto, la
conexión ha quedado abierta en ambos sentidos.

Observamos pues que son necesarios tres segmentos para que ambas máquinas abran sus
conexiones y sepan que la otra está también preparada para la transmisión. De ahí el nombre de
saludo de tres vías.

Te puedes preguntar por qué los dos host utilizan números de secuencia distintos, "x" e "y", en vez
de usar el mismo. Con ello se pretende principalmente evitar conflictos entre las máquinas en
casos extremos, por ejemplo, cuando se corta una conexión nada más empezar. Es este caso, si
ambas han empezado su secuencia en cero es posible que el receptor entienda que la segunda
conexión es una continuación de la primera (en caso de usar los mismos puertos en ambas), con el
consiguiente error en la transmisión. Por este motivo, al establecer una conexión cada máquina
genera un número aleatorio basado en un esquema de reloj, con pulso cada 4 segundos, y lo envía
como inicio de secuencia.

 Mecanismo de cierre de conexión

Una vez abierta la conexión, ambas máquinas comienzan la transmisión de datos entre ellas, y
continúan así hasta que no quedan más datos que transmitir, momento en el que es necesario
cerrar la conexión. Para ello se utiliza una variante del mecanismo de tres vías usado para la
apertura de la conexión, aunque algo más complicado, debido a que, como las conexiones son full-
dúplex, es necesario cerrar cada uno de los dos sentidos de comunicación de forma
independiente. El proceso que tiene lugar entonces es el siguiente:

4
Administrador de redes CLASE 5

 La máquina emisora, que ya no tiene más datos que transmitir, envía un segmento TCP con el
bit FIN activado y cierra el sentido de envío en la conexión, manteniendo abierto el sentido
de recepción.
 El host receptor recibe el segmento con el bit FIN activado, devolviendo la correspondiente
confirmación, informando a la aplicación receptora de los datos de la petición de cierre,
siendo ésta la que decide el cierre del otro sentido de conexión. Mientras tanto, envía un
segmento ACK.
 El host emisor recibe el correspondiente segmento ACK de acuse de recibo.
 Cuando la máquina receptora decide cerrar la comunicación envía un segmento al emisor con
el bit FIN activado.
 La primera máquina recibe este segmento, enviando el correspondiente acuse de recibo ACK
(aunque ha cerrado su sentido de conexión sigue devolviendo confirmaciones).
 La máquina receptora recibe el segmento ACK y cierra definitivamente la conexión.

SEGMENTO TCP

El protocolo TCP es el encargado de dividir el mensaje original en segmentos de menor tamaño,


más manejables, que serán luego empaquetados en datagramas o paquetes y dirigidos a través del
protocolo IP de forma individual, y añade a cada uno de los datagramas información necesaria
para su manejo, envío y control de errores en la transmisión. Esta información se añade al inicio de
los datos que componen el datagrama en forma de cabecera, que contiene al menos 160 bits
repartidos en varios campos con diferente significado. El tamaño de esta cabecera tiene que ser
múltiplo de 32 bits, por lo que de ser necesario se puede añadir a ella un campo de tamaño
variable, conteniendo ceros al final, para conseguir el tamaño adecuado. Cada uno de los
segmentos así creados viajará en el campo de datos de un datagrama IP diferente.

5
Administrador de redes CLASE 5

El tamaño final de los segmentos es muy importante. Si el segmento es muy grande habrá que
dividirlo en partes de tamaño tal que puedan ser incluidas dentro de un datagrama, con la
consiguiente pérdida de rendimiento. Y si son muy pequeños se estarán enviando más cabeceras
que datos. Hay pues que elegir el tamaño de los segmentos de tal forma que no sea necesario
fragmentarlos en trozos. Hay dos límites para el tamaño de los segmentos: por un lado el tamaño
máximo de un paquete IP, que es de 64 Kbytes, y por otro la Unidad de Transferencia Máxima
(MTU) de cada red. La MTU de una red fija el tamaño máximo que pueden tener los datagramas
transmitidos por ella. Si los datagramas son mayores que la MTU de la red, se deben fragmentar
en varias partes, lo que reduce el rendimiento del sistema.

Si un segmento TCP pasa a través de una serie de redes sin fragmentar y luego entra en una cuya
MTU es inferior al segmento, el router frontera entre ambas redes deberá dividir el segmento en
varios más pequeños. Entonces, cada segmento nuevo recibe sus propias cabeceras TCP e IP.

Cuando se envía un mensaje dividido en datagramas, el orden de llegada de éstos al destino no


tiene porqué ser el correcto, pudiendo llegar cada uno de ellos en cualquier momento y en
cualquier orden, e incluso puede que algunos no lleguen a su destino o lleguen con información
errónea. Para corregir estos problemas, TCP se encarga de numerar los datagramas antes de ser
enviados, de manera que sea posible volver a unirlos en el destino en el orden adecuado, lo que
permite además solicitar de nuevo el envío de aquellos datagramas individuales que no hayan
llegado o que contengan errores, sin que sea necesario reenviar el mensaje completo.

El formato estándar de un segmento TCP es el siguiente:

6
Administrador de redes CLASE 5

El significado de sus campos es el siguiente:

 Puerto TCP origen: campo obligatorio de 16 bits que especifica el puerto del host origen que
se envía el segmento.
 Puerto TCP destino: campo obligatorio de 16 bits que especifica el puerto del host destino al
que se envía el segmento.
 Número de secuencia: campo obligatorio de 32 bits que identifica el primer byte del campo de
datos. En este protocolo no se enumeran segmentos sino bytes, por lo que este número indica
el primer byte de datos que hay en el segmento. Al principio de la conexión se asigna un
número de secuencia inicial (ISN, Initial Sequence Number) y a continuación los bytes son
numerados consecutivamente.
 Número de acuse de recibo (ACK): campo obligatorio de 32 bits. TCP utiliza la técnica de
piggybacking para reconocer los datos. Cuando el bit ACK está activo, este campo contiene el
número de secuencia del primer byte que espera recibir. Dicho de otra manera, el número
ACK - 1 indica el último bit reconocido.
 Longitud de cabecera (HLEN): campo obligatorio de 4 bits quei>ndica el número de palabras
de 32 bits que hay en la cabecera. De esta manera el TCP puede saber dónde se acaba la
cabecera y por lo tanto donde empieza los datos. Normalmente el tamaño de la cabecera es
de 20 bytes por lo que en este campo se almacenará el número 5. Si el TCP utiliza todos los
campos de opciones la cabecera puede tener una longitud máxima de 60 bytes
almacenándose en este campo el valor 15.
 Reservado: campo de 6 bits que actualmente se establece en cero, y que está reservado para
usos futuros.
 Indicadores o campos de control: campo de 6 bits que contienen funciones de control (como,
por ejemplo, configuración y terminación de una sesión). Cada uno de los bits recibe el
nombre de indicador y cuando está a 1 indica una función específica del protocolo:

 URG: campo puntero de urgencia. Indica que el segmento contiene datos urgentes, lo
que hace que el número de secuencia se traslade dónde están dichos datos. Se
complementa con el campo "Marcador urgente", en el que se indica el número de
datos urgentes que hay en el segmento.
 ACK: campo número de acuse de recibo. Hay que tener en cuenta que un mismo
segmento puede transportar los datos en un sentido y las confirmaciones en el sentido
opuesto de la comunicación. Indica por tanto que tiene significado el número que hay
almacenado en el campo "Número de acuse de recibo".
 PSH: campo push, que implica que la aplicación ha solicitado enviar los datos
existentes en la memoria temporal sin esperar a completar el segmento. De esta
7
Administrador de redes CLASE 5

manera se consigue que los datos no esperen en la memoria receptora hasta


completar un segmento de dimensión máxima.
 RST: campo de interrupción de la conexión actual, usado cuando hay un problema en
la conexión, que sirve para hacer un reset de la conexión. Por ejemplo, cuando un
paquete llega al receptor y no hay un proceso de aplicación esperándolo.
 SYN: campo para la sincronización de los números de secuencia, usado al crear una
conexión para indicar al otro extremo cuál va a ser el primer número de secuencia con
el que va a comenzar a transmitir, y que puede ser diferente de cero. Si una solicitud
de conexión tiene SYN=1 y ACK=0, la aceptación de la conexión tendrá SYN=1 y ACK=1.
 FIN: campo que indica a la aplicación que ya no hay más datos a transmitir. Se usa para
solicitar el cierre de la conexión actual. En realidad, trás cerrar una conexión, un
proceso puede continuar recibiendo datos indefinidamente.

 Ventana: campo de 16 bits que indica cuántos bytes tiene la ventana de transmisión del
protocolo de control de flujo utilizado en el mecanismo de ventanas deslizantes. A diferencia
de lo que ocurre en los protocolos del nivel de enlace, en los que la ventana era constante y
contaba tramas, en el TCP la ventana es variable y cuenta bytes. Contiene el número de bytes
de datos comenzando con el que se indica en el campo de confirmación y que el que envía
está dispuesto a aceptar.
 Checksum TCP: campo de 24 bits que contiene una suma de comprobación de errores del
segmento actual, calculada del encabezado y de los campos de datos, y que contiene también
las direcciones IP de origen y destino.
 Marcador urgente: campo de 8 bits que se utiliza cuando se están enviando datos urgentes
que tienen preferencia sobre todos los demás, y que indica el siguiente byte del campo
"Datos" que sigue a los datos urgentes, con lo que el destino puede identificar dónde terminan
éstos. Es decir, cuando el indicador "URG" está activo, este campo indica cual es el último byte
de datos que es urgente. De esta manera el receptor puede saber cuántos datos urgentes
llegan. Este campo es utilizado por algunas aplicaciones como telnet, rlogin y ftp.
 Opciónes: campo que si está presente permite añadir una única opción de entre las siguientes:

 Tiemstamp, para marcar en qué momento se transmitió el segmento y de esta manera


monitorizar los retardos que experimentan los segmentos desde el origen hasta el destino.
 Aumentar el tamaño de la ventana.
 Indicar el tamaño máximo del segmento que el origen puede enviar.

 Relleno: bits de relleno para completar el tamaño del segmento TCP para que sea múltiplo de
32 bits.
 Datos: datos de protocolo de capa superior que se envían entre sí las aplicaciones.;

De forma similar, si el programa de aplicación genera bloques de datos muy largos, el software de
protocolo puede dividir cada bloque en partes más pequeñas para su transmisión.

Para aplicaciones en las que los datos se deben entregar aunque no se llene la memoria
intermedia, el servicio de flujo proporciona un mecanismo de empuje o push, que obliga al
software de protocolo a transferir todos los datos generados sin esperar a que se llene la memoria
intermedia.

8
Administrador de redes CLASE 5

Otros datos importantes de la cabecera TCP son el número de puerto origen y el de puerto
destino. Los puertos proporcionan una manera práctica de distinguir entre las distintas
transferencias de datos, ya que un mismo ordenador puede estar involucrado en varias
transferencias simultáneas.

Para poder controlar la fiabilidad de la transmisión de datagramas que forman el mensaje y


detectar los posibles errores y pérdidas de información se incluye en la cabecera de los mismos un
campo de 16 bits, calculado a partir de la información contenida en el datagrama completo,
denominado checksum (suma de chequeo). Cuando el equipo destino recibe el datagrama vuelve
a calcular el checksum del mismo, comprobando que es igual que el incluido por el emisor en la
cabecera. Si son distintos, el datagrama se ha recibido con errores, por lo que se vuelve a solicitar
de nuevo su envío. Si es el mismo, el cliente envía un datagrama de confirmación al servidor, que
contiene en su cabecera un campo de validación 32 bits, llamado Acknowledgment Number. El
servidor está a la espera de la llegada de estos paquetes especiales de confirmación, por lo que si
transcurrido un tiempo determinado no ha recibido el correspondiente a un datagrama, lo vuelve
a enviar, aunque por razones de eficiencia los datagramas se suelen enviar sin esperar esta
confirmación.

TCP. SEGURIDAD

Uno de los posibles ataques a una máquina remota es el conocido como IP spoofing, consistente
en suplantar a otra máquina en una comunicación entre dos host. Si un atacante consigue meterse
en una comunicación entre dos máquinas y cambiar las referencias de los paquetes transmitidos
por las suyas propias, los datos le llegarán a él, en vez de al destinatario real.

Si bien suplantar la dirección Ip de una de las máquinas es relativamente fácil, el problema con el
protocolo TCP es que los segmentos van referenciados con el número de secuencia TCP
correspondiente, número que es aleatorio y diferente para cada máquina y conexión.

El posible atacante se encuentra entonces con dos problemas: cambiar la dirección IP por la suya
propia y mantener la secuencia de los paquetes en el diálogo con la máquina víctima. Estos
problemas, aunque complicados, tienen solución, ya que conectándose a un puerto y recibiendo
unos cuantos paquetes se puede calcular la secuencia TCP que se está usando en la conexión.

Una vez conseguida la suplantación, la máquina víctima creerá que se está comunicando con un
destinatario autorizado, cuando en realidad está enviando posibles datos sensibles a un
desconocido.

La mejores formas de prevenir este tipo de ataques son:

 Restringir las direcciones locales que procedan de fuera de nuestra red.


 Usar un firewall, ya que estos dispositivos trabajan con los módulos del kernel del sistema
operativo, no limitándose tan solo a escuchar puertos.

9
Administrador de redes CLASE 5

 Filtrar determinados servicios que son vulnerables a este ataque, como servicios de
autenticación o X Windows.
 Utilizar sistemas de encriptación de datos.

PUERTOS Y SOCKETS.

La mayoría de los Sistemas Operativos actuales soportan el multiproceso, mediante el cual varios
procesos se pueden estar ejecutando a la vez en una máquina, de los cuales puede haber distintos
de ellos comunicándose por red al mismo tiempo con la misma máquina o con máquinas
diferentes.

En este entorno, decir que un proceso de la máquina receptora es el destino final de un datagrama
concreto enviado por otro proceso de la máquina emisora es una afirmación que presta a
confusión, ya que los procesos son dinámicos, se crean y se destruyen constantemente, por lo que
un proceso en el ordenador emisor en un momento dado no puede saber qué proceso del equipo
receptor es el destinatario de los paquetes que está enviando. Además, para una correcta
comunicación necesitamos saber qué función del equipo receptor es la encargada de recibir los
paquetes, independientemente del proceso que ha lanzado dicha función.

TCP puede adaptarse dinámicamente a las propiedades de internet y manejar fallos de muchas
clases. Para obtener los servicios de este protocolo, el mandador y el receptor deben crear unos
puntos terminales de conexión, denominados sockets. Cada socket contiene la dirección IP del
host y un número de 16 bits que es de carácter local al host, denominado puerto de protocolo. Los
primeros 256 puertos son puertos bien conocidos, y se usan para servicios comunes, como HTTP,
FTP, etc.

 socket=dirección IP+puerto de protocolo

Una conexión viene definida por dos puntos extremos (sockets), permitiendo TCP que varias
conexiones compartan un punto extremo final (conexiones múltiples a la vez), al estar cada una de
ellas identificada por una pareja IP-puerto de forma única.

Para obtener un servicio TCP o UDP debe establecerse explícitamente una conexión entre un
socket del host transmisor y un socket del host receptor. Para ello se usan determinadas primitivas
de llamada a los sockets, entre las que destacan las siguientes:

 SOCKET: que crea un nuevo punto terminal de conexión.


 BIND: que conecta una dirección local a un socket.
 LISTEN: que anuncia la disposición de aceptar conexiones, indicando también el tamaño
de cola.
 ACCEPT: que bloquea al invocador hasta la llegada de un intento de conexión.
 CONNECT: que intenta establecer activamente una conexión.
 SEND: que envía datos a través de la conexión.
 RECEIVE: que recibe los datos de la conexión.
 CLOSE: que cierra la conexión.

10
Administrador de redes CLASE 5

Para que se pueda crear una conexión entre dos host es necesario que el extremo servidor haga
una apertura pasiva del puerto, quedándose a la escucha en el mismo a la espera de peticiones de
conexión, mientras que el extremo cliente debe realizar una apertura activa en el puerto servidor,
abriendo un puerto propio y poniéndose en conexión con el puerto que está escuchando en el
servidor.

Generalmente los servidores mantienen abiertos una serie de puertos conocidos estándares, en
los que un programa concreto (que se suele denomina demonio) permanece a la espera de
peticiones de conexión.

Los puertos van a ser los destinatarios finales de los datagramas en una comunicación entre host
de una red. Cada puerto de protocolo podemos imaginarlo como una vía de entrada de
información, como un punto de un host que permite la entrada de paquetes a través de él. Si
queréis, podéis tener un concepto mental de puerto como una "puerta" de acceso a los niveles de
aplicación, una cola de entrada en la que el software de protocolo coloca los datagramas
entrantes.

Tanto TCP como UDP usan números de puerto para enviar información a las capas superiores. Los
números de puerto se usan para mantener un seguimiento de las distintas conversaciones que
atraviesan la red al mismo tiempo.

Para poder establecer una comunicación correcta entre dos máquinas, el emisor necesita conocer
tanto la dirección IP como el número de puerto de protocolo del destino dentro de la máquina
receptora. Estos puertos los proporciona los protocolos UDP y TCP (capa de transporte), y
mediante ellos se puede distinguir entre muchos programas que se ejecutan a la vez dentro de
una misma máquina.

EL concepto de puerto en TCP es más complejo que en UDP, ya que TCP utiliza para comunicarse
una conexión, no el puerto de protocolo, como su abstracción fundamental: estas conexiones se
identifican por un par de puntos extremos. Un punto extremo es un par de números host-puerto,
en donde host es la dirección IP de un anfitrión y puerto es un puerto TCP en dicho anfitrión.

Las conexiones vienen definidas por dos puntos extremos, permitiendo TCP que varias conexiones
compartan un mismo punto extremo, siendo los puertos los encargados de distinguir las distintas
conexiones. Las aplicaciones utilizan los puertos para recibir y transmitir mensajes.

11
Administrador de redes CLASE 5

Cada puerto de protocolo viene identificado por un número de 16 bits, lo que nos da 65.536
puertos posibles en cada ordenador, que se identifican por su correspondiente número en base
decimal. TCP combina la asignación estática de números de puerto con la asignación dinámica,
mediante la denominada asignación de puertos bien conocidos para aplicaciones servidoras
(asignación estática) y la asignación del resto de los puertos disponibles a las aplicaciones cliente
conforme los vayan necesitando (asignación dinámica).

Los números de puerto tienen los siguientes intervalos asignados:

 Los números inferiores a 255 se usan para aplicaciones públicas.


 Los números del 255 al 1023 son asignados a empresas para aplicaciones comercializables.
 Los números superiores a 1023 no están regulados, y se usan generalmente para
asignación dinámica.

Cuando una aplicación cliente quiere comunicarse con una aplicación servidora de otro host busca
un número de puerto libre y lo utiliza para transmitir los datos, mientras que en el otro host la
aplicación servidora permanece a la escucha en su puerto bien conocido para recibir los datos. Por
ejemplo, cualquier conversación destinada a la aplicación FTP utiliza el número de puerto estándar
21.

Para optimizar su funcionamiento los puertos poseen una memoria intermedia, denominada
BUFFER, situadas entre los programas de aplicación y la red. Las aplicaciones transmiten los datos
a los puertos, guardándolos éstos en sus buffers hasta que pueden ser enviados por la red. Cuando
llegan al host destino, los datos son almacenados de nuevo en los buffers hasta que la aplicación
receptora esté preparada para recibirlos.

SEGURIDAD Y PUERTOS

Al ser los puertos los puntos de entrada de paquetes de datos a una máquina, son también puntos
peligrosos por su vulnerabilidad. En general, no es conveniente tener más puertos abiertos que
aquellos que son necesarios para mantener activos los servicios de red que necesitemos usar.

12
Administrador de redes CLASE 5

Y no solo un puerto abierto es una posible entrada de datos-programas no deseados en nuestra


máquina, si no que diferentes aplicaciones usadas por piratas informáticos se basan en la apertura
de puertos de número superior al 1023 para obtener por ellos información no autorizada de
nuestro ordenador.

Por ejemplo, eso es lo que hacen troyanos como Back Oriffice para permitir a terceros la
administración remota de nuestra máquina, con lo que pueden copiar o borrar ficheros nuestros,
coger claves secretas e incluso formatearnos el disco duro.

Es por lo tanto conveniente cerrar los puertos de nuestra máquina que no vayamos a usar y
realizar de vez en cuando un escanéo de los puertos que tenemos abiertos, sobre todo si
sospechamos que se están ejecutando comandos o aplicaciones no deseadas en nuestro equipo.

Para ello disponéis del comando netstat, visto antes, o podéis usar uno de los muchos programas
shareware o freeware escaneadores de puertos disponibles en Internet.

Una de las técnicas básicas de ruptura de seguridad de un servidor u host es el escaneo inicial de
sus puertos, para ver qué servicios están corriendo en él. Si un determinado puerto está abierto el
daemon correspondiente estará escuchando en é, situación que se puede aprovechar para
intentar penetrar a través de ese puerto en el sistema.

Existen diferentes técnicas de escaneo de puertos, desde el TCP connect, usando primitivas
CONNECT, hasta el TCP SYN scanning, que establece solo media conexión con el host atacado.
También es posible realizar escaneos usando el protocolo UDP, e incluso a través del protocolo
FTP. Varían unas de otras en el sistema usado y, sobre todo, en la anonimidad que permite al
atacante, ya que una de sus metas principales es no ser detectado.

Una vez realizado el escaneo y averiguados los puertos que la máquina objeto del ataque tiene
abiertos, lo que se suele hacer es intentar conectar con ella por cada uno de esos puertos,
generalmente mediante el protocolo TELNET, lo que permite en muchos casos averiguar el tipo de
servidor que corre escucha en ese puerto y su versión. Y a partir de aquí, buscar exploits para ese
servidor y versión.

 Estado de los puertos

 Abierto: La aplicación que está a la escucha en el puerto acepta conexiones que pueden
ser TCP o UDP, y en el primer caso devuelve un paquete SYN-ACK. Encontrar un puerto en
este estado es el objetivo habitual de un atacante.
 Cerrado: El puerto recibe paquetes y responde con un paquete RST, pero no hay ninguna
aplicación a la escucha. Detectar un puerto abierto y otro cerrado en una máquina puede
ayudar a determinar el sistema operativo que se está ejecutando.
 Filtrado: Los paquetes que se envían no llegan al puerto y por lo tanto no puede decidir si
está abierto o cerrado. Este estado nos indica que tenemos delante algún tipo de
cortafuegos.

13
Administrador de redes CLASE 5

14

También podría gustarte