3. Protocolos TCP/IP.
El desarrollo actual de Internet ha sido posible gracias a la utilización de esta pila de
protocolos. Su extrema sencillez ha facilitado la intercomunicación entre múltiples redes y que se
haya erigido como el protocolo de transmisión por antonomasia.
3.1. Definición. Modelo.
TCP/IP es el protocolo usado en Internet. Con este protocolo tiene que funcionar cualquier ordenador que quiera utilizar cualquier servicio de Internet. En Internet hay muchas clases distintas de ordenadores, con distinto hardware, distinto software, integrados o no en distintos tipos de redes; pero todos ellos tienen que tener en común el protocolo TCP/IP.
En realidad TCP/IP, no es un único protocolo, sino un conjunto de ellos, que cubren las distintas capas del modelo de referencia OSI. Como los dos protocolos más importantes son TCP e IP, estos son los que han dado el nombre al conjunto.
TCP/IP fue desarrollado a principio de los años 70 por el ministerio de Defensa norteamericano, para la red ARPANET. Adoptó su forma actual en 1983, como consecuencia del proyecto DARPA (Defense Advanced Research Projects Agency), de la defensa norteamericana. Nació para interconectar distintas redes en entorno operativo
UNIX.
Soluciona básicamente el problema de interconectar distintas redes, divididas en subredes,
enrutando el tráfico entre ellas.
Como la comunicación entre ordenadores es de una gran complejidad, el problema se ha dividido en otros menos complejos, creándose varios niveles. Cada nivel soluciona un problema en la comunicación y tiene asociado uno o varios protocolos para ello. El modelo de red Internet tiene 4 capas o niveles, que son:
1. Aplicación: aquí están incluidos los protocolos destinados a proporcionar servicios, tales como transferencia de ficheros (FTP), navegación en Internet (HTTP), correo electrónico (SMTP), etc.
2. Transporte: aquí están incluidos los protocolos destinados a proporcionar el transporte de los datos con la fiabilidad suficiente. En este nivel la información es dividida en paquetes, para que la transmisión sea más eficiente. Cuando llega al receptor, este mismo nivel se encarga de reordenar los paquetes y unirlos para recomponer la información. Los protocolos que se encargan de esto son, TCP (Transfer Control Protocol) y UDP (User Datagram Protocol).
Equivale a las capas de transporte del modelo de referencia OSI.
3. Internet o red: se encarga de enviar cada paquete de información a su destino, es decir encaminar los datos. Para ello coloca los paquetes del anterior nivel en datagramas IP y los envía al nivel inferior. Cuando recibe estos datagramas del nivel inferior, comprueba su dirección IP y los envía al nivel superior o los encamina a otro ordenador, si no son para éste. Los protocolos que actúan en este nivel son:
• IP (Internet Protocol),
• ICMP(Internet Control Message Protocol),
• IGMP(Internet Group Management Protocol),
• ARP (Address Resolution Protocol),
• RARP (Reverse Address Resolution Protocol),
• BOOTP (Bootstrap Protocol).
Equivale a las capas de red del modelo de referencia OSI. 4. Enlace: se encarga de la transmisión a través del medio físico, que une todos los ordenadores de la red. En este nivel tenemos protocolos como Ethernet, DLC (IEEE 802.2), X.25, Frame Relay, etc. Equivale a las capas física y de enlace del modelo de referencia OSI.
Analogía:
Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras. Evidentemente, una sola paloma no puede llevar todo el libro. Microfilmamos las páginas y a cada paloma le damos un microfilm. Para facilitar el trabajo de nuestro amigo, numeramos las filminas, puesto que ordenar después todo el libro, sin una numeración, resultaría muy difícil.
A lo largo de todo el viaje, alguna paloma puede ser cazada, decidir que se va a otro lugar o, simplemente, perder su mensaje. Cuando esto sucede, nuestro amigo nos manda una paloma diciendo que algo no ha llegado o que ha llegado defectuoso. Así, hasta que complete el libro y lo pase a papel.
Ahora, en lugar de emplear las palomas, envío El Quijote en formato pdf por correo electrónico. Aparentemente, el libro va completo, sin embargo, los protocolos de comunicación realizarán las mismas tareas que tendríamos que hacer mi amigo y yo empleando las palomas. De algo tendrían que valer las TIC.
3.2. Protocolo TCP.
a) Definición y Características.
Protocolo de control de transmisión de la capa de transporte, que regula las cuestiones relativas al transporte de la información. Pertenece a la suite de protocolos TCP/IP. Este protocolo se encuentra descrito en el documento RFC 793.El protocolo TCP se encarga de regular el flujo de la información, de tal forma que éste se produzca sin errores y de una forma eficiente. Proporciona calidad de servicio. Por esto, se dice que este protocolo es:
• Orientado a la conexión: esto significa que se establece una conexión entre emisor y receptor, previamente al envío de los datos. Se establece un circuito virtual entre los extremos. Este circuito crea la ilusión, por esto se llama virtual, de que hay un único circuito por el que viaja la información de forma ordenada.

Esto, en realidad no es cierto, la información viaja en paquetes desordenados
por distintas vías hasta su destino y allí, tiene que ser reensamblada.
• Fiable: significa que la información llega sin errores al destino. Por esto, la
aplicación que usa este protocolo, no se tiene que preocupar de la integridad
de la información, se da por hecho.
El protocolo TCP actúa de puente entre la aplicación, que requiere sus servicios, y el protocolo IP, que debe dirigir el tráfico por la red, hasta llegar a su destino. Este protocolo usa la tecnología de conmutación de paquetes.
La unidad de
información es el byte y estos se agrupan en segmentos, que son pasados al protocolo
IP. Estos segmentos viajan encapsulados en los datagramas IP. Es un flujo de
información no estructurado, información binaria sin ningún formato.
La aplicación de
destino tiene que interpretar esta información. Los datos viajan en los segmentos junto a
información de control. Usa una memoria intermedia llamada buffer para hacer más
eficiente la transferencia. La transmisión es punto a punto, origen y destino, y full-duplex,
es decir en ambas direcciones, para hacer más eficaz el tráfico en la red.
Como hemos dicho, antes de poder enviar información, hay que establecer una
conexión entre los extremos. En una transmisión hay tres fases:
1. Apertura de conexión.
2. Transferencia de datos.
3. Cierre de conexión.b) Segmento TCP.
Como ya hemos dicho, el protocolo TCP divide los mensajes en paquetes, llamados segmentos TCP. Cada uno de estos segmentos se integran en el campo de datos de un datagrama IP, y el protocolo IP se encarga de dirigirlos a través de la red o redes, hasta su destino.
La unidad de información en el protocolo TCP, es el byte (8 bits). Estos bytes se numeran y cada segmento TCP indica en su cabecera el número del primer byte que transporta. También la cabecera de cada segmento lleva el puerto de origen, el puerto destino, confirmaciones o acuses de recibo (ACK), etc.
Para que la transmisión sea eficaz, el tamaño de los segmentos es muy importante. 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, aunque casi nunca llega a este tamaño; y por otro, el tamaño máximo que soporta la red local, que viene dado por la Unidad de Transferencia Máxima (MTU). Es conveniente elegir el tamaño de los segmentos de tal forma que no haya que fragmentarlos.
Los datagramas IP no tienen porqué llegar en el orden correcto al destino, pueden llegar en cualquier momento y en cualquier orden, e incluso puede que algunos no lleguen a su destino o lleguen con información errónea. El protocolo TCP se encarga de corregir estos problemas, numera los datagramas antes de ser enviados y en el destino se encarga de reensamblarlos en el orden adecuado. Además solicita el reenvío de los datagramas que no hayan llegado o sean erróneos. No es necesario normalmente reenviar el mensaje completo.
Para pensar:
Antes de continuar leyendo, os proponemos que cojáis un lápiz y un papel y vayáis
completando la tabla que viene a continuación con la información que os ofrecemos.
El formato estándar de un segmento TCP es el siguiente:
Siendo el significado de sus campos:
• Puerto TCP origen: especifica el puerto del host origen que envía el
segmento TCP. Ocupa 16 bits y es obligatorio.
Para pensar:
Empleando 16 bits en binario ¿cuántos puertos distintos pueden definirse?.
• Puerto TCP destino: especifica el puerto del host destino al que se envía el segmento TCP. Ocupa 16 bits y es obligatorio. Los puertos proporcionan una manera práctica de stinguir entre las distintas transferencias de datos, ya que un mismo ordenador puede estar involucrado en varias transferencias simultáneas.
Analogía:
Los puertos de un ordenador son como los andenes de una estación. Madrid-Atocha tiene más de 30 andenes, todos los trenes llegan a Madrid, pero en función de su origen las ersonas que esperan a los viajeros deben situarse en un anden u otro.
• Número de secuencia: indica el primer byte de datos que transporta el segmento. Ocupa 32 bits y es obligatorio. Al principio de la conexión, se asigna un número de secuencia inicial (ISN, Initial Sequence Number). Los siguientes bytes se numeran consecutivamente.
Analogía:
El número de secuencia es la forma que utiliza TCP de numerar los mensajes. Seria la
numeración de las páginas de nuestro Quijote..
• Número de acuse de recibo (ACK): indica el número de secuencia del siguiente byte que se espera recibir. Ocupa 32 bits y es obligatorio. El número ACK - 1 sería el último byte reconocido.
• Longitud de cabecera (HLEN): indica el número de palabras de 32 bits (4 bytes) que hay en la cabecera. Ocupa 4 bits y es obligatorio. Por este campo sabemos dónde acaba la cabecera y dónde empiezan los datos. Normalmente el tamaño de la cabecera es de 20 bytes y este campo será 5, este es el valor mínimo y 15 el máximo.
Nota:
Hasta ahora, todos los datos que aparecen en la cabecera son obligatorios y tienen una
longitud fija, es decir, el ordenador que recibe la información la puede interpretar
perfectamente y sabe qué parte de la cabecera está leyendo en cada momento. Sin
embargo, a partir de un cierto momento, el tamaño de los elementos de cabecera son
variables, por lo tanto, es necesario indicar en un momento en el que todavía se sabe
qué parte del mensaje se está leyendo, cuándo empiezan los datos. Esta es la función
de HELEN.
• Reservado: está reservado para usos futuros, actualmente se pone a 0.
Ocupa 6 bits.
o URG (puntero de urgencia): Indica que el segmento contiene datos urgentes, esto hace que el número de secuencia se traslade donde están dichos datos. Se complementa con el campo "Marcador urgente", que indica el número de datos urgentes que hay en el segmento.
o ACK (acuse de recibo): Indica que tiene significado el número que hay almacenado en el campo "Número de acuse de recibo".
o PSH (push): Indica que la aplicación ha solicitado enviar los datos almacenados en la memoria temporal, sin esperar a completar el segmento de dimensión máxima.
o RST (interrupción de la conexión actual): sirve para hacer un reset de la conexión. Se usa cuando hay un problema en la conexión, por ejemplo, cuando un paquete llega al receptor y no hay ninguna aplicación esperándolo.
o SYN (sincronización de los números de secuencia): se usa cuando se crea una conexión e indica al otro extremo cuál va a ser el primer número de secuencia con el que va a comenzar a transmitir, que puede ser diferente de cero.
0FIN (fin): indica al destino que ya no hay más datos a transmitir. Se usa
para solicitar el cierre de la conexión actual.
• Ventana: indica el número de bytes que el emisor está dispuesto a
aceptar. Ocupa 16 bits.
• Checksum TCP: contiene una suma de comprobación de errores del segmento actual. Se calcula a partir de la cabecera, los campos de datos y las direcciones IP de origen y destino.
Ocupa 24 bits. 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 atagrama 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 la confirmación correspondiente a un datagrama, lo vuelve a enviar, aunque por razones de eficiencia, los datagramas se suelen enviar sin esperar esta confirmación.
• Marcador urgente: indica que se están enviando datos urgentes, que tienen preferencia sobre todos los demás. Indica el siguiente byte del campo datos que sigue a los datos urgentes. Tiene sentido cuando el indicador URG está activo. Un mismo segmento puede contener datos urgentes y normales. Ocupa 8 bits.
• Opciones: es opcional. Indica una de las siguientes opciones: o Timestamp, para indicar en qué momento se transmitió el segmento. De esta manera se puede medir el retardo del egmento desde el origen hasta el destino. o Aumentar el tamaño de la ventana. o Indicar el tamaño máximo del segmento que el origen puede enviar.
• Relleno: bits de relleno para que el tamaño del segmento TCP sea
múltiplo de 32 bits.
• Datos: información, propiamente dicha, que envía el origen al destino.
c) Establecimiento de una conexión.
Para abrir la conexión se envían tres segmentos, por eso se llama "saludo de tres
vías":
1. El ordenador 1(O1), hace una apertura activa y envía un segmento TCP (S1), al
ordenador 2 (O2). Este segmento lleva el bit SYN activado y el primer nº de
secuencia que usará para mandar sus segmentos.
2. O2 recibe el segmento (S1). Si desea abrir la conexión, responde con un segmento acuse de recibo (ACK), con el bit SYN activado, con ACK = x +1 y con su propio nº de secuencia inicial (y), y deja abierta la conexión por su extremo. Si no desea abrir la conexión, envía un segmento, con el bit RST activado, a O1.
3. O1 recibe el segmento y envía su segmento de confirmación con ACK = y + 1.
4. O2 recibe la confirmación y decide que la conexión ha quedado abierta y puede enviar mensajes también en el otro sentido. Los números de secuencia usados (x e y), son distintos en cada sentido y son aleatorios para evitar conflictos.
A partir del paso 4 comienza la transmisión de datos hasta el final. Cuando ya no hay
más datos que transferir, hay que cerrar la conexión.
d) Control del flujo.
Para controlar el flujo de la transmisión, el protocolo TCP, usa unas técnicas conocidas con el nombre genérico de “Solicitud de Repetición Automática” (ARQ), que usan el “acuse de ecibo positivo con retrasmisión” (PAR), mediante el cual el receptor (O2) envía un mensaje de cuse de recibo (ACK), cada vez que recibe un segmento TCP del emisor (O1).
La técnica más simple es, la conocida como control de flujo mediante sistema de
parada y espera. En esencia funciona así:
1. El ordenador 1(O1), envía un segmento TCP (S1), al ordenador 2 (O2) y espera un ACK antes de enviar el siguiente. También arranca un temporizador con un tiempo de expiración (timeout). Si el temporizador expira antes de que O1 reciba un ACK, retransmite el segmento y reinicia el temporizador.
2. O2 recibe el segmento y envía su segmento de confirmación con ACK.
3. O1 recibe la confirmación y envía el 2º segmento.
4. El proceso continua de esta manera sucesivamente. Para controlar la transmisión, TCP numera los segmentos secuencialmente. En el receptor, TCP reensambla los segmentos como estaban en el inicio. Si falta algún número de secuencia en la serie, se vuelve a transmitir el segmento con ese número.
La numeración se hace contando los bytes de cada segmento. Si el primer segmento
contiene 100 bytes y empezamos numerando con el 0, el siguiente segmento será el
número 100.
denomina "tamaño de ventana".
Con un tamaño de ventana = 1 y ventana simple: Esta técnica es la más eficaz para evitar errores en la transmisión. Es muy usada cuando se transmiten tramas muy grandes, pero tiene el inconveniente que el canal de transmisión está desaprovechado la mayor parte del tiempo.
Una técnica más avanzada, conocida como "ventana deslizante", hace un uso más eficaz del canal de transmisión. En esta técnica el emisor envía varios segmentos sin esperar los ACK correspondientes.
Con un tamaño de ventana negociado = 3 y ventana deslizante: Una tarea que tiene que realizar el protocolo TCP, es controlar la congestión de la transmisión. Para esto controla dinámicamente el tamaño de la ventana, aumentando o disminuyendo su tamaño, para que no haya congestión.
e) Control de errores.
Hay varias técnicas para detectar y corregir los posibles errores en la transmisión.
Las más usadas son las siguientes:
• Comprobación de la paridad: se añade un bit de paridad a los datos, para que el número de bits con valor 1 sea par. Es un control bastante elemental.
• Suma de chequeo (checksum): se calcula un valor a partir de la cabecera, los campos de datos y las direcciones IP de origen y destino, en el segmento enviado. En el otro extremo, se calcula el mismo valor para el segmento recibido. Los dos valores deben ser iguales, para que la transmisión sea correcta.
• Comprobación de la redundancia cíclica (CRC): si hay un bloque de n bits a transmitir, el emisor le suma los k bits necesarios para que n + k sea divisible por algún número, conocido tanto por el emisor como por el receptor.
Los métodos para informar de que ha habido errores en la transmisión son variados: • Confirmaciones positivas: el receptor devuelve un acuse de recibo positivo (ACK), por cada segmento recibido correctamente. Se usa para detectar y solicitar el reenvío de tramas perdidas.
• Confirmación negativa y transmisión: el receptor confirma sólamente los
segmentos recibidos erróneamente, para que el emisor las vuelva a enviar
de nuevo.
Para pensar:
Supongamos que hemos inventado una clave secreta en la que cada dos dígitos en sistema decimal significan una letra, si enviáramos un mensaje con cuatro dígitos sabemos que es una palabra de dos letras, pero, ¿como comprobamos que el mensaje que nos llega es correcto? Nos ponemos de acuerdo emisor y receptor para añadir, por ejemplo, 10 dígitos más al final del mensaje, de manera que estos últimos dígitos se obtengan sumando los números que efectivamente corresponden al mensaje, los cuatro primeros.
• Un mensaje correcto sería el siguiente: 12340000000010. 1+2+3+4=10
• Un mensaje erróneo sería 24530000000045. 2+4+5+3≠45
Así podemos saber siempre si el mensaje, debido a alguna alteración en el proceso de
transmisión, ha sido modificado.
Analogía:
En una conversación telefónica representaría cuando una persona dice “lo siento,
¿podrías repetir?
• Expiración de intervalos de tiempo (timeout): El emisor arranca un temporizador con un tiempo de expiración (timeout). Si el temporizador expira antes de que el emisor reciba un ACK por parte del receptor, retransmite el segmento y reinicia el temporizador.
f) Cierre de la conexión.
El proceso es una variación del saludo de tres vías: 1. O1ya no tiene más datos para transferir. Envía un segmento TCP con el bit FIN activado y cierra la conexión activa, en el sentido de envío. La recepción está abierta todavía.
devuelve la confirmación (ACK) a O1.
3. O1 recibe el ACK de O2.
4. O2 decide cerrar la comunicación y envía un segmento TCP con el bit FIN
activado.
5. O1 lo recibe y envía un ACK a O2.
6. O2 lo recibe y cierra la conexión definitivamente.
g) Puertos y Zócalos (Sockets).
La noción de puerto, es introducida por la capa de transporte para distinguir entre los distintos destinos, dentro del mismo host, al que va dirigida la información. La capa de red solamente necesita, para dirigir la información entre dos ordenadores, las direcciones IP del origen y el destino. La capa de transporte añade la noción de
puerto .
Un ordenador puede estar ejecutando a la vez varios procesos distintos, por ello no es suficiente indicar la dirección IP del destino, además hay que especificar el puerto al que va destinado el mensaje.
Cada aplicación utiliza un número de puerto distinto. Cuando una aplicación está
esperando un mensaje, lo hace en un puerto determinado, se dice que está "escuchando
un puerto".
Analogía:
Podemos imaginar el concepto de puerto como el de un andén en una estación de trenes. El destino es el mismo, por ejemplo Zaragoza, sin embargo, los trenes se detienen en andenes distintos dentro de la misma estación y es allí donde se bajan los pasajeros y las mercancías, será un andén distinto si se llega de Madrid o de Barcelona, si se es un pasajero, el correo, un vehículo, etc.
Un puerto es un número de 16 bits, por lo que existen 216=65536 números de puerto posibles, en cada ordenador. Las aplicaciones utilizan estos puertos para enviar y recibir
mensajes. Se llama conversación al enlace de comunicaciones entre dos procesos.
{protocolo, dirección local, proceso local}
Por ejemplo, en el protocolo TCP/IP un socket sería: {tcp, 193.53.214.3, 1345} Si una aplicación cliente quiere comunicarse con una aplicación servidora de otro host, el protocolo TCP, le asigna un número de puerto libre, en el otro extremo, la aplicación servidora permanece a la escucha en su puerto bien conocido. Por ejemplo, el envío de correo con el protocolo POP3, utiliza el número de puerto 110.
Para que la transmisión sea más eficaz, los puertos usan una memoria intermedia, llamada "buffer". Existe un buffer en el origen, usado por la aplicación cliente, y otro en el destino, donde se van almacenando los datos enviados hasta que los pueda recoger la aplicación receptora. Los buffers son embalses que contienen o dejan salir el caudal de
información.
Nota:
Es lógico que se necesite un buffer que almacene los paquetes según llegan, ya que lo
hacen desordenados, y no se puede procesar el mensaje hasta que no se completa en
un determinado orden.
Con el comando netstat, podemos ver las conexiones activas y los sockets en uso.
Para pensar:
Ejecuta el comando netstat. ¿qué datos te aporta?
Los primeros 256 puertos son los llamados "puertos bien conocidos" (well-known) , y se usan para servicios comunes, como HTTP, FTP, etc. TCP asigna los números de puerto bien conocidos, para aplicaciones servidoras (aquellas que ofrecen servicios) y el resto de los números disponibles a las aplicaciones cliente (aquellas que solicitan
servicios), según los van necesitando.
Los números de puerto tienen asignado los siguientes intervalos :
• Del 0 al 255 se usan para aplicaciones públicas.
• Del 255 al 1023 para aplicaciones comerciales.
• Del 1023 en adelante, no están regulados.
Los puertos bien conocidos están definidos en la RFC 1700 y se pueden consultar en
http://www.ietf.org/rfc/rfc1700.txt
Estos puertos son controlados y asignados por IANA ("Internet Assigned Numbers
Authority").Los más usuales son:
Al ser los puertos las "puertas" de entrada a un ordenador, pueden usarse por los "piratas" para sus ataques. Son puntos vulnerables. Se recomienda que, en general, no se tengan más puertos abiertos que los que sean imprescindibles.
El ataque puede ser directamente al ordenador cliente, o al servidor a través de éste. Hay diversas aplicaciones usadas por los piratas informáticos, para accesos no autorizados. Se basan, generalmente, en la apertura de puertos de número mayor que 1023 para estos accesos.
Es conveniente, por lo tanto, comprobar los puertos que tenemos abiertos, con
netstat por ejemplo, y cerrar los que no necesitemos.
3.3. Protocolo UDP.
a) Introducción
El Protocolo de Datagrama de Usuario (UDP). Proporciona una comunicación sencilla entre s ordenadores, y que no consume muchos recursos. Es un protocolo que pertenece a la capa de transporte. Es un protocolo:
• No confiable: no hay un control de paquetes enviados y recibidos. Estos pueden llegar erróneos o no llegar a su destino. • No orientado a conexión: no se realiza una conexión previa entre origen y destino, como ocurre en el protocolo TCP.
Este protocolo se describe en: http://www.rfc-es.org/rfc/rfc0768-es.txt Es un protocolo útil, en casos en los que no es necesario mucho control de los datos enviados. Se usa cuando la rapidez es más importante que la calidad, en los casos en que la información cabe en un único datagrama. Una de sus usos más comunes es el envío de mensajes entre aplicaciones de dos ordenadores. No es tan fiable como el protocolo TCP, pero es simple, con baja sobrecarga de la red, y por lo tanto ideal para aplicaciones que usen masivamente la red, como DNS y SNMP.
Utiliza el protocolo IP para transportar los mensajes, es decir, va encapsulado dentro
de un datagrama IP. No añade ninguna mejora a este protocolo, en cuanto a control de
errores.
Incorpora los puertos origen y destino en su formato. El número de puerto de destino, en la cabecera UDP, se utiliza para dirigir el datagrama UDP a un proceso específico, que se está ejecutando en el ordenador destino. El número de puerto origen, permite al
proceso contestar adecuadamente.
No controla errores, cuando se detecta un error en un datagrama, se descarta. Esto
hace que deban ser las aplicaciones que lo usen, las que controlen los errores, si les
interesa.
UDP no numera los datagramas, tampoco utiliza confirmación de entrega, como ocurre en TCP. Esto hace que no hay garantía de que un paquete llegue a su destino, ni que los datagramas pueden llegar duplicados o desordenados a su destino.
Una de las aplicaciones que usa el protocolo UDP es la solicitud de DNS. Cada vez que
un usuario solicita la conexión a un host, lo hace escribiendo en el navegador la
dirección DNS, sin embargo, esa dirección no puede circular por la red, ya que para ello
se emplean direcciones IP. Así, se pide a un servidor de DNS que indique cuál es
realmente la dirección IP del equipo al que nos queremos conectar.
b) Formato del segmento UDP.
El formato del segmento UDP es el siguiente:
El significado de cada campo es:
• Puerto UDP de origen: especifica el puerto del host origen. Ocupa 16
bits.
• Puerto UDP de destino: especifica el puerto del host destino. Ocupa 16
bits.
• Longitud del datagrama: especifica la longitud en bytes del datagrama,
incluyendo la cabecera. La longitud mínima es de 8 bytes. Ocupa 16 bits.
• Checksum UDP (Suma de verificación): en él se almacena una suma de comprobación de errores del datagrama, que se calcula a partir de una pseudo-cabecera, que incluye las direcciones IP origen y destino. En redes Ethernet es corriente que no se calcule el checksum y puede ser ignorado.
• Datos: contiene los datos que se envían las aplicaciones Los datagramas van quedando en una cola, de la que va leyendo la aplicación destino. Si el puerto no estuviera abierto o se sobrepasara la capacidad de la cola, los datagramas serían ignorados.
Algunas situaciones en las que es más útil el protocolo UDP, son:
• Aplicaciones en tiempo real como audio o video, donde no se admiten
retardos.
• Situaciones en las que se necesita conectar con un ordenador de la propia
red, usando una IP interna o un nombre. Habría que conectar primero con
el servidor de red apropiado que transforme dicha dirección en una
dirección IP válida.
• Consultas a servidores en las que se envían uno o dos mensajes
solamente, como es el caso del DNS.
• En transmisiones en modo multicast (a muchos destinos), o en modo
broadcast (a todos los destinos), ya que si todos los destinos enviaran
confirmación el emisor se colapsaría.
Entre los protocolos superiores que usan UDP están: DNS (Domain Name Server),
SNMP (Simple Network Management Protocol), TFTP (Trivial File Transfer Protocol),
NFS (Network File System), etc.
Analogía:
Nos encontramos en la sala de profesores y suena el teléfono en secretaría, entones,
una persona que parece estar más ocupada dice “Carlos, ¿puedes coger el teléfono?”,
no se ha preocupado si Carlos le ha oído, simplemente le llama y espera a que coja el
teléfono, no se ha preocupado de llamarle, esperar que le conteste y decirle lo que
desea que haga.
3.4. Protocolo IP.
a) Definición. Características.
http://www.rfc-es.org/rfc/rfc0791-es.txt
Este protocolo, funciona transmitiendo la información por medio de paquetes. A este
sistema se le conoce como "catenet". Da las normas para la transmisión de bloques de
datos llamados datagramas, desde el origen al destino. Para hacer esto, identifica a los
host origen y destino por una dirección de longitud fija, llamada dirección IP. Se encarga
también, si fuera necesario, de la fragmentación y reensamblaje de grandes datagramas
para su transmisión por redes de trama pequeña. Es un protocolo que pertenece a la
capa de red.
Para pensar:
Si queremos conectar nuestro ordenador a Internet, debemos asignarle una dirección IP para que sea reconocido por el resto de los ordenadores interconectados a la red, además, deberemos instalar el protocolo IP, ya que de otra forma sería imposible que los paquetes de datos pudieran ser transmitidos a través de Internet.
Es un sistema de conmutación de paquetes no orientado a conexión, ya que cada paquete viaja independientemente de los demás; no fiable, los paquetes se pueden perder, duplicar o cambiar de orden. Es decir este protocolo no soluciona estos problemas, esta tarea queda para otros protocolos.
Este protocolo utiliza, a su vez, protocolos de redes locales, que se encargan de llevar el datagrama IP a través de la red local hasta su salida, por medio de una pasarela (gateway), hasta la próxima red.
El protocolo IP realiza dos funciones básicas: direccionamiento y fragmentación.
• Cada datagrama IP tiene una cabecera en la que figuran la dirección de origen y de destino. El módulo internet usa estas direcciones para llevar el datagrama hasta su destino. Este proceso se llama encaminamiento o enrutamiento.
• El módulo Internet usa campos en la cabecera para fragmentar y reensambla los datagramas IP, si fuera necesario, para su transmisión por redes de trama pequeña.
En función de la tecnología de transmisión empleada, las redes admiten un tamaño máximo de paquete de datos. Las máquinas que interconectan las redes (los routers) deben encargarse que los datagramas que entran en una red sean soportados por esta, por lo que pueden llegar a dividir los paquetes. Si un paquete de datos se divide, ya no se vuelve a unir hasta llagar a su destino, aunque vuelva a circular por redes que permitan mayor tamaño en los datagramas..
En cada host y en cada pasarela que interconecta redes, reside un módulo Internet. Estos módulos tienen reglas comunes para interpretan las direcciones y para fragmentar y reensamblar los datagramas IP. Estos módulos, en las pasarelas, saben cómo encaminar los datagramas IP. Cada datagrama IP, se trata como una entidad independiente, no relacionada con ningún otro datagrama IP. No existen conexiones o circuitos lógicos (virtuales o de cualquier otro tipo).
Analogía:
El protocolo IP actúa como los señalizadotes en un vía pública. No saben si los coches que circulan por la calle llegan o no llegan a su destino, simplemente informan, si usted quiere ir al zoo, vaya por allí, hasta que se vuelva a encontrar otro cartel indicador o haya llegado ya. Así todos los carteles, uno tras otro, hasta que el coche llega a su
destino.
El protocolo Internet utiliza cuatro mecanismos clave para prestar su servicio: Tipo de
Servicio, Tiempo de Vida, Opciones y Suma de Control de Cabecera.
• El Tipo de Servicio se utiliza para indicar la calidad del servicio deseado
como prioridad, retardo, rendimiento, etc.
• El Tiempo de Vida es una indicación de un límite superior en el periodo de vida de un datagrama IP. Es fijado por el remitente del datagrama y reducido en 1 en cada router que atraviesa en su camino. Si el tiempo de vida se reduce a cero antes de que llegue a su destino, el datagrama IP es destruido.
• Las Opciones proporcionan funciones de control necesarias o útiles en
algunas situaciones. No son obligatorias.
• La Suma de Control de Cabecera sirve para verificar que la información ha sido transmitida correctamente. Si la suma de control de cabecera falla, el datagrama IP es descartado.
Este control es sólo para la cabecera, no hay control de error para los datos en este nivel. El protocolo Internet no proporciona ningún mecanismo de comunicación fiable, no existen acuses de recibo entre extremos, ni entre saltos. No existe control de flujo.
b) Relación con otros Protocolos.
El siguiente diagrama ilustra el lugar del Protocolo Internet en la jerarquía de
protocolos:
El protocolo Internet interactúa por un lado con los protocolos de la capa de transporte y por otro con el protocolo de la red local. c) Modo de Operación. Para transmitir un datagrama de una aplicación a otra, procede de la siguiente manera:
Supongamos dos hosts, que quieren intercambiar información; cada uno estará integrado en su respectiva red local, y supongamos que haya una pasarela intermedia entre ambos.
La aplicación remitente prepara sus datos y llama a su módulo internet local, que se encargará de enviar esos datos como datagramas IP, para ello, prepara la cabecera del datagrama y adjunta los datos a él con la dirección de destino y otros parámetros como argumentos de la llamada. Decide, por la dirección IP del destino, que debe enviarlo a la pasarela de la red local primera y lo envía a la interfaz de red local. Esta, crea una cabecera de red local (según las normas del protocolo de red la red local que sea), le adjunta el datagrama y envía el resultado a través de la red local.
El datagrama llega a la pasarela encapsulado en la cabecera de red local. Esta pasarela, a su vez llama a su módulo internet. Este, comprueba si el datagrama debe ser reenviado a otro host en una segunda red. Así sucesivamente, hasta llegar a la red local a la que pertenece el host de destino.
Este host, a su vez, llama a su módulo internet, que lo pasa a la aplicación a la cual va dirigido el datagrama, en este host. Pasa los datos a la aplicación en respuesta a una llamada del istema, pasando la dirección de origen y otros parámetros como resultado
de la llamada.
Como vemos, los datagramas van pasando desde un módulo internet a otro hasta que se alcanza el destino. En el camino puede haber distintas redes interconectadas. Los módulos internet residen en hosts y pasarelas.
Todo este proceso se basa en la interpretación de una dirección internet. Por eso, un
importante mecanismo del protocolo IP es la dirección internet. En su ruta, los datagramas pueden necesitar atravesar una red cuyo tamaño máximo de paquete es menor que el tamaño del datagrama. Para salvar esta dificultad, el protocolo IP proporciona un mecanismo de fragmentación.
d) Formato de un Datagrama IP.
El datagrama IP viaja encapsulado en el campo de datos de las tramas físicas (Ethernet), de las distintas redes que va atravesando. Estas tramas físicas pueden ser distintas, dependiendo del tipo de red. De este modo, un mismo datagrama IP, puede atravesar redes distintas: redes Ethernet, ATM, Token Ring, Frame Relay, enlaces punto
a punto, etc.
Campos del datagrama IP
• Versión (4 bits). Indica la versión del protocolo IP utilizada. Actualmente se utiliza la versión 4 (IPv4), aunque ya se está preparando la siguiente versión, la 6 (IPv6).
• IHL (4 bits). Longitud de la Cabecera Internet, expresada en palabras de 32 bits. Apunta al comienzo de los datos. El valor mínimo es 5, correspondiente a 160 bits = 20 bytes.
• Tipo de servicio (Type Of Service) (8 bits): indica la prioridad, retardo,
rendimiento, etc.
• Longitud total (16 bits): indica la longitud total del datagrama, expresada
en bytes (8 bits), incluye la longitud de la cabecera y los datos. Como el campo tiene 16 bits, la máxima longitud posible de un datagrama será de 65535 bytes.
• Identificación (16 bits): número de secuencia del datagrama. Si se
tratatara de un datagrama fragmentado, llevaría la misma identificación
que los otros fragmentos.
• Flags o indicadores (3 bits): son indicadores de control. El bit (MF)
indica que hay más fragmentos. El bit (NF) prohibe la fragmentación del
datagrama.
• Posición del fragmento (13 bits): indica la posición del fragmento actual
dentro del datagrama completo, medido en unidades de 64 bits. Por esta
razón los campos de datos de todos los fragmentos menos el último tienen
una longitud múltiplo de 64 bits. Si el paquete no está fragmentado, este
campo tiene el valor de cero.
• Tiempo de vida o TTL (8 bits): tiempo máximo que puede estar el
resta 1 a este número. Cuando llegue a cero, el datagrama se descarta y
se devuelve un mensaje ICMP de tipo "tiempo excedido" para informar al
origen, y se descarta el datagrama.
• Protocolo (8 bits): indica el protocolo del siguiente nivel utilizado en el
campo de datos: 1 para ICMP, 2 para IGMP, 6 para TCP y 17 para UDP.
• Suma de control de cabecera (CRC) (16 bits): para comprobar si hay
errores en la cabecera del datagrama. La verificación de errores de los
datos corresponde a las capas superiores.
• Dirección origen (32 bits): contiene la dirección IP del origen.
• Dirección destino (32 bits): contiene la dirección IP del destino.
• Opciones: distintas opciones especificadas por el origen, referidas
generalmente a pruebas de red y depuración. Este campo es opcional.
• Relleno (variable): se usa para que la longitud de la cabecera Internet
sea múltiplo de 32 bits.
A continuación de estos campos, van la auténtica información que se quiere
transmitir.
Para pensar:
¿Serías capaz de escribir un ejemplo de secuencia de bits de un encabezado de
datagrama IP? Tal como lo hemos hecho con el protocolo TCP
Direccionamiento.
Hay una distinción entre nombres, direcciones y rutas.
• Un nombre indica qué buscamos.
• Una dirección indica dónde está.
• Una ruta indica cómo llegar allí.
El protocolo IP maneja únicamente direcciones, la dirección Internet. Es tarea de los rotocolos de mayor nivel, hacer corresponder nombres con direcciones. El módulo internet hace corresponder direcciones de internet con direcciones de red local.
Es tarea de los protocolos de menor nivel (de red local o pasarelas) realizar la
correspondencia entre direcciones de red local y rutas.
Dirección Internet.
Explicación ampliada en: http://www.rfc-es.org/rfc/rfc0791-es.txt Cuando queremos enviar un mensaje a través de un sistema de redes no podemos emplear la dirección física de la tarjeta ya que no existe un modo estandarizado de identificar un host dentro de una red, dentro de un sistema de múltiples redes, que sea efectivo. Así, se ha ideado la dirección IP, que permite identificar la red en la que se encuentra el ordenador y, a la vez, ubicar la posición de este PC dentro de la red.
Pensar en el sistema de numeración binario es complejo, a pesar de utilizar únicamente
dos números, el 1 y el 0. Con estos números tendríamos que realizar todas las
operaciones. Así, el simple hecho de contar sería, 0, 1, 10, 11, 100, 101, 110, 111, 1000,
1001, 1010, 1011,…
Cuando llegamos a 11111111 nos estamos refiriendo al número 255 en el sistema
decimal y lo obtendríamos asignando a cada dígito de 1111111111 el valor de la
potencia de dos con el exponente en valor decimal.
10000000 27 128
1000000 26 64
100000 25 32
10000 24 16
1000 23 8
100 22 4
10 21 2
1 20 1
11111111 27+26+25+24+23+22+21+20 255
Así el número binario 11111111 equivale al 255 decimal, pero permite 256 valores
puesto que se cuenta desde el 0 al 255.
El sistema de direccionamiento IP consiste tal como hemos indicado en una serie de dígitos. Como es el sistema que se emplea para identificar cualquier servidor en Internet, cuando quisiéramos conectar con un equipo, deberíamos identificarlo por esta serie de números, en muchos casos, difíciles de recordar.
Así, se desarrolló el sistema de identificación por nombres de dominio. De esta manera, las direcciones del nivel de red en Internet pueden representarse de manera simbólica o numérica. Una dirección simbólica es por ejemplo www.cnice.mecd.es. Una dirección numérica se representa por cuatro campos separados por puntos, como 193.144.238.1, no pudiendo superar ninguno de ellos el valor 255 (11111111 en binario). La correspondencia entre direcciones simbólicas y numéricas las realiza el DNS (Domain Name System).
Cuando configuramos un acceso a Internet, en un momento dado debemos introducir las direcciones DNS, se trata de direcciones IP de host donde se almacena una base de datos con la traducción de nombres de dominio a direcciones IP. Estamos diciendo en qué servidor queremos que se busque la información para realizar la traducción.
Para poder identificar una máquina en Internet cada una de ellas tiene una dirección IP (Internet Protocol) la cual es asignada por IANA, organismo internacional encargado de asignar las direcciones IP públicas, aunque se dedica a asignar las direcciones de red de as empresas y estas ya se encargan de administrar sus equipos.
Las direcciones numéricas son las que entiende la máquina y se representan por 32 bits con 4 campos de 8 bits cada uno, aunque normalmente se pasan de binario a decimal. Por ejemplo 139.3.2.8 es en numeración binaria:
Cualquier dirección IP de un host tiene dos partes, por un lado, aquella que identifica la red a la que pertenece el ordenador y por otro, el ordenador dentro de la red en la que se encuentra. Debemos analizar este sistema desde la perspectiva de la gran cantidad de ordenadores que existen conectados a Internet.
Analogía:
La forma de determinar las direcciones IP sería muy similar al antiguo sistema de matriculación de un coche, donde las primeras letras indicarían la provincia, y el resto el coche en concreto, que es distinto si pertenece a León o a Murcia.
• LE-3456-A
• MU-3456-A
Son dos coches distintos que pertenecen a provincias distintas. Lo mismo sucedería con las direcciones IP. La diferencia radica en que existen distintos tipos de redes y es necesario determinar qué parte de la dirección IP pertenece a la red y cual al ordenador.
Para determinar qué parte de la dirección de Internet se refiere a la red y cuál pertenece al ordenador debemos introducir la máscara de subred que nos permite identificar los dígitos de la dirección IP que pertenecen a cada una de sus partes.
El sistema para realizar esta distinción es el siguiente. Si la dirección IP se compone de cuatro grupos de ocho bites, creamos una máscara en la que, de alguna forma se nos indica cuáles de esos bites pertenecen a la red y cuales al host. Los dígitos de valor uno de la máscara de subred indican la parte de la dirección IP que identifica la red, y los de valor cero, indican el ordenador. Así, la dirección IP de un equipo siempre debe estar asociada a una máscara de subred.
Para pensar:
¿Serías capaz de, empleando la calculadora de Windows (VerCientífica) sustituir los valores que te hemos puesto en el ejemplo y que se encuentran en el sistema de numeración binario por sus valores decimales? Escribe el resultado.
Para pensar:
Cuando introducimos en una configuración de red la máscara de subred estamos indicando a todo el mundo a qué red pertenece nuestro ordenador y cómo identificarlo dentro de la misma.
Por ejemplo:
Dirección IP 192.168.0.100
Máscara de subred 255.255.255.0
Es la red 192.168.0 y el equipo 100 dentro de esta red
Clases de direcciones IP.
Como ya hemos explicado, una parte de los bits representa la red y el resto la máquina (host). Existen cinco clases de direcciones IP según la manera de repartir los bits entre la dirección de red y el número de host.
Esta idea pretende asignar direcciones de red que se adapten a las necesidades de los usuarios. Así, si tenemos una red en donde la máscara de subred es del tipo 255.0.0.0, puede llegar a tener 2563 mientras que si la máscara de subred es 255.255.255.0 sólo podrá haber 256 direcciones de host distintas. Utilizando las direcciones IP y las máscaras de subred podemos definir tres tipos de redes.:
En estas clases las direcciones con la parte de número de host con todos los bits puestos a ‘0’ indican la red por lo que no se pueden asignar a ningún host; igualmente tampoco se pueden asignar a un host las direcciones con el número de host con todos los bits puestos a ‘1’ porque se dejan para los paquetes broadcast dirigidos a todas las máquinas de la red. Por ejemplo en la red anterior que es clase B la red es 139.3.0.0 y la
dirección broadcast 139.3.255.255.
• Las direcciones de Clase A usan 7 bits para el número de red dando un total de 126 (128-2) posibles redes de este tipo ya que la dirección 0.0.0.0 se utiliza para reconocer la dirección de red propia y la red 127 es la del lazo interno (loopback) de la máquina. Los restantes 24 bits son para el número de host (quitando las que son todos los bits a 0 ó a 1), con lo cual
tenemos hasta 224-2=16.777.216-2=16.777.214 direcciones. Son las redes 1.0.0.0 a 126.0.0.0
• Las direcciones de Clase B utilizan 14 bits para la dirección de red (16.382 posibles redes de este tipo) y 16 bits para el host (hasta 65.534 máquinas). Son las redes 128.0.0.0 a 191.255.0.0
• Las direcciones de clase C tienen 21 bits para la red (2.097.150 redes) y 8 bits para el host (254 máquinas). Son las redes 192.0.0.0 a 223.255.255.0 Además de estas tres clases, exiten otros dos tipos de características peculiares:
• Las direcciones de clase D están reservadas para multicasting que son usadas por direcciones de host en áreas limitadas. o La dirección comienza por 1110
o El rango de direcciones va desde 224.0.0.0 a 239.255.255.255
• Las direcciones de Clase E están reservadas para uso futuro. o La dirección comienza por 11110 o El rango de direcciones va desde 240.0.0.0 a 247.255.255.255
Nota:
Si una máquina está conectada a varias redes debe tener una dirección IP para cada
una de ellas. Además, al poderse configurar varias conexiones distintas, una máquina
puede tener varias direcciones IP en una misma red.
La clase que se elija para una red dada dependerá del número de máquinas que tenga y las que se prevean en el futuro. Como vimos antes el número de red es asignado por el NIC o por el organismo de cada país en quien él delegue. El número de host lo asignará el administrador que controla la red.
Subredes y máscaras de subred.
Puede darse el caso de que una red crezca en un número de máquinas significativo o que se quiera instalar una nueva red además de la que ya existía. Para conseguir mayor funcionalidad podemos dividir nuestra red en subredes dividiendo en dos partes el número de host, una para identificar la subred, y la otra parte
para identificar la máquina (subnetting). Esto lo decidirá el responsable de la red sin que intervenga el NIC. Podemos tener asignada una red –normalmente de las clases B ó C– y dividirla en dos o más subredes según nuestras necesidades comunicados por routers.
El conjunto formado por la subred y el número de host se conoce como dirección
local o parte local. Un host remoto verá la dirección local como el número de host.
El número de bits correspondientes a la subred y al número de host son elegidos
libremente por el administrador.
Esta división se realiza utilizando una máscara de subred. Esta es un número binario de 32 bits. Los bits que estén a "1" indicarán el campo de la dirección IP dedicada a la red y los bits puestos a "0" indicarán la parte dedicada al host. La máscara de subred se representa normalmente en notación
decimal.
Por ejemplo si no utilizamos subredes y dejamos la red como una sola, para una red
clase B la máscara será:
Si queremos dividirla en subredes tomaremos los 16 bits de la parte local y pondremos a "1" la parte que queremos represente a las subredes. Por ejemplo si queremos 8 subredes ecesitaremos en binario 3 bits para referenciarlas. La máscara
que necesitamos será:
11111111.11111111.11100000.00000000
es decir 255.255.224.0 en decimal. Al emplear 13 bits para el host podríamos tener
hasta 213-2=8190 máquinas en cada subred.
esatblacer la siguiente numeración: 000, 001, 010, 011, 100, 101, 110, 111. En total, con
tres dígitos binarios podemos identificar ocho subredes distintas.
Lo normal a la hora de añadir "unos" a la máscara inicial para definir las subredes es hacerlo de manera contigua para ver los campos claramente. Si tenemos una red clase C cuya áscara sin subredes es 255.255.255.0 y queremos dividirla en 4 subredes solo necesitamos 2 bits para definirlas:
Para pensar:
¿En una red tipo C, cuantos dígitos necesitarías para definir 32 redes y de cuantos host
contaría cada subred?.
Métodos de división en Subredes.
Hay dos formas de dividir una red en subredes: longitud estática y longitud variable. Se pueden utilizar según el protocolo de encaminamiento. El encaminamiento IP nativo solo soporta longitud estática al emplear el protocolo RIP. Con el protocolo RIP2 se consigue utilizar longitud variable.
La longitud estática implica que todas las subredes deben tener la misma máscara lo que obligará a poner la que necesite la que tenga más ordenadores. La longitud variable permite que no haya que variar las direcciones de red caso de cambios en una de sus subredes. Una subred que necesita dividirse en otras dos puede hacerlo a añadiendo un bit a su máscara sin afectar al resto. No todos los routers y host soportan la longitud variable de máscaras. Si un host no soporta este método deberá encaminarse hacia un router que sí lo soporte.
Ejemplo de Subneting estática:
Supongamos que tenemos una red clase B, 140.155, y sabemos que no tendremos más de 256 subredes y no más de 254 hosts, podemos dividir la dirección local con 8 bits para las
redes y otros 8 para el número de hosts con una máscara del tipo 255.255.255.0 (es decir que
en binario sería 11111111.11111111.11111111.00000000).
Si tenemos una red clase C con muchas subredes y con pocos hosts podemos poner una máscara 255.255.255.224 (recordando que 224 es 11100000 en base 2) es decir que hemos dividido la dirección local en 3 bits para redes y 5 para hosts. O sea 23=8 subredes y 25-2=30 hosts. Las subredes serían:
Por ejemplo si nuestra red clase C es 193.144.238 y tomamos la máscara
255.255.255.224 anterior:
Direcciones Broadcast.
Hay diferentes tipos de broadcast:
• Direcciones de broadcast limitadas: La dirección con todos los bits a "1"
(255.255.255.255) se usa en redes que soportan broadcasting, e indica
todos los host de la subred. Los routers no reenvían la información fuera de
la subred. Se trata de un envío a todos los ordenadores de la subred.
• Direcciones de broadcast de red: En una red sin subredes poniendo a "1" los
bits del campo de número de host.
• Direcciones de broadcast de subred: Poniendo a "1" solo la parte del número
de host de la dirección local.
• Broadcast a todas las subredes: Poniendo toda la parte local a "1".
Multicasting.
Para tener más flexibilidad que la proporcionada por el método broadcast que se dirige a todos los miembros de una subred o de una red, existe el método multicast, el cual nos permite dirigirnos a grupos de hosts dentro de la red.
El datagrama IP para multicast como vimos antes es de clase D, cuyos cuatro primeros bits son 1110 (el primer octeto va de 11100000 a 11101111) luego el rango de direcciones será de 224.0.0.0 a 239.255.255.255.
Existen dos tipos de grupos:
• Grupos permanentes: Son los que han sido estandarizados. Los hosts
asignados a estos grupos no son permanentes, pueden afiliarse a él o ser
quitados de él. Grupos importantes de este tipo son:
o 224.0.0.0 Dirección reservada de base.
o 224.0.0.1 Todos los sistemas de la subred.
o 224.0.0.2 Todos los routers de la subred.
o 224.0.0.1 Todos los routers OSPF.
o 224.0.0.1 Todos los routers OSPF designados.
• Grupos transitorios: Son los grupos que no son permanentes y se van
creando según las necesidades.
Direcciones IP PRIVADAS.
Las redes privadas de organizaciones que no están directamente conectadas a Internet (esto es, las redes que se conectan por medio de un proxy o un router a una única línea con una sola dirección IP dada por un proveedor de servicios) tienen asignado unos rangos de direcciones IP para su funcionamiento interno. Estos son:
• Para clase A: una única dirección de red: 10
• Para clase B: 16 redes del rango 172.16 a 172.31
• Para clase C: 256 direcciones de red: 192.168.0 a 192.168.255
Estas direcciones IP no son utilizadas por los routers para su comunicación con Internet, y se utilizan sólo dentro de la organización. Estas redes (Intranet) tienen la ventaja de ser mucho menos accesibles a ataques desde el exterior. 3.5.
Protocolo ARP. Resolución de direcciones.
http://rfc.net/rfc0826.html
Es tarea de los protocolos de menor nivel (de red local o pasarelas) realizar la
correspondencia entre direcciones de red local y rutas.
En una red local, los ordenadores se comunican por medio de tramas físicas. Por ejemplo, en una red Ethernet, la comunicación se realiza por medio de las tramas Ethernet. En cada trama va un campo con la dirección física de origen y otro campo con la dirección física de destino. Cada hosts está identificado de fábrica con una dirección física, de la forma: A3-FF-00-DA-08-09. Está expresada en notación Hexadecimal.
En una red Internet, la comunicación es por medio de datagramas IP, que van con
direcciones IP.
Necesitamos, entonces, obtener la dirección física de un ordenador por su dirección IP.
Esto es lo que hace el protocolo ARP (Address Resolution Protocol) (Protocolo de resolución de direcciones).
Veamos cómo funciona el protocolo ARP, con un ejemplo: Supongamos dos redes distintas, en la red 1 está el host1 que quiere enviar un mensaje al host 2, que está en la red 2.
1. El host 1 envía un datagrama, con IP origen 195.53.123.219 y con IP destino 193.47.120.220. Como el host destino está en otra red, el datagrama viajará a
través de la red 1, hasta el router, que es la salida de esta red. Para ello hay que
conocer la dirección física de la tarjeta de red 1 del router (el router tiene dos
tarjetas de red).
2. Entra en funcionamiento el protocolo ARP: Se manda un mensaje ARP a todos
los ordenadores de la red 1, para ver quien tiene la dirección IP 195.53.123.210.
Este mensaje es de multidifusión o broadcast y lleva la dirección física e IP del
ordenador origen.
3. El router contesta mandando su dirección física 1, 00-90-E1-F8-91-A1. La
respuesta va directamente al host que preguntó.
4. Host 1 manda la trama física, que contiene encapsulado el datagrama IP, al
router.
5. El router pasa el datagrama IP a la red 2.
6. Se repiten los pasos 2 a 4 en la red 2.
7. El datagrama es recogido por el host 2, ya que su dirección IP de destino, coincide
con la de él.
Vemos que el protocolo ARP ha hecho dos conversiones de dirección IP a dirección física. Si el recorrido fuera a través de n redes, se haría esto n veces. Cada ordenador tiene una tabla ARP (caché ARP) que relaciona las direcciones físicas con las IP. Esta tabla la va construyendo según el proceso anteriormente descrito. Cada vez que el protocolo ARP hace una búsqueda, almacena la respuesta en la tabla ARP, así no tiene que repetir siempre el mismo proceso, sino que primero mira la tabla ARP y, si encuentra la respuesta en ella, la manda directamente al ordenador que la requirió. La tabla ARP se está actualizando cada cierto tiempo, para que recoja las modificaciones de direcciones IP, que haya podido haber.
3.6. Protocolo RARP.
A veces, el problema se plantea al revés, se conoce la dirección física de un host y se necesita conocer la dirección IP. Esto es lo que hace el protocolo RARP (Reverse Address Resolution Protocol) (Protocolo de resolución de direcciones inverso).
Una máquina utiliza el protocolo RARP para obtener su dirección IP a partir de un servidor. RARP utiliza el mismo formato de mensaje que ARP y al igual que un mensaje ARP, es encapsulado en la parte de datos de una trama Ethernet. La red debe tener un servidor RARP, que conteste al host, enviándole la dirección IP, a partir de la dirección física. Esto ocurre en el caso de un ordenador que accede vía módem a Internet, y el proveedor le asigna cada vez una dirección IP, de las que tiene libres en ese momento. El ordenador envía un mensaje broadcast con su dirección física, para que el proveedor le
mande la dirección IP.
3.7. Protocolo BOOTP.
El protocolo BOOTP (Bootstrap Protocol) es algo más eficiente que el anterior, además de la dirección IP del solicitante, se manda información adicional, para facilitar el mantenimiento y movilidad de los ordenadores.
El protocolo BOOTP se utiliza para efectuar arranques remotos en ordenadores que no tienen una dirección IP. (Explicación detallada en: http://ditec.um.es/laso/docs/tut-tcpip/3376c417.html
3.8. Protocolo ICMP.
El Protocolo ICMP (Internet Control Message Protocol), proporciona un mecanismo que puede informar de los posibles errores. También da información de control, como congestión
en la red, cambios de ruta, etc. Está definido en la RFC: http://rfc.net/rfc0792.html
Los mensajes ICMP van encapsulados en los datagramas IP. ICMP utiliza el soporte básico de IP como si se tratara de un protocolo de nivel superior. Sin embargo, ICMP es realmente una parte integrante de IP, y debe ser implementado por todo módulo IP.
El protocolo ICMP no está diseñado para ser absolutamente fiable. El propósito del protocolo es darnos información, no solucionar, sobre los problemas que pueda haber en la comunicación. Existe la posibilidad de que algunos datagramas no sean entregados, sin ningún informe sobre su pérdida. Los protocolos de nivel superior que usen IP son los encargados de que la comunicación sea fiable.
Los mensajes ICMP comienzan con un campo de 8 bits, con el tipo de mensaje. Los
tipos de mensaje principales son:
• 0 Respuesta de eco.
• 3 Destino inaccesible.
• 4 Disminución tráfico de origen.
• 5 Redirigir datagrama.
• 8 Solicitud de eco.
• 11 Tiempo excedido.
Los mensajes tipo 8 y 0 se usan a menudo para ver si hay comunicación entre dos
hosts, pero simplemente a nivel de capa de red.
a) Orden ping.
Esta orden envía mensajes ICMP, de solicitud de eco, desde un host origen a otro
destino y nos muestra los resultados.
Para pensar:
Ejecutar una orden ping a una dirección URL conocida. ¿qué sucede?
• ¿Cuál es la dirección IP?
• ¿Cuánto es el tiempo de respuesta?
b) Orden tracert.
Sirve para saber por donde va pasando la información. Manda mensajes ICMP de solicitud de eco, con tiempos de vida 1,2 3, etc., hasta alcanzar el host destino. El 1º datagrama IP expira en el 1º router, mandando un mensaje tipo 11 (Tiempo excedido) y el router que lo envía. El 2º informa del 2º router y, así sucesivamente. Con esto se consigue tener una traza de los nodos por donde ha ido pasando el datagrama.































