sábado, 12 de enero de 2008

Semestre 2 CCNA, Módulo 10

Módulo 10: TCP/IP intermedio

Descripción general

Los routers utilizan información de la dirección del Protocolo de Internet (IP) en un encabezado IP del paquete para determinar cuál es la interfaz hacia la que se conmutará el paquete para que llegue lo más cerca posible de su destino. Como IP no brinda ningún servicio que ayude a asegurar que el paquete realmente llegue a destino, se describe como un protocolo no confiable, no orientado a conexión que hace uso de entregas de mejor esfuerzo. Si los paquetes se descartan en la ruta, llegan en el orden incorrecto o se transmiten a una velocidad mayor a la que el receptor puede aceptar, IP, por si mismo, no puede corregir el problema. Para resolver los problemas, IP confía en el Protocolo de control de transmisión (TCP). Este módulo describe el TCP y sus funciones e introduce el UDP, otro importante protocolo de Capa 4.

Cada capa del modelo de networking de OSI cumple varias funciones. Estas funciones son independientes de las otras capas. Cada capa espera recibir servicios de la capa inferior y cada una provee ciertos servicios a su capa superior. Las capas de aplicación, presentación y de sesión del modelo OSI son todas parte de la capa de aplicación del modelo TCP/IP, acceden a los servicios de la capa de transporte a través de entidades lógicas llamadas puertos. Este módulo presenta el concepto de puertos y explica su fundamental importancia y la de los números de puerto en el networking con datos.

Los estudiantes que completen este módulo deberán ser capaces de:

* Describir TCP y sus funciones.
* Describir sincronización y control de flujo de TCP.
* Describir operación y procesos de UDP.
* Identificar los números de puerto comunes.
* Describir las múltiples conversaciones entre los host.
* Identificar los puertos que se utilizan para servicios y clientes.
* Describir la numeración de los puertos y los puertos conocidos.
* Comprender las diferencias y la relación entre las direcciones MAC, direcciones IP y los números de los puertos.

10.1 Operación del TCP

10.1.1 Operación del TCP

Las direcciones IP permiten el enrutamiento de los paquetes entre las redes. Sin embargo, IP no garantiza la entrega. La capa de transporte es responsable del transporte confiable y de la regulación del flujo de datos desde el origen hacia el destino. Esto se logra utilizando ventanas deslizantes y números de secuencia junto con un proceso de sincronización que garantiza que cada host se encuentra listo y desea comunicarse.

Para comprender la confiabilidad y el control de flujo, piense en un estudiante que ha estudiado un idioma extranjero durante un año. Ahora imagine que este estudiante visita un país donde se habla ese idioma. Durante las conversaciones, deberá pedirle a la gente que repita lo que ha dicho (para confiabilidad) y que hable despacio, para que pueda entender las palabras (control de flujo). La capa de transporte, la Capa 4 del modelo OSI, provee estos servicios a la capa 5 por medio de TCP.

10.1.2 Sincronización del intercambio de señales de 3 vías

TCP es un protocolo orientado a conexión. Antes de transmitir datos, los dos clientes que desean comunicarse deben llevar a cabo unproceso de sincronización para establecer una conexión virtual para cada sesión entre ellos. Este proceso de sincronización asegura que ambas partesestán listas para la transmisión y permite que los dispositivos determinen los númeors de la secuencia inicial de dicha sesión. Este proceso se llama saludo de tres vías, es un proceso de tres pasospara establecer una conexión virtual entre dos dispositivos. Es muy importante sbaer que este proceso lo inicia un cliente. Para establecer la sesión TCP, el cliente usa un puerto conocido del servicio que desea contactar.

En el paso uno, el cliente inicia la sincronización enviando un paquete SYN para iniciar la conexión. Esto incdica que el paquete tiene un Número secuancial Válido. El bit de SYN se encuentra en el campo de códigodel encabezado del segmento.

En el paso dos, el otro host recive el paquete, graba el Número Secuancial x del cliente, y responde con un Acuse de Recibo (ACK). El bit de control del ACK indica que el campo de Acuse de Recibo contiene un número válido. el ACK es un bit en el campop de código del encabezado del segmento TCP, y el número ACK es un campo de 32 bits en el mismo encabezado. Una vez hecha la conexión, la bandera de ACK se fija para todos los segmentos durante la sesión. El campo de Número de ACK contiene el siguiente Número Secuencial que se espera recibir (x + 1). El número ACK x + 1 significa que el host ya recibió todos los bytes incluyendo x, y espera recibir el byte x + 1. El host también inicia un regreso de sesión, esto incluye un segmento TCP con su propio Número Secuencial y bandera de sincronización.

En el paso tres, el host que inició la conversación responde con un Númeor de ACK de y + 1, el cual es el Número Secuencial del valor del Host B + 1. Esto indica que recibió el ACK anterior y finaliza el proceso de conexión para esta sesión.

Es importante entender que los números secuenciales inciales se usan sólo para comenzar la comunicaión entre dos dispositivos. Actúan como referencia entre los dos dispositivos. Dichos números le dan a cada host la posibilidad de mandar acuses de recibo.

10.1.3 Ataques de denegación de servicio

Esta página enseñará a los estudientes acerca de los ataque de negación de Servicio (DoS). Estos ataques están diseñados para denegar serviciosa host legítimos que tratan de establecer conexiones. Los ataques DoS son muy comunes entre hackers para anular las respuestas delos sistemas. Un tipo de DoS es el inundamiento de SYN o SYN flooding. SYN flooding explota el saludo de tres vías y causa que los dispositivos manden un ACK a direcciones origen que no completarán el saludo.

El saludo de tres vías empieza al mandar un paquete SYN, el cual incluye las IP origen y destino. Ambas direcciones se utilizan para mandar ACK.

Enun ataque DoS, el hacker inicia una sincronización SYN pero falsifica (hace spoof) la dirección IP. Spoofing es un término que se usa para falsificar algo, como una direción IP, para esconder la identidad de uno. En este caso, como la dirección origen del paquete se cambió a una que no existe y por lo tanto es inalcanzable, la sesión TCP se pone en espera hasta que el tiempo de conexión expira. Este estado de espera requiere que el dispositivo que está siendo atacado utilice recursos del sistema, tales como la memoria, hasta que el contador de la conexión se acaba. Los Hackers inundan el host que están atacando con peticiones de sincronización (SYN) falsas para usar todos lso recursos de la conexión y evitar que respondan, logrando una conexión legítima con diche respuesta.

Para defenderse de estos ataques, los administradores del sistema pueden reducir el período de espera de desconexión y aumentar el tamaño de la cola de conexión. También existe software que puede detectar estos tipos de ataques e iniciar medidas de defensa.

10.1.4 Uso de ventanas y tamaño de las ventanas

A menudo, la cantidad de datos que se necesita transmitir es demasiado grande como para ser enviada en un solo segmento de datos. En este caso, los datos deben dividirse en porciones de menor tamaño para permitir su correcta transmisión. TCP tiene la responsabilidad de dividir los datos en segmentos. Esto se puede comparar con la forma en que son alimentados los niños pequeños. Su comida se corta en pedazos más pequeños que sus bocas pueden acomodar. Además, es posible que las máquinas receptoras no sean capaces de recibir datos con la rapidez que el origen los envía, tal vez, porque el dispositivo receptor está ocupado con otras tareas o porque el transmisor simplemente es un dispositivo más robusto.

Una vez segmentados los datos, deben transmitirse hacia el dispositivo destino. Uno de los servicios que provee TCP es el control de flujo que regula la cantidad de datos enviada durante un período de transmisión dado. Este proceso de control de flujo se conoce como uso de ventanas.

El tamaño del a ventana determina la cantidad de datos que se pueden transmitir simultáneamente antes que el destino responda con un Acuse de recibo (ACK). Después que un host transmita el tamañode ventana en bytes, el host debe recibir un ACK indicando que la información se recibió antes de poder enviar más información. Por ejemplo, si la ventana es de 1, se debe generar un ACK por cada byte antes de enviar el siguiente .

TCP usa las ventanas para determinar de forma dinámica el tamaño de la transmisión. Los dispositivos negociasn el tamaño de la ventana a un número específico de bytes para transmitir antes del ACK .

Este proceso de variación dinámica del tamaño de la ventana incrementa la confiabilidad. El tamaño de la ventana se puede basar en los ACKs.

10.1.5 Números de secuencia

TCP divide los datos en segmentos. Los segmentos de datos viajan entonces desde el transmisor hacia el receptor después del proceso de sincronización y la negociación del tamaño de ventana que dicta el número de bytes que es posible transmitir por vez. Los segmentos de datos que se transmiten deben reensamblarse una vez recibidos. No hay garantía alguna de que los datos llegarán en el orden en que se transmitieron. TCP aplica los números de secuencia a los segmentos de datos que transmite de modo que el receptor pueda reensamblar adecuadamente los bytes en su orden original. Si los segmentos TCP llegan desordenados, los segmentos se pueden reensamblar de forma incorrecta. Los números de secuencia le indican al dispositivo destino cómo ordenar correctamente los bytes a medida que arriban.

Estos números de secuencia también actúan como números de referencia de modo que el receptor sabe si ha recibido todos los datos. También identifican las porciones de datos perdidos y así el transmisor puede retransmitir los datos faltantes. Esto ofrece una mayor eficiencia ya que el transmisor sólo necesita retransmitir los segmentos faltantes en lugar de todo el grupo de datos.

Cada segmento TCP se numera antes de su transmisión. Tenga en cuenta que después del puerto destino en el formato del segmento se encuentra la porción del número de secuencia. En la estación receptora, TCP usa los números de secuencia para reensamblar los segmentos hasta formar un mensaje completo. Si falta algún número de secuencia en la serie, ese segmento se vuelve a transmitir.

10.1.6 ACK positivo

El acuse de recibo es un paso frecuente del proceso de sincronización que incluye ventanas deslizantes y secuenciación de datos. En un segmento TCP, el campo número de secuencia está seguido por el campo número de acuse de recibo, también conocido como el campo código.

Uno de los problemas con el protocolo IP no confiable es que no cuenta con un método de verificación para determinar que los segmentos de datos realmente llegan a destino. Por lo tanto, los segmentos de datos pueden enviarse de forma constante sin saber si realmente se recibieron o no. TCP utiliza acuse de recibo positivo y retransmisión para controlar el flujo de datos y confirmar la entrega de los datos.

El acuse de recibo positivo y retransmisión (PAR) es una técnica frecuente que muchos protocolos utilizan para proporcionar confiabilidad. Con PAR, el origen envía un paquete, inicia un temporizador y espera un acuse de recibo antes de enviar el siguiente paquete. Si el temporizador expira antes de que el origen reciba un acuse de recibo, el origen retransmite el paquete y reinicia el temporizador. TCP utiliza acuses de recibo de expectativa, lo que significa que el número de acuse de recibo se refiere al siguiente octeto esperado.

El uso de ventanas es un mecanismo de control de flujo que requiere que el dispositivo origen reciba un acuse de recibo desde el destino después de transmitir una cantidad determinada de datos. Con un tamaño de ventana de tres, el dispositivo origen puede enviar tres octetos al destino. Entonces debe esperar un acuse de recibo. Si el destino recibe los tres octetos, envía un acuse de recibo al dispositivo origen, que ahora puede transmitir otros tres octetos. Si, por algún motivo, el destino no recibe los tres octetos, posiblemente debido a búferes cuya capacidad se ha excedido, no envía un acuse de recibo. Debido a que el origen no recibe un acuse de recibo, sabe que los octetos se deben retransmitir, y que la velocidad de transmisión debe reducirse.

10.1.7 Operación de UDP

La pila del protocolo TCP/IP contiene muchos protocolos diferentes, cada uno diseñado para realizar una tarea determinada. IP provee transporte de Capa 3 no orientado a conexión a través de una internetwork. TCP permite la transmisión confiable, orientada a conexión de los paquetes en la Capa 4 del modelo OSI. UDP proporciona la transmisión de paquetes no orientado a conexión y no confiable de los paquetes en la Capa 4 del modelo OSI.

Tanto TCP como UDP utilizan IP como protocolo subyacente de Capa 3. Además, distintos protocolos de capa de aplicación utilizan TCP y UDP. TCP provee servicios para aplicaciones tales como FTP, HTTP, SMTP y DNS. UDP es el protocolo de capa de transporte utilizado por DNS, TFTP, SNMP y DHCP.

TCP debe utilizarse cuando las aplicaciones requieren la garantía de que un paquete llegue intacto, en secuencia y sin duplicar. El encabezado que se asocia con garantizar la entrega del paquete, a veces, se convierte en un problema al utilizar TCP. No todas las aplicaciones necesitan garantizar la entrega del paquete de datos, por lo tanto, utilizan un mecanismo de entrega no orientado a conexión, más rápido, que aporta el UDP. El estándar del protocolo UDP, que se describe en RFC 768, es un protocolo simple que intercambia segmentos sin acuses de recibo ni entrega garantizada.

UDP no hace uso de ventanas ni acuses de recibo de modo que los protocolos de capa de aplicación deben brindar la detección de errores. El campo Puerto de origen es un campo optativo que sólo se utiliza si la información debe regresar al host transmisor. Cuando un router destino recibe una actualización de enrutamiento, el router origen no solicita nada, de modo que nada debe regresar a la fuente. El campo "Puerto Destino" especifica la aplicación para la cual UDP necesita pasar los datos. Una petición DNS proveniente de un host hacia un servidor DNS suele tener un campo Puerto destino de 53, el número de puerto de UDP para DNS. El campo Longitud identifica el número de octetos de un segmento UDP. El checksum de UDP es optativo pero debería utilizarse para garantizar que no se han dañado los datos durante la transmisión. Para el transporte a través de la red, UDP se encapsula en el paquete IP.

Una vez que el segmento UDP llega a la dirección IP destino, debe haber un mecanismo que permita que el host receptor determine la exacta aplicación en destino. Para este fin se utilizan los puertos destino. Si un host provee servicios de TFTP y DNS, debe ser capaz de determinar cuál es el servicio que necesitan los segmentos UDP que llegan. El campo del Puerto destino del encabezado UDP determina la aplicación hacia la que se enviará el segmento UDP.

10.2 Descripción general de los puertos de la capa de transporte

10.2.1 Múltiples conversaciones entre hosts

En un momento dado, miles de paquetes que proveen cientos de servicios distintos atraviesan una red moderna. En muchos casos, los servidores proveen una gran cantidad de servicios lo que causa problemas singulares para el direccionamiento de los paquetes. Si un servidor ofrece servicios SMTP y HTTP, utiliza el campo puerto destino para determinar cuál es el servicio que solicita el origen. El origen no puede construir un paquete destinado sólo a la dirección IP del servidor porque el destino no sabría cuál es el servicio que se solicita. Un número de puerto debe asociarse a la conversación entre hosts para garantizar que el paquete alcance el servicio adecuado en el servidor. Sin una forma de distinguir entre las distintas conversaciones, el cliente sería incapaz de enviar un mensaje electrónico y navegar una página web utilizando un servidor al mismo tiempo. Debe utilizarse un método para separar las conversaciones de la capa de transporte.

Los hosts que corren TCP/IP asocian los puertos de la capa de transporte con determinadas aplicaciones. Los números de puerto se usan para realizar el seguimiento de las distintas conversaciones que atraviesan la red al mismo tiempo. Los números de puerto son necesarios cuando un host se comunica con un servidor que provee múltiples servicios. Tanto TCP como UDP utilizan números de puerto o socket para enviar información a las capas superiores.

Los fabricantes de software de aplicación han acordado utilizar los números de puerto bien conocidos que se definen en la RFC1700. Toda conversación dirigida a la aplicación FTP utiliza el número de puerto estándar 21. Las conversaciones que no involucran aplicaciones con números de puerto bien conocidos reciben números de puerto elegidos de forma aleatoria de un rango específico. Estos números de puerto se usan como direcciones origen y destino en el segmento TCP.

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

* Los puertos bien conocidos son aquellos desde 0 a 1.023.
* Los puertos registrados son aquellos desde 1.024 a 49.151.
* Los puertos dinámicos y/o privados son aquellos desde el 49.152 al 65.535.

Los sistemas que inician solicitudes de comunicación usan números de puerto para seleccionar las aplicaciones adecuadas. El host que origina la transferencia asigna dinámicamente los números del puerto de origen para estas solicitudes y, en general, son números mayores a 1023. Los números de puerto en el rango de 0 a 1023 se consideran números de puerto públicos y son controlados por la Autoridad de Asignación de Números de Internet (IANA, por sus siglas en inglés).Los números de las casillas de correo postal son una buena analogía de los números de puerto. Es posible enviar una carga postal a un código postal, ciudad y casilla de correo. El código postal y la ciudad dirigen la correspondencia hacia las instalaciones postales correctas mientras que la casilla de correo garantiza la entrega a la persona a quien va dirigida la carta. De igual forma, la dirección IP lleva al paquete hacia el servidor correcto, pero el número de puerto TCP o UDP garantiza que el paquete pase a la aplicación correspondiente.

10.2.2 Puertos para servicios

Los servicios que funcionan en los host deben contar con un número de puerto asignado para que la comunicación se produzca. Un host remoto que intenta conectarse con un servicio espera que el servicio utilice puertos y protocolos de capa de transporte específicos. Algunos puertos, definidos en la RFC 1700, se conocen como puertos bien conocidos y reservados tanto en TCP como UDP.

Estos puertos bien conocidos definen las aplicaciones que se ejecutan sobre los protocolos de la capa de transporte. Por ejemplo, un servidor que provee servicio FTP enviará las conexiones TCP que utilizan los puertos 20 y 21 provenientes de los clientes hacia su aplicación FTP. De esta forma, el servidor puede determinar con exactitud cuál es el servicio que solicita el cliente. TCP y UDP utilizan los números de puerto para determinar el servicio adecuado a las peticiones enviadas.

10.2.3 Puertos para los clientes

Cada vez que un cliente se conecta a un servicio de un servidor, es necesario especificar el puerto de origen y destino. Los segmentos de TCP y UDP contienen campos para los puertos de origen y destino. Los puertos destino o los puertos para servicios, generalmente, se definen utilizando los puertos conocidos. Los puertos de origen configurados por el cliente se determinan de forma dinámica.

En general, un cliente determina el puerto de origen asignando un número mayor a 1023 de forma aleatoria. Por ejemplo, un cliente que intenta comunicarse con un servidor web utiliza TCP y asigna el puerto destino con el número 80 y el puerto origen con 1045. Cuando el paquete llega al servidor, pasa hacia la capa de transporte superior y eventualmente al servicio HTTP que opera en el puerto 80. El servidor HTTP responde a las peticiones del cliente con un segmento que utiliza el puerto 80 como origen y 1045 como destino. De esta manera, los clientes y servidores utilizan los puertos para diferenciar el proceso al que se asocia el segmento.

10.2.4 Numeración de los puertos y números de puerto conocidos

Los números de puerto se representan con 2 bytes en el encabezado del segmento TCP o UDP. Este valor de 16 bits puede hacer que los números de puerto varíen de 0 a 65535. Estos números de puerto se dividen en tres categorías diferentes: puertos bien conocidos, puertos registrados y puertos dinámicos o privados. Los primeros 1023 puertos son puertos bien conocidos. Como su nombre indica, estos puertos se utilizan para los servicios de red bien conocidos, por ejemplo; FTP, Telnet, o DNS. Los puertos registrados varían de 1024 a 49151. Los puertos entre 49152 y 65535 se conocen como puertos dinámicos o privados.

10.2.5 Ejemplo de múltiples sesiones entre hosts

Se usan números de puerto para rastrear múltiples sesiones que pueden ocurrir entre hosts. Los números de puerto de origen y destino se combinan con la dirección de red para formar un socket. Un par de sockets, uno en cada host, forman una única conexión. Por ejemplo, un host puede tener una conexión telnet, puerto 23 mientras que, al mismo tiempo, puede navegar la red, puerto 80. Las direcciones IP y MAC son las mismas porque los paquetes provienen del mismo host. Por lo tanto, cada conversación en el extremo origen necesita su propio número de puerto y cada servicio solicitado necesita de su propio número de puerto.

10.2.6 Comparación de direcciones MAC, direcciones IP y números de puerto

Estos tres métodos de direccionamiento resultan a menudo confusos, pero es posible evitar la confusión si se explican las direcciones haciendo referencia al modelo OSI. Los números de puerto se encuentran en la capa de transporte y la capa de red les brinda servicio. La capa de red asigna una dirección lógica (dirección IP) y recibe servicios de la capa de enlace de datos quien le asigna una dirección física (dirección MAC).

Una clara analogía podría ser la de una carta normal. La dirección de la carta consta de nombre, calle, ciudad y estado. Estos pueden compararse con el puerto, la dirección MAC y la dirección IP que se utilizan para los datos de red. El nombre en el sobre equivale al número de puerto, la calle es la dirección MAC, y la ciudad y estado son la dirección IP. Es posible enviar varias cartas a la misma calle, ciudad y estado pero incluye distintos nombres. Por ejemplo, se podrían enviar dos cartas a la misma casa, una dirigida a John Doe y la otra a Jane Doe. Esto es análogo a múltiples sesiones con diferentes números de puerto.

by sdominguez.com

No hay comentarios: