Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre...

37
Servicios en Red– 2º SMR Unidad 2. TCP/IP 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. 2.1 La arquitectura TCP/IP TCP/IP es una compleja arquitectura de red que incluye varios protocolos apilados por capas y que interactúan unos con otros para conseguir el fin de la comunicación entre ordenadores. Es sin lugar a dudas la arquitectura más utilizada del mundo, ya que es la base de comunicación de Internet y se utiliza ampliamente en redes locales. 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. La arquitectura TCP/IP se construyó diseñando inicialmente los protocolos para, posteriormente, integrarlos por capas en la arquitectura. Por esta razón, a TCP/IP muchas veces se la califica como pila de protocolos. Como tal conjunto, 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 (Defensive 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. En 1992 nació la Internet Society (ISOC), que es una ONG de profesionales cuyo objetivo es fomentar, divulgar y estandarizar las distintas técnicas y tecnologías que permitan la comunicación entre cualquier tipo de redes por heterogéneas que sean. Además, patrocina a la IAB (Internet Architecture Board), responsable de la actualiazación del TCP/IP y a la IETF (Internet Engenieering Task Force), encargada de desarrollar estándares para internet. Como la comunicación entre ordenadores es de gran complejidad, la arquitectura TCP/IP divide el problema en otros menos complejos, creándose varios niveles. Cada nivel soluciona un problema de la comunicación y tiene asociado uno o varios protocolos Unidad 2. TCP/IP 1

Transcript of Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre...

Page 1: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

Unidad 2. TCP/IPSupongamos 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.

2.1 La arquitectura TCP/IP

TCP/IP es una compleja arquitectura de red que incluye varios protocolos apilados por capas y que interactúan unos con otros para conseguir el fin de la comunicación entre ordenadores. Es sin lugar a dudas la arquitectura más utilizada del mundo, ya que es la base de comunicación de Internet y se utiliza ampliamente en redes locales. 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.

La arquitectura TCP/IP se construyó diseñando inicialmente los protocolos para, posteriormente, integrarlos por capas en la arquitectura. Por esta razón, a TCP/IP muchas veces se la califica como pila de protocolos. Como tal conjunto, 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 (Defensive 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.

En 1992 nació la Internet Society (ISOC), que es una ONG de profesionales cuyo objetivo es fomentar, divulgar y estandarizar las distintas técnicas y tecnologías que permitan la comunicación entre cualquier tipo de redes por heterogéneas que sean. Además, patrocina a la IAB (Internet Architecture Board), responsable de la actualiazación del TCP/IP y a la IETF (Internet Engenieering Task Force), encargada de desarrollar estándares para internet.

Como la comunicación entre ordenadores es de gran complejidad, la arquitectura TCP/IP divide el problema en otros menos complejos, creándose varios niveles. Cada nivel soluciona un problema de la comunicación y tiene asociado uno o varios protocolos

Unidad 2. TCP/IP 1

Page 2: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

para ello. Su modelo es algo diferente a OSI, aunque están muy relacionados.

OSI TCP/IP

7 Aplicación

Aplicación6 Presentación

5 Sesión

4 Transporte Transporte

3 Red Interred

2 Enlace de datosSubred

Enlace

1 Físico Físico

Tabla 1: Capas de TCP/IP y equivalencia con OSI

Las funciones que realiza cada una de las capas de TCP/IP:● Capa de aplicación. Contiene los protocolos de alto nivel que utilizan los

programas para comunicarse, para ofrecer y recibir servicios. Entre otros muchos, tenemos los protocolos TELNET, FTP, HTTP, etc..

● Capa de transporte. Cumple la función de establecer una conversación entre el origen y el destino. En este nivel la información es dividida en paquetes, para que la transmisión sea más eficiente. Puesto que las capas inferiores no se responsabilizan del control de errores ni de la ordenación de los paquetes, ésta debe realizar todo ese trabajo. Aquí se han definido dos protocolos: TCP y UDP.

● Capa de interred. Esta capa es la más importante de la arquitectura, y su misión es permitir que las estaciones envíen información (paquetes) a la red y los hagan viajar de forma independiente hacia su destino. Es decir, su función es encaminar los datos por la red. Durante ese viaje, los paquetes puede atravesar distintas redes y llegar desordenados. Esta capa no se responsabiliza de ordenar de nuevo los mensajes en el destino. El protocolo más importante de esta capa se llama IP, y otros son ARP/RARP e ICMP.

● Capa de subred. El modelo no da mucha información de esta capa, y solamente se especifica que debe existir algún protocolo que conecte la estación con la red. La razón fundamental es que, como TCP/IP se diseñó para su funcionamiento sobre redes diferentes, esta capa depende de la tecnología utilizada y no se especifica de antemano. Así que en este nivel no hablamos de protocolos, sino de estándares de los niveles de enlace y físico, como Ethernet, X.25, Frame Relay, Token Ring, etc..

Si intentamos esquematizar los estándares de una red local que trabaje con TCP/IP, tenemos el siguiente cuadro.

Unidad 2. TCP/IP 2

Page 3: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

Nivel de aplicaciónProtocolos de

Aplicación TCP/IPTELNET, HTTP, HTTPS, FTP, DNS, DHCP, BOOTP, SSH, SSL, POP, SMTP, IMAP, IRC

Nivel de TransporteProtocolos

TCP/IP

TCP, UDP

Nivel de Red IP

Compatibilidad

Nivel de Subred

Nivel de enlace

Ethernet – Top. BusToken Ring –

Top. AnilloFDDI – Top. Doble Anillo

WiFi – Top. Bus

Nivel físicoCoaxial – Top. Bus

Par trenzado – Top. EstrellaPar trenzado – Top. Estrella

Fibra óptica – Top. Estrella

Aire (2,4 GHz) – Top. Celular

Tabla 2: Estándares en redes locales

El mismo esquema, pero para internet, sería el siguiente

Nivel de aplicaciónProtocolos de

Aplicación TCP/IPTELNET, HTTP, HTTPS, FTP, DNS, DHCP, BOOTP, SSH, SSL, POP, SMTP, IMAP, IRC

Nivel de TransporteProtocolos

TCP/IP

TCP, UDP

Nivel de Red IP

Compatibilidad

Nivel de Subred

Nivel de enlace

PPP PPPoE UMTS / 3,5G / HDSPAV. 92 ADSL DOCSIS

Nivel físico RTC RTC (adaptada)Fibra óptica /

CoaxialAire (2 GHz)

Tabla 3: Estándares en Internet

Los protocolos trabajan juntos para lograr el objetivo de la telecomunicación. Las relaciones de prestación y solicitud de servicios entre protocolos sigue el esquema de la ilustración 1.

En este tema nos centraremos en los protocolos de las capas de transporte y red. Los de aplicación se irán tratando uno por uno en los siguientes temas, conforme vayamos desplegando los servicios sobre internet. Los de subred son más bien estándares independientes, y no pertenecen para nada a la pila de protocolos de TCP/IP. Además, en lo referente a redes locales se trabajaron en el curso anterior y en lo referente a internet se vieron en la unidad 1.

Unidad 2. TCP/IP 3

ARP

ICMP

ARP

ICMP

Page 4: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

2.2 Protocolo TCP

2.2.1 Definición y Características Este protocolo se encuentra descrito en el documento RFC 793 (http://www.rfc-

es.org/rfc/rfc0793-es.txt).El protocolo TCP se encarga de regular el flujo de información entre un origen

y un destino, de tal forma que éste se produzca sin errores y de una forma eficiente, y sin preocuparse por el camino que sigue la información durante su viaje.

Proporciona calidad de servicio, por lo que 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, que crea la ilusión 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. Una vez establecida la conexión, la comunicación es bidireccional a través de ella. Por tanto, la transmisión es punto a punto y full-duplex. (Ver animación).

• Fiable. Significa que la información llega sin errores al destino. Por esto, la aplicación o programa que use 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 o programa que requiere sus servicios (establecer comunicación o “diálogo” con otra máquina) y el protocolo IP, responsable de dirigir el tráfico por la red hasta llegar a su destino.

Unidad 2. TCP/IP 4

Ilustración 1: Comunicación entre protocolos de TCP/IP

Telnet WWW DNS Time

TCP UDP

IP

ICMP

ARP/RARP

ControladorDe Adap. Red

AdaptadorDe red

... ...Aplicaciones

Transporte

Red

Subred

Page 5: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

Este protocolo usa la tecnología de conmutación de paquetes. El mensaje a enviar se divide o trocea en segmentos, que, con la cabecera correspondiente, son pasados al protocolo IP. El protocolo IP les incorporará su cabecera dando lugar a datagramas IP- Por tanto, decimos que los segmentos viajan encapsulados en los datagramas IP. Esos datagramas IP llevarán los segmentos por la red hasta su destino.

Encabezado segmento TCP

Área de datos del segmento TCP

↓ ↓Encabezado del

datagrama IPÁrea de datos del datagrama IP

↓ ↓Encabezado de la trama

Área de datos de la tramaFinal de la

trama

El flujo de información es no estructurado, es decir, se trata información binaria sin ningún formato. Es la aplicación de destino quien tiene que interpretar esta información.

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 (Ver animación):

1. Apertura de conexión. 2. Transferencia de datos. 3. Cierre de conexión.

2.2.2 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). Los bytes del mensaje 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 en los niveles inferiores.

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. Por tanto, los mismo pasa con los correspondientes segmentos TCP que transportan y, por añadido, con los fragmentos de mensaje original. El protocolo TCP se encarga de corregir estos problemas, numera los segmentos antes de ser enviados y en el destino se encarga de reensamblarlos en el orden adecuado para recomponer el mensaje (ver animación). Además solicita el reenvío

Unidad 2. TCP/IP 5

Page 6: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

de los datagramas que no hayan llegado o sean erróneos. No es necesario normalmente reenviar el mensaje completo.

El formato estándar de un segmento TCP es el siguiente (ver animación): 0 10 20 30

0 1 2 3 4 5 6 7 8 9 0 1 2 3 3 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

Byte 0 Byte 1 Byte 2 Byte 3

Puerto TCP origen Puerto TCP destino

Número de secuencia

Número de acuse de recibo

HLEN Reservado Indicadores Ventana

Suma de verificación Puntero de urgencia

Opciones (si las hay) Relleno

Datos

...

Ilustración 2: Segmento TCP

El significado de cada campo es: ● Puerto TCP origen: especifica el puerto del host origen que envía el segmento

TCP. Ocupa 16 bits y es obligatorio. ● 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 distinguir entre las distintas transferencias de datos, ya que un mismo ordenador puede estar involucrado en varias transferencias simultáneas.

● Número de secuencia: indica el primer byte de datos del mensaje 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.

● 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.

● Reservado: está reservado para usos futuros, actualmente se pone a 0. Ocupa 6 bits.

● Indicadores o campos de control: indican el propósito del segmento. Contienen funciones de control (como, por ejemplo, configuración y terminación de una sesión). Ocupa 6 bits. Cada bit es un indicador y solamente tiene significado cuando su valor es 1. El significado de cada bit es el siguiente: 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.

Unidad 2. TCP/IP 6

Page 7: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

ACK (acuse de recibo): Indica que tiene significado el número que hay almacenado en el campo "Número de acuse de recibo".

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.

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.

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.

FIN (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 16 bits.

● 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: Timestamp, para indicar en qué momento se transmitió el segmento. De esta

manera se puede medir el retardo del segmento 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 que el tamaño del segmento TCP sea múltiplo de 32 bits.

● Datos: información, propiamente dicha, fragmento del mensaje que envía el origen al destino.

2.2.3 Establecimiento de una conexión Para abrir la conexión se envían tres segmentos, por eso se llama "saludo de tres

vías" :

Unidad 2. TCP/IP 7

Page 8: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

1. El ordenador 1 (O1), hace una apertura activa y envía un segmento TCP (S1), al ordenador (O2). Este segmento lleva el bit SYN activado y el primer número de secuencia x 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 no 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, habrá que cerrar la conexión.

2.2.4 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 recibo positivo con retrasmisión” (PAR), mediante el cual el receptor (O2) envía un mensaje de acuse 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í:

Unidad 2. TCP/IP 8

Ilustración 3: Proceso de conexión

Page 9: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

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 segundo 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.

La cantidad de datos en bytes que se pueden transmitir antes de recibir un ACK se denomina "tamaño de ventana". Hasta ahora hemos visto 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 eficiente del canal de transmisión. Con cada ACK, el receptor envía un valor indicando cuántos segmentos puede recibir. Entonces el emisor envía esos segmentos sin esperar los ACK correspondientes a cada uno, sólo espera el del último (ver animación).

Con un tamaño de ventana negociado = 3 y ventana deslizante:

Unidad 2. TCP/IP 9

Ilustración 4: Control de flujo mediante parada y espera

Page 10: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

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.

2.2.5 Control de errores Para poder controlar la fiabilidad de la transmisión de segmentos 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 segmento completo, denominado normalmente checksum. Cuando el equipo destino recibe el segmento, vuelve a calcular el checksum del mismo, comprobando que es igual que el incluido por el emisor en la cabecera. Si son distintos, el segmento 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 segmento de confirmación al servidor, que contiene en su cabecera un campo de validación 32 bits, llamado Acknowledgment Number, y que identifica el segmento que ha llegado correctamente. El emisor 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 segmento, lo vuelve a enviar. A veces, por razones de eficiencia, los segmentos se suelen enviar sin esperar esta confirmación.

Hay varias técnicas para obtener el checksum y con él detectar y corregir los posibles errores en la transmisión. Las más usadas, de menor a mayor eficacia y complejidad son las siguientes (ver animación):

• 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: se calcula un valor haciendo operaciones con algunos valores de la cabecera, como las direcciones IP de origen y destino, y el campo de datos.

Unidad 2. TCP/IP 10

Ilustración 5: Control de flujo mediante ventana deslizante

Page 11: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

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 segmentos perdidos.

• Confirmación negativa y transmisión: el receptor confirma los segmentos recibidos erróneamente, para que el emisor los vuelva a enviar.

• 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.

Unidad 2. TCP/IP 11

Page 12: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

2.2.6 Cierre de la conexión El proceso es una variación del saludo de tres vías:

1. O1 ya 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.

2. O2 recibe el segmento, informa a la aplicación receptora del cierre y 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.

2.2.7 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. Sin embargo, 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 proceso al que va destinado el mensaje. Para esto, la capa de transporte añade la noción de puerto.

Cada proceso utiliza un número de puerto distinto. Cuando un proceso está esperando un mensaje lo hace en un puerto determinado, y se dice que está "escuchando un puerto". Es decir, un proceso sólo recoge los mensajes con destino el puerto que tiene

Unidad 2. TCP/IP 12

Ilustración 6: Cierre de conexión

Page 13: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

en escucha. Un puerto es un número de 16 bits, por lo que existen 216=65.536 números de puerto posibles en cada ordenador. Los procesos utilizan estos puertos para enviar y recibir mensajes.

Aparte del concepto de puerto, la capa de transporte, usa el concepto de socket o zócalo. Los sockets son los puntos terminales de una comunicación, que pueden ser nombrados y direccionados en una red. Una dirección de socket está formado por la tripleta:

{protocolo, dirección local, proceso local} Por ejemplo, en la arquitectura TCP/IP un socket sería: {tcp, 193.53.214.3, 1345}.Genéricamente sería {protocolo de transporte, dirección IP, puerto}, ya que la

dirección local en este caso es una dirección IP, y la forma de identificar procesos en esta arquitectura es mediante los puertos.

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 un puerto bien conocido, por lo que sabiendo su IP y este puerto se le podrá enviar un mensaje.

Los primeros 1024 puertos son los llamados "puertos bien conocidos" (well-known) , y 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 son controlados y asignados por IANA ("Internet Assigned Numbers Authority"), parte del ICANN. Se han establecido tras intervalos:

• Puertos bien conocidos o well-known (del 0 al 1023). 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). No se pueden usar sin registro en la IANA.

• Puertos registrados (del 1024 al 49151). Los puertos registrados son normalmente empleados por las aplicaciones de usuario de forma temporal cuando conectan con los servidores, pero también pueden representar servicios que hayan sido registrados en la IANA por un tercero.

• Puertos dinámicos y/o privados (del 49152 hasta el 65535). No están regulados, y se suelen usar para las aplicaciones cliente, aunque menos que los registrados.

Los puertos bien conocidos más habituales son (lista ampliada):

Unidad 2. TCP/IP 13

Page 14: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

Palabra clave Puerto Descripción

echo 7/tcp-udp Eco

daytime 13/tcp-udp Fecha y hora

ftp 21/tcp Protocolo de Transferencia de Ficheros

telnet 23/tcp Telnet

smtp 25/tcp Protocolo de correo sencillo

domain 53/tcp-udp Servidor de nombres de dominio (DNS)

gopher 70/tcp Gopher

www-http 80/tcp World Wide Web HTTP (servicio de páginas web)

pop3 110/tcp Post Office Protocol - Versión 3

irc 194/tcp Internet Relay Chat Protolol (Protocolo de Internet para Chat)

Tabla 4: Principales puertos bien conocidos

Como veremos más adelante, con el comando netstat, podemos ver las conexiones activas y los sockets en uso.

2.2.8 Puertos y seguridad Al ser los puertos las "puertas" de entrada a un ordenador, pueden usarse por los

"piratas" para sus ataques. 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. Por eso se recomienda que, en general, no se tengan más puertos abiertos que los que sean imprescindibles.

Es conveniente, por lo tanto, comprobar los puertos que tenemos abiertos, con netstat por ejemplo, y cerrar los que no necesitemos mediante un firewall. En cualquier sistema, si no hay firewall funcionando todos los puertos están abiertos por defecto.

Principales opciones de netstat ...en Windows ...en Linux

Usar direcciones IP y números de puertos en lugar de nombres -n -n

Mostrar las conexiones activas tcp -t

Mostrar las conexiones activas udp -u

Mostrar todas las conexiones -tu -a

Mostrar puertos escuchando -l

Mostrar aplicación en cada puerto -p -b

Mostrar tabla de enrutamiento -r -r

Ilustración 7: Uso del comando netstat

Unidad 2. TCP/IP 14

Page 15: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

2.3 Protocolo UDP

2.3.1 Introducción y funcionamientoEste protocolo se describe en: http://www.rfc-es.org/rfc/rfc0768-es.txt

El Protocolo de Datagrama de Usuario (UDP) es un protocolo de la capa de transporte que proporciona una comunicación sencilla entre dos ordenadores, consumiendo pocos recursos.

Es el complementario de TCP en la capa de transporte, en el sentido de que su dos principales características son las contrarias a las de TCP. Por tanto, UDP es:

• No confiable: no hay un control de paquetes enviados y recibidos. Estos pueden llegar erróneos o no llegar a su destino, sin que el emisor se percate de ello.

• No orientado a conexión: no se realiza una conexión previa entre origen y destino, como ocurre en el protocolo TCP.

Por contra, dada su sencillez, es mucho más “veloz” que TCP a la hora de transmitir un mensaje. Por ello, 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.

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.

Encabezado segmento UDP

Área de datos del segmento UDP

↓ ↓Encabezado del

datagramaÁrea de datos del datagrama IP

↓ ↓Encabezado de la trama

Área de datos de la tramaFinal de la

trama

Como TCP, 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 segmento 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 segmento, se descarta. Esto hace que deban ser las aplicaciones que lo usen, las que controlen los errores, si les interesa. Tampoco numera los segmentos, ni utiliza confirmación de entrega, como ocurre en TCP. Esto hace que no hay garantía de que un segmento llegue a su destino, ni que pueden llegar duplicados o desordenados a su destino.

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.

Unidad 2. TCP/IP 15

Page 16: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

Uno 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. Algunas situaciones en las que es más útil el protocolo UDP, son:

• Aplicaciones en tiempo real como audio o vídeo, 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..

2.3.2 Formato del segmento UDP El formato del segmento UDP es el siguiente:

0 10 20 300 1 2 3 4 5 6 7 8 9 0 1 2 3 3 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

Byte 0 Byte 1 Byte 2 Byte 3

Puerto UDP origen Puerto UDP destino

Longitud segmento UDP Suma verificación UDP

Datos

...

Ilustración 8: Segmento TCP

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 segmento: especifica la longitud en bytes del segmento, 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

Unidad 2. TCP/IP 16

Page 17: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

2.4 Protocolo IP

2.4.1 Definición. Características Protocolo definido en el documento http://www.rfc-es.org/rfc/rfc0791-es.txt

El protocolo IP se encarga de conducir la información a través de la red o de las redes.

Una red está formada por varios ordenadores o estaciones. Si queremos que ordenadores de redes distintas puedan intercambiar información debemos conectar esas redes mediante uno o varios routers. Cada router puede interconectar varias redes. Cuando TCP o UDP envían una información simplemente indican a dónde la envía, pero no por donde. Es el protocolo IP el encargado de decidir sobre la marcha el camino que seguirá la información a través de la red o de las redes, atravesando cuantos routers sean necesarios. Y para ello necesita identificar cada estación y cada router de cada red, para lo que usa las llamadas direcciones IP.

El protocolo IP es el principal protocolo de la capa de red, y se encarga de establecer y aplicar las normas para la transmisión a través de la red de bloques de datos llamados paquetes IP o datagramas.

El protocolo recibe información de protocolos de nivel superior, en la mayoría de los casos segmentos TCP o UDP. Normalmente, estos segmentos (junto con la cabecera que deberá añadir IP) no exceden la longitud máxima de un datagrama. IP 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 destino en la misma red o, en caso de no estar éste en la misma red, hasta la salida de la misma.

Segmento TCP o UDP

↓ ↓Encabezado del

datagrama IPÁrea de datos del datagrama IP

↓ ↓Encabezado de la trama

Área de datos de la tramaFinal de la

trama

Ilustración 9: Encapsulado de datagrama IP

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.

Por tanto el protocolo IP realiza dos funciones básicas:

• Direccionamiento / Enrutamiento. Cada datagrama IP tiene una cabecera en la que figuran la dirección de origen y de destino (direccionamiento). El módulo IP usa estas direcciones para llevar el datagrama hasta su destino. Este proceso se llama encaminamiento o enrutamiento.

Unidad 2. TCP/IP 17

Page 18: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

• Fragmentación. El módulo IP usa campos en la cabecera para fragmentar y reensamblar los datagramas IP, si fuera necesario, para su transmisión por redes de trama pequeña.

En cada estación y en cada router que interconecta redes reside un módulo IP. Estos módulos tienen reglas comunes para interpretan las direcciones y para fragmentar y reensamblar los datagramas IP. Estos módulos, en los routers, saben cómo encaminar los datagramas IP hacia una u otra red.

Es un sistema de conmutación de paquetes no orientado a conexión, ya que cada paquete viaja independientemente de los demás; y no fiable, los paquetes se pueden perder, duplicar o cambiar de orden. Es decir este protocolo no soluciona estos problemas, tarea que queda para otros protocolos de niveles superiores.

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).

2.4.2 Modo de Operación Para transmitir un datagrama IP procede de la siguiente manera:

Supongamos dos estaciones, que quieren intercambiar información; cada uno estará integrado en su respectiva red local, y supongamos que hay routers intermedios que interconectan ambas redes.

El protocolo de transporte del emisor, ya sea TCP o UDP, prepara sus datos, segmentos, y llama a su módulo IP, que se encargará de enviar cada segmento como un datagrama IP. Para ello, prepara la cabecera del datagrama con la dirección de destino y otros parámetros y la adjunta al segmento TCP o UDP. Decide, según la dirección IP del destino sea de la propia red o de otra, si debe enviarlo directamente o al router que conecta la red con otras redes. Posteriormente, lo entrega a la interfaz de red local indicándole a dónde ha decidido enviarlo. Esta, crea una cabecera y final de red local (según las normas del protocolo de red la red local que sea), le adjunta el datagrama IP y envía el resultado a través de la red local en forma de trama.

Nuestro caso es el caso más complejo, el que la dirección de destino es de otra red, y por tanto el datagrama ha sido enviado al router. El router usa su módulo IP, que comprueba según sus reglas y la dirección IP de destino a qué otra red de las que tiene conectada debe ir el datagrama. Así sucesivamente, hasta llegar al router de la red local a la que pertenece la estación de destino. Una vez en este router, y dado que la dirección de destino pertenece a la red en la que ya se encuentra el datagrama, el router lo envía directamente a la estación de destino (Ver ilustración).

Esta estación, a su vez, llama a su módulo IP, que quita la cabecera y lo pasa al protocolo de transporte al cual va dirigido el datagrama.

Como vemos, los datagramas van pasando desde un módulo IP a otro hasta que se alcanza el destino, y los módulos internet residen en las estaciones y los routers. Todo este proceso se basa en la interpretación de la dirección IP de destino, y de ahí su importancia.

Unidad 2. TCP/IP 18

Page 19: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

En su ruta, los datagramas pueden necesitar atravesar una red cuyo tamaño máximo de trama (nivel de enlace) es menor que el tamaño del datagrama. Para salvar esta dificultad, el protocolo IP proporciona un mecanismo de fragmentación (Ver ilustración).

2.4.3 Formato de un Datagrama IP El formato del datagrama IP es el siguiente:

0 10 20 30

0 1 2 3 4 5 6 7 8 9 0 1 2 3 3 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

Byte 0 Byte 1 Byte 2 Byte 3

VERS HLEN Tipo de servicio Longitud total

Identificación Bandrs Desplazamiento de fragmento

TTL Protocolo CRC cabecera

Dirección IP origen

Dirección IP destino

Opciones IP (si las hay) Relleno

Datos

...

Ilustración 10: Formato de datagrama IP

Campos del datagrama IP

• Versión (4 bits). Indica la versión del protocolo IP utilizada. Actualmente se utiliza mayoritariamente la versión 4 (IPv4), pero cualquier sistema operativo soporta ya la siguiente versión, la 6 (IPv6).

• HLEN (4 bits). Longitud de la cabecera, 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), incluyendo 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 tratara 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) prohíbe 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

Unidad 2. TCP/IP 19

Page 20: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

cero.

• Tiempo de vida o TTL (8 bits): tiempo máximo que puede estar el datagrama en la red. Cada vez que el datagrama atraviesa un router se 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, sólo en la cabecera, no en los datos. 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, los datos, normalmente un segmento TCP o UDP.

2.4.4 DireccionamientoHay 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 o dirección IP, y las utiliza para identificar cada nodo (estación o router) . Es tarea de los protocolos de mayor nivel, hacer corresponder nombres con direcciones. Gracias a las direcciones IP, los protocolos de enrutamiento pueden calcular la ruta a seguir por un datagrama a través de las estaciones y/o routers hasta su destino.

Dada la importancia del direccionamiento IP, lo veremos en un apartado separado, tras los otros protocolos.

2.5 Otros protocolos

2.5.1 Protocolo ARPEl protocolo ARP (Adress Resolution Protocol), definido en el RFC 826

(http://www.rfc-es.org/rfc/rfc0826-es.txt), sirve de puente entre el nivel de red y el nivel de enlace del modelo OSI.

Averigua la dirección física o MAC (Media Access Control) de una tarjeta a partir de una dirección IP.

Unidad 2. TCP/IP 20

Page 21: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

Recordar que la MAC es una secuencia de 6 grupos de 2 digitos hexadecimales separados por dos puntos (:) que identifica de forma única dicha interfaz (AA: BB: CC: DD: EE: FF). Los tres primeros grupos (AA:BB:CC) indican el fabricante de la tarjeta y los tres últimos grupos (DD:EE:FF) es el numero de la tarjeta de fabricación.

En una red los ordenadores se comunican por medio de tramas físicas a nivel de enlace. Por ejemplo, en una red Ethernet, la comunicación se realiza por medio de las tramas Ethernet. Cada adaptador de red que conecta una estación con una red está identificado de fábrica con una dirección física, llamada MAC. En cada trama va un campo con la MAC de origen y otro campo con la MAC de destino.

Sin embargo, a nivel de red, en una red TCP/IP la comunicación es por medio de datagramas IP, y para identificar las estaciones se usan direcciones IP. Cuando el nivel de enlace intenta mandar una trama que contiene un datagrama IP, necesita saber la dirección MAC del destino a partir de la IP del mismo, que es lo que contiene el datagrama. 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 que la estación A con dirección IP 192.168.10.1 quiere enviar un datagrama a la estación B con dirección IP 192.168.10.2.

1. El módulo IP de la estación A entrega el datagrama con las direcciones IP de origen y destino a su módulo de enlace, a su adaptador de red.

2. El adaptador no sabe interpretar la dirección IP, y por tanto no sabe dónde tiene que enviar la trama que contenga el datagrama IP. Necesita la dirección MAC de la estación con IP 192.168.10.2.

3. Entonces entra en funcionamiento el protocolo ARP. Se manda un mensaje a todas las estaciones de la red preguntando quién tiene la dirección IP de destino, es decir, 192.168.10.2. Este mensaje es de multidifusión o broadcast y lleva la dirección MAC e IP del ordenador origen.

4. El mensaje llega a todas las estaciones, y en concreto a la que tiene la dirección IP 102.168.10.2. Entonces esta estación responde a la que envió el mensaje de difusión (de la que conoce la MAC) con otro mensaje indicando cuál es su dirección MAC.

5. Ese mensaje de respuesta con la MAC del ordenador de destino llega al ordenador que quería transmitir, que gracias a ella ya puede enviar la trama y, en su interior, el datagrama IP.

Cada ordenador tiene una tabla ARP (caché ARP) que relaciona las direcciones físicas con las IP que ha consultado recientemente. 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í, en próximos envíos se consulta primera en la tabla si ya se sabe la dirección MAC del destino conocida su IP, y en caso afirmativo no hay que repetir la búsqueda (ver ilustración). La tabla ARP se está actualizando cada cierto tiempo, para que recoja las modificaciones de direcciones IP y MAC que haya podido haber.

Unidad 2. TCP/IP 21

Page 22: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

Protocolo RARP A veces, el problema se plantea al revés, se conoce la dirección física de una

estación 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).

El protocolo RARP (Reverse ARP) de resolución de direcciones inversas, definidas en el RFC 903 (http://www.rfc-es.org/rfc/rfc0903-es.txt), se utiliza para obtener la dirección IP conociendo la MAC del interfaz de red. Para ello debe haber un servidor que proporcione una IP al recibir la petición.

Este protocolo ha quedado obsoleto debido a sus limitaciones y a la aparición de otros mas potentes como el protocolo BOOTP (BootStrap Protocol, RFC 951, http://tools.ietf.org/html/rfc951) que ha sido el precursor del protocolo DHCP (Dinamyc Host Configuration Protocol) que es el que se utiliza en la actualidad.

Una de las principales limitaciones del protocolo RARP era que cada dirección MAC tenía que ser configurada manualmente en un servidor central y se limitaba sólo a la dirección IP, dejando otros datos como la máscara de subred, puerta de enlace y demás información que tenían que ser configurados a mano.

Una máquina utiliza el protocolo RARP para obtener la dirección IP de otra. RARP utiliza el mismo formato de mensaje que ARP. Al igual que en ARP, se envía un mensaje de difusión y la máquina que tiene la dirección MAC que se conoce responde con otro mensaje que contiene su dirección IP (ver ilustración).

Protocolo BOOTP El protocolo BOOTP (Bootstrap Protocol) es algo más eficiente que el anterior, ya

que además de la dirección IP del solicitante 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.

Protocolo ICMP El Protocolo ICMP (Internet Control Message Protocol) proporciona un

mecanismo que puede informar de los posibles errores en la red. También da información de control, como congestión en la red, cambios de ruta, etc..

El protocolo ICMP (Internet Control Messaging Protocol, RFC 792, http://www.rfc-es.org/rfc/rfc0792-es.txt) es el protocolo encargado de avisar al emisor de errores inesperados en el envío de algún paquete IP. Como tal, se usa para enviar mensajes de error, indicando por ejemplo que un servicio determinado no está disponible o que un router o host no puede ser localizado.

Los mensajes ICMP van encapsulados en datagramas IP. ICMP utiliza el soporte básico de IP como si se tratara de un protocolo de nivel superior (como TCP o UDP). Sin embargo, ICMP es realmente una parte integrante de IP, y debe ser implementado por todo módulo IP.

Unidad 2. TCP/IP 22

Page 23: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

El protocolo ICMP no está diseñado para ser absolutamente fiable. El propósito del protocolo es darnos información sobre los problemas que pueda haber en la comunicación, pero no solucionarlos. 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 que contiene el tipo de mensaje. Los tipos 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 estaciones, pero simplemente a nivel de capa de red, mediante las siguientes órdenes.

a) Orden ping

Esta orden envía mensajes ICMP, de solicitud de eco, desde una estación origen a otra destino, a la que nos referimos por su dirección IP o por su nombre. La de destino, si le llaga la solicitud, responde con los mismos mensajes, y de esta manera podemos asegurar la conectividad a nivel de red. La orden nos muestra el tiempo que ha tardado la respuesta o un mensaje de error si no hay respuesta transcurrido un tiempo. Su formato es:

ping [dirección_IP o nombre]

b) Orden tracert

Sirve para saber por dónde va pasando un datagrama IP hasta su estación destino, a la que nos referimos por su dirección IP o por su nombre. Manda mensajes ICMP de solicitud de eco, con tiempos de vida 1, 2, 3, etc., hasta alcanzar la estación destino. El primer datagrama IP (donde van encapsulados los mensajes ICMP) expira en el primer router, mandando un mensaje tipo 11 (tiempo excedido) e indicando el router que lo envía. El segundo informa del segundo router y, así sucesivamente. Con esto se consigue tener una traza de los nodos por donde ha ido pasando el datagrama. Su formato es:

tracert [dirección_IP o nombre]

2.6 Direcciones IP

La dirección IP es el identificador de cada host o estación dentro de su red a nivel de red. Cada host conectado a una red tiene una dirección IP asignada, la cual debe ser

Unidad 2. TCP/IP 23

Page 24: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

distinta a todas las demás direcciones que estén vigentes en ese momento en la red del host.

Una dirección IP es un número de 4 bytes (cuatro números decimales entre 0 y 255). Por ejemplo: 194.142.78.95. Este número lleva codificado la dirección de la red, llamada net-id y la dirección de la estación dentro de esa red, llamada host-id.

Las direcciones IP se clasifican en:

Direcciones IP públicas. Son las asignadas a las estaciones que forman parte directa de Internet. Un ordenador con una IP pública es accesible (visible) desde cualquier otro ordenador conectado a Internet. Para que una estación se conecte a Internet es necesario que una dirección IP pública o que un elemento de su red la tenga.

Direcciones IP privadas (reservadas). Son visibles únicamente por otros hosts de su propia red privada. Se utilizan, por ejemplo, en las empresas para los puestos de trabajo. Los ordenadores con direcciones IP privadas pueden salir a Internet por medio de un router (o proxy) que tendrá una IP pública. Sin embargo, desde Internet no se puede acceder a ordenadores con direcciones IP privadas1.

En el caso de Internet, no puede haber dos ordenadores con dos direcciones IP (públicas) iguales. Dentro de una red local concreta, tampoco puede haber dos ordenadores con la misma dirección IP. Pero sí podríamos tener dos ordenadores con la misma dirección IP siempre y cuando pertenezcan a redes locales independientes entre sí (en el camino que comunica a ambas hay al menos un router con una dirección IP pública o privada de otra red).

2.6.1 Direcciones IP públicasSon las que se usan en la red Internet. Las direcciones IP públicas son controladas y

asignadas por la IANA, parte del ICANN. Normalmente, los ISP solicitan paquetes de direcciones IP públicas y las utilizan para sus redes, que incluyen sus propias estaciones y routers de las centralitas y las estaciones (conectadas por modem) y routers de sus clientes. Los ISP tienen dos formas de otorgar las direcciones IP:

De forma estáticas (IP estática o fija). Un host que se conecte a la red con dirección IP estática siempre lo hará con una misma IP. Las direcciones IP públicas estáticas son las que utilizan los servidores de Internet con objeto de que estén siempre localizables por los usuarios de Internet. Estas direcciones hay que contratarlas explícitamente.

De forma dinámica (IP dinámicas). Un host que se conecte a la red mediante dirección IP dinámica cada vez lo hará con una dirección IP distinta. Las direcciones IP públicas dinámicas son las que se utilizan en las conexiones a Internet mediante un módem. Los proveedores de Internet utilizan direcciones IP dinámicas debido a que tienen más clientes que direcciones IP contratadas (es muy improbable que todos se conecten a la vez).

Recordamos que las direcciones IP están formadas por 4 bytes (32 bits). Se suelen

1 Existen técnicas como NAT que permiten hacer visibles en internet a ordenadores con direcciones IP privadas en determinadas circunstancias.

Unidad 2. TCP/IP 24

Page 25: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

representar de la forma a.b.c.d donde cada una de estas letras es un número comprendido entre el 0 y el 255. Por ejemplo la dirección IP del servidor web de IBM (www.ibm.com) es 129.42.18.99.

Las direcciones IP también se pueden representar en hexadecimal, desde la 00.00.00.00 hasta la FF.FF.FF.FF o en binario, desde la

00000000.00000000.00000000.00000000

hasta la

11111111.11111111.11111111.11111111

Éstas serían tres formas diferentes de escribir la misma dirección IP (podemos utilizar la calculadora científica de Windows para realizar las conversiones).

(decimal) 128 . 10 . 2 . 30(hexadecimal) 80 . 0A . 02 . 1E

(binario) 10000000 . 00001010 . 00000010 . 00011110

¿Cuántas direcciones IP existen? Si calculamos 2 elevado a 32 obtenemos más de 4.000 millones de direcciones distintas. Sin embargo, no todas las direcciones son válidas para asignarlas a hosts.

Las direcciones IP no se encuentran aisladas en Internet, sino que pertenecen siempre a alguna subred. Los ordenadores que están en la misma subred se pueden comunicar directamente, y los que están en distintas subredes lo tienen que hacer a través de un router.

Todas las máquinas conectadas a una misma subred se caracterizan en que los primeros bits de sus direcciones IP son iguales. De esta forma, las direcciones se dividen conceptualmente en dos partes: el identificador de red y el identificador de host. El identificador de red será la primera parte de la dirección IP. No hay un número fijo de bits que correspondan a la dirección de red, ya que ésto depende, en principio, de la clase a la que pertenezca la dirección:

Las de clase A utilizan 7 bits para la dirección de red y un bit, el primero, puesto a “0” para indicar el tipo. Esto significa que el primer número (hasta el primer punto) está entre 0 y 127. Éste número es el identificador de red.

Las de clase B utilizan 14 bits para la dirección de red y dos bits, los primeros, puestos a “10” para indicar el tipo. Esto significa que el primer número (hasta el primer punto) está entre 128 y 191. El identificador de red serán los dos primeros números (hasta el segundo punto).

Las de clase C utilizan 21 bits para la dirección de red y tres bits, los primeros, puestos a “110” para indicar el tipo. Esto significa que el primer número (hasta el primer punto) está entre 192 y 223. El identificador de red serán los tres primeros números (hasta el tercer punto).

Pertenecerán a la misma red aquellas estaciones que tengan el mismo identificador de red. El identificador de red viene a ser la dirección de la subred a la que pertenece el host. De hecho, la dirección IP de la subred completa se referencia por el identificador de red de sus hosts completado con ceros hasta alcanzar los 32 bits. Por ejemplo, para la

Unidad 2. TCP/IP 25

Page 26: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

dirección IP 15.20.30.40 de la clase A, el identificador de red es 15, luego la dirección IP de la red a la que pertenece es 15.0.0.0. No puede haber dos redes con el mismo identificador de red.

El resto de bits de la dirección IP hasta completar los 32 bits se utilizan para el identificador del host dentro de la red a la que pertenece. En cada ordenador de la red, será diferente. Así, dependiendo de la clase de dirección IP, tenemos:

Las de clase A utilizan 24 bits para la dirección de host (a partir del primer punto)

Las de clase B utilizan 16 bits para la dirección de host (a partir del segundo punto)

Las de clase C utilizan 8 bits para la dirección de host (a partir del tercer punto)

Como cada red tiene un identificador de red diferente, y dentro de cada red cada host tiene un identificador de host diferente, resulta que cada ordenador tiene una dirección IP diferente.

Existen dos clases más de direcciones. La clase D está formada por direcciones que identifican no a un host, sino a un grupo de ellos. Las direcciones de clase E no se pueden utilizar (están reservadas).

0 1 2 3 4 8 16 24 31

Clase A 0 red host

Clase B 1 0 red host

Clase C 1 1 0 red host

Clase D 1 1 1 0 grupo de multicast (multidifusión)

Clase E 1 1 1 1 (direcciones reservadas: no se pueden utilizar)

Tabla 5. Clases de direcciones IP

Ahora centrémonos en una de las clases, por ejemplo la A. Tenemos siete bits para el identificador de red. Por tanto podemos construir 27 = 128 identificadores de red diferentes. Como quiera que dos hosts con el mismo identificador de red pertenecen a la misma red, esto implica que sólo podemos construir 128 redes diferentes utilizando direcciones IP de clase A. Dentro de cada una de estas redes, tenemos 24 bits para identificar hosts. Esto significa que podemos tener dentro de la subred 224 = 16.777.214 direcciones diferentes, es decir, que dentro de cada red con direcciones de clase A podemos tener hasta 16.777.214 estaciones o hosts.

Los cálculos para las otras clases se hacen de forma similar, obteniéndose los resultados de la siguiente tabla, en el que no se han tenido en cuenta direcciones especiales que no se pueden utilizar y que citaremos a continuación2.

2 Estos datos pueden variar un poco porque algunas direcciones son especiales y no valen para una red o un host. Se ha preferido la comprensión de los datos a su exactitud.

Unidad 2. TCP/IP 26

Page 27: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

ClaseFormato(r=red, h=host)

Número de redes

Número dehosts por red

Rango de direcciones de redesMáscara de

subred

A r.h.h.h 128 16.777.214 0.0.0.0 - 127.0.0.0 255.0.0.0

B r.r.h.h 16.384 65.534 128.0.0.0 - 191.255.0.0 255.255.0.0

C r.r.r.h 2.097.152 256 192.0.0.0 - 223.255.255.0 255.255.255.0

D grupo - - 224.0.0.0 - 239.255.255.255* -

E No válidas - - 240.0.0.0 - 255.255.255.255* -

*Son rangos de direcciones, no de direcciones de red

Tabla 6. Rango de las clases de direcciones IP

2.6.2 Direcciones IP privadasLas direcciones IP privadas se encuentran reservadas para su uso en redes

privadas o de área local. Si se desea que las estaciones de estas redes se comuniquen con estaciones de internet o de otras redes es necesario usar routers que comuniquen unas redes con otras.

Las IP privadas son asignadas por los usuarios o el administrador de red al configurar el protocolo IP de las estaciones. No es necesario solicitar la dirección a la IANA ni a ningún otro organismo, entidad, ISP, empresa, etc., se pueden usar libremente. En la red se puede articular un mecanismo (DHCP) para que la asignación de esas IP pueda ser dinámica o automática.

Las direcciones IP privadas responden al mismo esquema que las públicas, es decir, están formadas por cuatro bytes que se representan con cuatro números decimales entre 0 y 255 separados por puntos. Cada dirección está formada por un identificador de red y un identificador de host. Tenemos tres clases de direcciones que se forman exactamente igual que las clases de las privadas.

¿Dónde está la diferencia? Pues en que para que una dirección IP sea privada tiene que estar en uno de los tres rangos (en función de su clase) que se describen en la siguiente tabla.

Clase Rango de direcciones reservadas como privadas

A 10.0.0.0 – 10.255.255.255

B 172.16.0.0 – 172.31.255.255

C 192.168.0.0 – 192.168.255.255

Tabla 7. Direcciones IP privadas

Lo primero que debemos indicar es que no existen direcciones IP públicas dentro de estos rangos. Es decir, no existe la dirección IP pública, o de Internet, 10.20.30.40, ya que se trata de una dirección IP privada.

Lo segundo es que estas direcciones se utilizan para los hosts que forman parte de

Unidad 2. TCP/IP 27

Page 28: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

una red privada, y no de la red pública que constituye Internet. Por tanto no se puede acceder a estas estaciones desde Internet, puesto que no tienen dirección pública, ni viceversa, no se puede acceder a internet desde ellas. Sin embargo la comunicación con internet en ambos sentidos sí es posible a través de un router que conecte la red local con una subred de internet (y desde esta subred al resto de internet a través de más routers).

Cuando una estación intenta transmitir un mensaje a otra que tiene una IP privada, la buscará dentro de la red privada o de área local a la que pertenece (será necesario que tengan el mismo identificador de red). Sin embargo, si intenta transmitir un mensaje a otra que tiene una IP pública o una IP privada de otra red lo hará a través del punto de salida de la red a la que pertenece, llamado puerta de enlace. Este punto de salida será un router que dispone, por un lado, de una dirección IP privada de la red local, y por otro, de una IP pública de Internet o una IP privada de la otra red. La dirección en su red de la puerta de enlace debe ser conocida por cualquier estación que se quiera comunicar con internet u otra red.

Debido a este funcionamiento, podemos construir un número ilimitado de redes locales independientes conectadas a internet utilizando las mismas direcciones IP privadas. Dos redes independientes podrán usar las mismas direcciones IP privadas, ya que éstas no salen del ámbito de la red local a la que pertenecen. Lo único que debe ser diferente obligatoriamente es la IP pública mediante la cual accede cada una de las dos redes a Internet.

Por ejemplo, si estamos construyendo una red privada con un número de ordenadores no superior a 254 podemos utilizar una red con direcciones de clase C. Al primer ordenador le podemos asignar la dirección 192.168.23.1, al segundo 192.168.23.2 y así sucesivamente hasta la 192.168.23.254. Esas mismas direcciones, pueden ser utilizadas en otra red independiente a la anterior, aunque ambas estén conectadas a internet.

2.6.3 Direcciones IP especiales y reservadas No todas las direcciones comprendidas entre la 0.0.0.0 y la 223.255.255.255 son

válidas para un host, ya que algunas de ellas tienen significados especiales cuando se usan como destino. Las principales direcciones especiales se resumen en la siguiente tabla. Su significado depende del host desde el que se utilicen.

Identificador de red Identificador de hostSignificado cuando se usa como

destinoEjemplo

Todos 0 El propio host 0.0.0.0

Todos 0 HostHost indicado dentro de la

propia red0.0.0.10

Red Todos 0 Dirección de Red 192.168.1.0

Todos 1 Difusión en la propia red 255.255.255.255

Red Todos 1 Difusión a la red indicada 192.168.1.255

127Cualquier valor válido

de hostLoopback (el propio host) 127.0.0.1

Tabla 8. Direcciones IP especiales

Unidad 2. TCP/IP 28

Page 29: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

Difusión o broadcasting es el envío de un mensaje a todos los ordenadores que se encuentran en una red, sin atravesar los routers. La dirección de loopback (normalmente 127.0.0.1) se utiliza para comprobar que los protocolos TCP/IP están correctamente instalados en nuestro propio ordenador.

2.7 Máscara de subred y subnetting

El protocolo TCP/IP permite conectar redes privadas entre sí a través de un medio privado, es decir sin necesidad de direcciones IP públicas. También sería necesario colocar cada dos redes un router que en este caso contendría dos direcciones IP privadas, una de cada una de las redes que conecta. Como las dos direcciones del router son privadas y deben ser de dos redes diferentes, las direcciones IP de ambas redes no pueden tener el mismo identificador de red. Observando la tabla de rangos de direcciones IP privadas podemos comprobar que sólo podemos construir una red privada con direcciones IP de clase A, 16 redes privadas con direcciones de clase B, y 255 redes privadas con direcciones de clase C diferentes.

Este problema se hace mucho más grande cuando hablamos de direcciones públicas. En teoría, sólo se pueden construir 128 redes con direcciones de clase A, 16.384 con direcciones de clase B y 2.097.252 redes con direcciones de clase C. Teniendo en cuenta que cada conexión a Internet que suministra a un ISP constituye una red con direcciones públicas (formada normalmente sólo por un ordenador o router del clientes y el router del ISP en la centralita) son muy pocas posibilidades. Al conectar un simple ordenador a internet vía módem estaríamos en el mejor de los casos utilizando dos de las algo más de dos millones de redes con direcciones de clase C, cada una de las cuales puede tener 254 estaciones. Es decir, estamos desperdiciando 252 direcciones IP. Y eso en el mejor de los casos.

Para solucionar estos problemas existen las máscaras de subred. Una máscara de subred es una regla que usando nuestra dirección IP, nos indica si otra dirección IP pertenece a nuestra subred o no.

La siguiente tabla muestra las máscaras de subred por defecto correspondientes a cada clase:

Clase Máscara de subred

A 255.0.0.0

B 255.255.0.0

C 255.255.255.0

Si expresamos la máscara de subred de clase A en notación binaria, tenemos:11111111.00000000.00000000.00000000

Los unos indican los bits de la dirección correspondientes a la red y los ceros, los correspondientes al host. Según la máscara anterior, el primer byte (8 bits) es la red y los tres siguientes (24 bits), el host. Por ejemplo, la dirección de clase A 35.120.73.5

Unidad 2. TCP/IP 29

Page 30: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

pertenece a la red 35.0.0.0.Ahora veamos para la clase B. La máscara 255.255.0.0 en binario es

11111111.11111111.00000000.00000000De nuevo las posiciones que tienen un 1 indican que el correspondiente bit de la

dirección IP es parte del identificador de red mientras que las que tienen un 0 indican que dicho bit es parte del identificador de host.

De forma similar se podría hacer para la clase C, donde la máscara sería 255.255.255.0, que en binario es

11111111.11111111.11111111.00000000Supongamos una subred con máscara 255.255.0.0, en la que tenemos un ordenador

con dirección 148.120.33.110. Si expresamos esta dirección y la máscara de subred en binario, tenemos:

148.120.33.110 10010100.01111000.00100001.01101110 (dirección de una máquina)

255.255.0 .0 11111111.11111111.00000000.00000000 (máscara de subred)

148.120.0 .0 10010100.01111000.00000000.00000000 (dirección de su red)

<------RED------> <------HOST----->

Al hacer el producto binario (AND) de las de la dirección y la máscara (donde hay dos 1 en las mismas posiciones ponemos un 1 y en caso contrario, un 0) obtenemos la dirección de la red.

Si hacemos lo mismo con otro ordenador, por ejemplo el 148.120.33.89, obtenemos la misma dirección de red. Esto significa que ambas máquinas se encuentran en la misma red (la red 148.120.0.0).

148.120.33.89 10010100.01111000.00100001.01011001 (dirección de una máquina)

255.255.0 .0 11111111.11111111.00000000.00000000 (máscara de subred)

148.120.0 .0 10010100.01111000.00000000.00000000 (dirección de red)

<------RED------> <------HOST----->

En cambio, si tomamos la 148.115.89.3, observamos que no pertenece a la misma red que las anteriores.

148.115.89.3 10010100.01110011.01011001.00000011 (dirección de una máquina)

255.255.0 .0 11111111.11111111.00000000.00000000 (máscara de subred)

148.115.0 .0 10010100.01110011.00000000.00000000 (dirección de su red)

<------RED------> <------HOST----->

En una red de redes TCP/IP no puede haber hosts aislados: todos pertenecen a alguna red y todos tienen una dirección IP y una máscara de subred (si no se especifica se toma la máscara que corresponda a su clase). Mediante esta máscara un ordenador sabe si otro ordenador se encuentra en su misma subred o en otra distinta. Si pertenece a su misma subred, el mensaje se entregará directamente. En cambio, si los hosts están

Unidad 2. TCP/IP 30

Page 31: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

configurados en subredes distintas, el mensaje se enviará a la puerta de salida o router de la red del host origen. Este router pasará el mensaje al siguiente de la cadena de routers y así sucesivamente hasta que se alcance el de la red del host destino y se complete la entrega.

Las máscaras 255.0.0.0 (clase A), 255.255.0.0 (clase B) y 255.255.255.0 (clase C) suelen ser suficientes para la mayoría de las redes privadas. Sin embargo, las redes más pequeñas que podemos formar con estas máscaras son de 254 hosts y para el caso de direcciones públicas suponen un desperdicio de direcciones que, por otra parte, no abundan. Por esta razón suele ser habitual dividir las redes públicas de clase C, B y A en subredes más pequeñas. A continuación se muestran las posibles divisiones de una red de clase C. La división de una red en subredes se conoce como subnetting.

Máscara de subredÚltimo byte en Binario

Número de subredes

Nº de hosts por subred

Direcciones de subredes (x=a.b.c por ejemplo, 192.168.1)

255.255.255.0 00000000 1 254 x.0

255.255.255.128 10000000 2 126 x.0, x.128

255.255.255.192 11000000 4 62 x.0, x.64, x.128, x.192

255.255.255.224 11100000 8 30 x.0, x.32, x.64, x.96, x.128, ...

255.255.255.240 11110000 16 14 x.0, x.16, x.32, x.48, x.64, ...

255.255.255.248 11111000 32 6 x.0, x.8, x.16, x.24, x.32, x.40, ...

255.255.255.252 11111100 64 2 x.0, x.4, x.8, x.12, x.16, x.20, ...

255.255.255.254 11111110 128 0 ninguna posible

255.255.255.255 11111111 256 0 ninguna posible

Tabla 9. División de un IP pública para varias subredes independientes

Veamos un ejemplo. ¿Pertenecen las direcciones 193.126.1.100 y 193.126.1.200 con la máscara de subred 255.255.255.0 a la misma subred? Aunque ya debemos saber la respuesta, ya que se trata de la máscara de red estándar para la clase C, vamos a realizar el cálculo. Pasamos las direcciones a binario:

193.126. 1 .100 11000001.01111110.00000001.01100100 (dirección de máquina 1)

193.126. 1 .200 11000001.01111110.00000001.11001000 (dirección de máquina 2)

255.255.255. 0 11111111.11111111.11111111.00000000 (dir. de máscara de red)

<-----------RED----------> <-HOST->

Para que dos ordenadores pertenezcan a la misma red deben tener el mismo identificador de red. Las posiciones de la máscara de red ocupadas por 1 determinan las posiciones que corresponden al identificador de red. Así que para que ambas direcciones pertenezcan a la misma red deben coincidir en todos los bits en los que la máscara de red es 1. En este caso eso sucede, luego ambas direcciones pertenecen a la misma red.

¿Y con la máscara de red 255.255.255.128? Pongamos de nuevo las direcciones y la máscara en binario:

Unidad 2. TCP/IP 31

Page 32: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

193.126. 1 .100 11000001.01111110.00000001.01100100 (dir. de máquina 1)

193.126. 1 .200 11000001.01111110.00000001.11001000 (dir. de máquina 2)

255.255.255.128 11111111.11111111.11111111.10000000 (máscara de subred)

<------------RED-----------><HOST->

Ahora el identificador de red ocupa un bit más, el primero del último byte, marcado con un 1 en la máscara de red. Además, resulta que ese bit es diferente en las dos direcciones, luego el identificador de red es diferente, y por tanto no pertenecen a la misma red.

En realidad, cuando una estación quiere determinar si una dirección IP pertenece a su subred utiliza su propia máscara de subred. Con esto queremos indicar que, por ejemplo, a la hora de enviar un datagrama IP no se usa la máscara de subred de la dirección de destino, ya que entre otras cosas no se conoce.

Hagamos un último ejemplo teniendo en cuenta esto. El ordenador con dirección 193.126.1.100 con máscara 255.255.255.128 quiere enviar una datagrama a 193.126.1.120. Para ello primero debe determinar si está en su red, para si no lo está enviarlo a la puerta de enlace. Hacemos el mismo cálculo de siempre:

193.126. 1 .100 11000001.01111110.00000001.01100100 (dir. de máquina 1)

193.126. 1 .120 11000001.01111110.00000001.01111000 (dir. de máquina 2)

255.255.255.128 11111111.11111111.11111111.10000000 (máscara de subred máq. 1)

<------------RED-----------><HOST->

Efectivamente, todos los bits que están en posiciones con un 1 en la máscara de subred coinciden, luego la máquina uno termina concluyendo que la dos está en su subred y por tanto le envía el datagrama directamente, y no lo envía a la puerta de enlace.

La gran utilidad del subnetting es hacer más flexible el espacio de direcciones IP. Consultando la tabla podemos construir más redes más pequeñas usando el mismo espacio de direcciones. Por ejemplo, podemos utilizar la máscara 255.255.255.248 para crear 32 redes públicas diferentes con 6 direcciones de hosts válidas (la primera y última dirección de todas las redes se excluyen) donde antes sólo podíamos crear una red de clase C de hasta 254 hosts. Estas redes serán (partiendo de la dirección 193.126.1):

Dirección de red Comienzo Fin Difusión

193.126.1.0 193.126.1.1 193.126.1.6 193.126.1.7

193.126.1.8 193.126.1.9 193.126.1.14 193.126.1.15

193.126.1.16 193.126.1.17 193.126.1.22 193.126.1.23

... ... ... ...

193.126.1.248 193.126.1.249 193.126.1.254 193.126.1.255

Tabla 10. Subnetting de una red de clase C

Unidad 2. TCP/IP 32

Page 33: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

Las máscaras con bytes distintos a 0 o 255 también se pueden utilizar para particionar redes de clase A o de clase B, sin embargo no suele ser habitual. Por ejemplo, la máscara 255.255.192.0 dividiría una red de clase B en 4 subredes de hasta 16.382 hosts (2 elevado a 14, menos 2) cada una.

El uso de las máscaras de subred y el subnetting se ha extendido al CIDR (Claseless Interdomain-Domain Routing) y el supernetting.

CIDR establece dos cosas. La primera es que dejamos de usar las clases, y ya sólo usamos la máscara de subred. La segunda es que se establece una nueva notación para la máscara de subred. Ahora tras la dirección IP se coloca una barra ( / ) y el número de bits que se utilizan para el identificador de red (es decir, el número de unos que tiene la máscara en binario). Así, por ejemplo,

• 192.168.10.2 con máscara de subred 255.255.255.0 pasa a ser 192.168.10.2/24

• 192.168.10.2 con máscara de subred 255.255.255.128 pasa a ser 192.168.10.2/25

Máscara CIDR Máscara CIDR Máscara CIDN

255.225.0.0 /16 255.255.248.0 /21 255.255.255.192 /26

255.255.128.0 /17 255.255.252.0 /22 255.255.255.224 /27

255.255.192.0 /18 255.255.254.0 /23 255.255.255.240 /28

255.255.224.0 /19 255.255.255.0 /24 255.255.255.248 /29

255.255.240.0 /20 255.255.255.128 /25 255.255.255.252 /30

Tabla 11: Equivalencia máscaras y CIDR

El supernetting es una consecuencia directa del CIDR. Si ya no usamos las clases, nada nos impide usar las máscaras de subred para, en lugar de dividir una red en redes más pequeñas, unir dos redes en una red más grande sin más que, en vez de coger un bit más para el identificador de red, coger uno menos. Así, por ejemplo, las direcciones 192.168.1.1/23 y 192.168.1.2/23 pertenecen a la misma red.

2.8 Enrutamiento

A continuación veremos un ejemplo de interconexión de 3 redes. Cada host (ordenador, estación) tiene una dirección IP propia de su red, con su correspondiente máscara. Cada router, en cambio, tiene dos “adaptadores de red”, uno para cada una de las redes que conecta, y dos direcciones IP con sus máscaras, una para cada una de las redes que conecta. De esta manera el router “pertenece” a las dos redes, y puede encaminar paquetes de una a la otra.

Unidad 2. TCP/IP 33

Page 34: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

Host Dirección IP Red

A 192.168.0.10/24R1 192.168.0.1/24

Red 1 – 192.168.0.0/24

R1 10.10.0.1/16B 10.10.0.7/26

R2 10.10.0.2/16Red 2 – 10.10.0.0/16

R2 200.3.107.1/24C 200.3.107.73/24D 200.3.107.200/24

Red 3 – 200.3.107.0/24

Tabla 12. Esquema de red

El mecanismo fundamental para encaminar los datagramas IP por las redes son las tablas de enrutamiento. Cada estación y cada router tiene una tabla de enrutamiento, que contiene las reglas necesarias para que se decida qué hacer con cada datagrama que llegue a la correspondiente estación o router.

Una tabla de enrutamiento tiene una regla por cada fila. Para cada regla se definen los siguientes parámetros (columnas):

• Red de destino. Indica que esta regla se debe aplicar cuando el datagrama vaya a una estación de esa red.

• Máscara de red. Complementa a la dirección de red de destino dada anteriormente, para determinar hasta dónde llega el identificador de red y el de

Unidad 2. TCP/IP 34

Ilustración 11. Diagrama del esquema de red

Page 35: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

host.

• Siguiente. Indica dónde hay que enviar el datagrama para que siga su camino. Esta dirección siempre debe ser accesible por la estación o el router donde está definida la tabla de encaminamiento. En caso de tener que enviar ya directamente a la estación de destino porque está en la misma red, no se indica dirección, o se indica la propia de la estación o router donde está definida la tabla de encaminamiento.

• Saltos o métrica. Indica de alguna manera el tiempo (no necesariamente medido en segundos o milisegundos) que va a tardar el datagrama en llegar a la red de destino.

Puede existir una regla especial, llamada ruta por defecto, que tiene como red de destino la 0.0.0.0 con máscara 0.0.0.0. Esta regla se usa cuando el host de destino no corresponde a la red de destino de ninguna de las reglas establecidas.

En caso de que existan dos reglas que se puedan aplicar para un datagrama, se elegirá la que tenga una métrica menor.

La tabla de encaminamiento se puede construir de dos formas no excluyentes:

• De forma estática: un administrador configura las rutas editando la tabla

• De forma dinámica: el sistema crea la tabla en función de las configuraciones IP establecidas para los adaptadores de red que dispone.

Un tabla de encaminamiento puede tener una parte estática y una dinámica.

Veamos cómo sería la tabla de encaminamiento de la estación A

Red destino Máscara Siguiente Saltos

192.168.0.0 255.255.255.0 - 0

10.10.0.0 255.255.0.0 192.168.0.1 1

200.3.107.0 255.255.255.0 192.168.0.1 2

0.0.0.0 0.0.0.0 192.168.0.1 10

Hay una serie de cuestiones a observar:

• La primera regla es la que se aplica cuando el datagrama va a una estación de la propia red. Por lo tanto no se indica siguiente, aunque se podría haber indicado la propia dirección de la estación A.

• Todas las direcciones indicadas en siguiente son accesibles por la estación A, y todas corresponden a routers.

• Dado que la red donde está A sólo tiene una salida, las dos reglas intermedias las podíamos eliminar, puesto que se incluyen en la última. Quedaría así.

Red destino Máscara Siguiente Saltos

192.168.0.0 255.255.255.0 - 0

0.0.0.0 0.0.0.0 192.168.0.1 10

Unidad 2. TCP/IP 35

Page 36: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

Ahora vamos a ver la tabla de la estación B.

Red destino Máscara Siguiente Saltos

10.10.0.0 255.255.0.0 - 0

200.3.107.0 255.255.255.0 10.10.0.2 1

192.168.0.0 255.255.255.0 10.10.0.1 1

0.0.0.0 0.0.0.0 10.10.0.2 10

Aquí la única nueva consideración que tenemos que hacer es que hemos puesto la ruta por defecto hacía la red 3 (200.3.107.0), pero ha sido por una simple suposición.

Y por último, veamos las tablas de los routers. Primero para R1.

Red destino Máscara Siguiente Saltos

192.168.0.0 255.255.255.0 192.168.0.1 0

10.10.0.0 255.255.0.0 10.10.0.1 0

200.3.107.0 255.255.255.0 10.10.0.2 1

0.0.0.0 0.0.0.0 10.0.0.2 10

Y la de R2.

Red destino Máscara Siguiente Saltos

10.10.0.0 255.255.0.0 10.10.0.2 0

200.3.107.0 255.255.255.0 200.3.107.1 0

192.168.0.0 255.255.255.0 10.10.0.1 1

0.0.0.0 0.0.0.0 ? 10

Hemos puesto en la ruta por defecto ? Porque suponemos que habrá otro router para salir al resto de internet, pero desconocemos su IP en la red 3 (200.3.107.0)

Supongamos que el ordenador A (192.168.0.10) quiere enviar una datagrama al D (200.3.104.200). El proceso es el siguiente:

1. A mira su tabla de enrutamiento. Mirando la dirección de destino observa que tiene que aplicar la tercera regla, puesto que la estación de destino pertenece a la red 200.3.107.0. Si en vez de la primera miramos la segunda tabla que diseñamos, tendríamos que escoger la regla 0.0.0.0. El cualquiera de los dos casos, el datagrama se envía a 192.168.0.10.

2. El datagrama llega a R1. R1 mira su tabla de enrutamiento y la dirección de destino del datagrama (200.3.107.0). Decide aplicar la regla número 3, y por tanto envía el datagrama a 10.0.0.2, es decir R2.

3. El datagrama llega a R2. R2 mira su tabla de enrutamiento y la dirección de destino del datagrama (200.3.107.0). Decide aplicar la regla número 2, y por tanto envía el datagrama directamente a la estación de destino D.

Unidad 2. TCP/IP 36

Page 37: Unidad 2.TCP/IP - … · Servicios en Red– 2º SMR Unidad 2.TCP/IP Supongamos que se nos ocurre la peregrina idea de enviar “El Quijote” a un amigo, empleando palomas mensajeras.

Servicios en Red– 2º SMR

4. El datagrama llega a D.

Unidad 2. TCP/IP 37