LAN (Local Area Network). WAN (Wide Area Network). Protocolo. El modelo OSI. Arquitectura cliente-servidor.
La transmisión de información en Internet.
Copyright
(c) Roberto Gordo Saez, 1998. Se autoriza la reproducción de este documento en
totalidad o en parte siempre que se incluya la presente nota. Cualquier otro
uso del texto debe proporcionar una referencia al documento original y a
Roberto Gordo Saez como autor del mismo.
Introducción.
La
gran rapidez con la que Internet se ha expandido y popularizado en los últimos
años ha supuesto una revolución muy importante en el mundo de las
comunicaciones, llegando a causar cambios en muchos aspectos de la sociedad. Lo
que se conoce hoy como Internet es en realidad un conjunto de redes
independientes (de área local y área extensa) que se encuentran conectadas
entre sí, permitiendo el intercambio de datos y constituyendo por lo tanto una
red mundial que resulta el medio idóneo para el intercambio de información,
distribución de datos de todo tipo e interacción personal con otras personas.
Internet
tiene su origen en la red informática ARPAnet que comenzó a desarrollarse en
los Estados Unidos como un proyecto del DARPA (Defense Advanced Research
Projects Agency) sobre la década de los 60, aunque hasta el inicio de la
década de los 70 no comenzaron a crearse las primeras aplicaciones. A finales
de 1969 cuatro hosts fueron conectados en esta red inicial, la cual fue
creciendo rápidamente durante los años siguientes, pero fue a partir de 1972
cuando se comenzó a investigar la forma de que los paquetes de información
puedan moverse a través de varias redes de diferentes tipos y no necesariamente
compatibles. De esta manera se consiguen enlazar redes independientes
consiguiendo que puedan comunicarse de forma transparente los ordenadores de
todas ellas. Este proyecto recibió el nombre de "Internetting", y
para referirse al sistema de redes funcionando conjuntamente y formando una red
mayor se utilizó el nombre de "Internet".
La
red continuó extendiéndose por todo el país con gran rapidez, conectando a universidades
e instituciones de investigación y educación, organizaciones gubernamentales o
no gubernamentales, y redes privadas y comerciales. De esta manera continuó su
desarrollo durante los años 80 extendiéndose internacionalmente, pero ha sido
en los 90 cuando Internet se ha convertido en un nuevo y revolucionario medio
de comunicación a escala mundial. Los nuevos medios desarrollados para hacer el
acceso a Internet mucho más sencillo y agradable para cualquier usuario han
influido notablemente en esta expansión, convirtiendo a Internet en la gran red
mundial.
Conceptos básicos.
Una
red de ordenadores permite conectar a los ordenadores que la forman con la
finalidad de compartir información, como documentos o bases de datos, o
recursos físicos, como impresoras o unidades de disco. Las redes suelen
clasificarse según su extensión en:
·
LAN (Local Area Network): Son
las redes de área local. La extensión de este tipo de redes suele estar
restringida a una sala o edificio, aunque también podría utilizarse para
conectar dos o más edificios próximos.
- WAN (Wide Area
Network): Son redes que cubren un espacio muy amplio,
conectando a ordenadores de una cuidad o un país completo. Para ello se
utilizan las líneas de teléfono y otros medios de transmisión más sofisticados,
como pueden ser las microondas. La velocidad de transmisión suele ser
inferior que en las redes locales.
Varias redes pueden conectarse
entre sí formando una red lógica de área mayor. Para que la transmisión entre
todas ellas sea posible se emplean los routers, que son los sistemas que
conectando físicamente varias redes se encargan de dirigir la información por
el camino adecuado. Cuando las redes que se conectan son de diferente tipo y
con protocolos distintos se hace necesario el uso de los gateways, los
cuales además de encaminar la información también son capaces de convertir los
datos de un protocolo a otro. Generalmente los términos router y gateway
se emplean indistintamente para referirse de forma general a los sistemas
encargados del encaminamiento de datos en Internet.
Lo que se conoce como Internet
es en realidad una red de redes, la interconexión de otras redes independientes
de manera que puedan compartir información entre ellas a lo largo de todo el
planeta. Para ello es necesario el uso de un protocolo de comunicaciones común.
El protocolo que proporciona la compatibilidad necesaria para la comunicación
en Internet es el TCP/IP.
Los protocolos de
comunicaciones definen las normas que posibilitan que se establezca una
comunicación entre varios equipos o dispositivos, ya que estos equipos pueden
ser diferentes entre sí. Un interfaz, sin embargo, es el encargado de la
conexión física entre los equipos, definiendo las normas para las
características eléctricas y mecánicas de la conexión.
Exceptuando a los routers
cualquier ordenador conectado a Internet y, por tanto, capaz de compartir
información con otro ordenador se conoce con el nombre de host
(anfitrión). Un host debe identificarse de alguna manera que lo distinga
de los demás para poder recibir o enviar datos. Para ello todos los ordenadores
conectados a Internet disponen de una dirección única y exclusiva. Esta
dirección, conocida como dirección de Internet o dirección IP, es un número de
32 bit que generalmente se representa en cuatro grupos de 8 bit cada uno
separados por puntos y en base decimal (esto es así en la versión número 4 del
protocolo IP, pero no en la 6). Un ejemplo de dirección IP es el siguiente:
205.198.48.1.
El modelo OSI.
El modelo OSI (Open System
Interconection) es utilizado por prácticamente la totalidad de las redes del
mundo. Este modelo fue creado por el ISO (Organización Internacional de
Normalización), y consiste en siete niveles o capas donde cada una de ellas
define las funciones que deben proporcionar los protocolos con el propósito de
intercambiar información entre varios sistemas. Esta clasificación permite que
cada protocolo se desarrolle con una finalidad determinada, lo cual simplifica
el proceso de desarrollo e implementación. Cada nivel depende de los que están
por debajo de él, y a su vez proporciona alguna funcionalidad a los niveles
superiores. Los siete niveles del modelo OSI son los siguientes:
|
Aplicación
|
El nivel de aplicación
es el destino final de los datos donde se proporcionan los servicios al
usuario.
|
|
Presentación
|
Se convierten e
interpretan los datos que se utilizarán en el nivel de aplicación.
|
|
Sesión
|
Encargado de ciertos
aspectos de la comunicación como el control de los tiempos.
|
|
Transporte
|
Transporta la
información de una manera fiable para que llegue correctamente a su destino.
|
|
Red
|
Nivel encargado de
encaminar los datos hacia su destino eligiendo la ruta más efectiva.
|
|
Enlace
|
Enlace de datos.
Controla el flujo de los mismos, la sincronización y los errores que puedan
producirse.
|
|
Físico
|
Se encarga de los
aspectos físicos de la conexión, tales como el medio de transmisión o el
hardware.
|
Arquitectura cliente-servidor.
La arquitectura
cliente-servidor es una forma específica de diseño de aplicaciones, aunque
también se conoce con este nombre a los ordenadores en los que se estas
aplicaciones son ejecutadas. Por un lado, el cliente es el ordenador que se
encarga de efectuar una petición o solicitar un servicio. El cliente no posee
control sobre los recursos, sino que es el servidor el encargado de manejarlos.
Por otro lado, el ordenador remoto que actúa como servidor evalúa la petición
del cliente y decide aceptarla o rechazarla consecuentemente. Una vez que el
servidor acepta el pedido la información requerida es suministrada al cliente
que efectuó la petición, siendo este último el responsable de proporcionar los
datos al usuario con el formato adecuado. Finalmente debemos precisar que
cliente y servidor no tienen que estar necesariamente en ordenadores separados,
sino que pueden ser programas diferentes que se ejecuten en el mismo ordenador.
El protocolo TCP/IP.
TCP/IP es el protocolo común
utilizado por todos los ordenadores conectados a Internet, de manera que éstos
puedan comunicarse entre sí. Hay que tener en cuenta que en Internet se
encuentran conectados ordenadores de clases muy diferentes y con hardware
y software incompatibles en muchos casos, además de todos los medios y
formas posibles de conexión. Aquí se encuentra una de las grandes ventajas del
TCP/IP, pues este protocolo se encargará de que la comunicación entre todos sea
posible. TCP/IP es compatible con cualquier sistema operativo y con cualquier
tipo de hardware.
TCP/IP no es un único
protocolo, sino que es en realidad lo que se conoce con este nombre es un
conjunto de protocolos que cubren los distintos niveles del modelo OSI. Los dos
protocolos más importantes son el TCP (Transmission Control Protocol) y
el IP (Internet Protocol), que son los que dan nombre al conjunto. En
Internet se diferencian cuatro niveles o capas en las que se agrupan los
protocolos, y que se relacionan con los niveles OSI de la siguiente manera:
·
Aplicación: Se corresponde con los niveles
OSI de aplicación, presentación y sesión. Aquí se incluyen protocolos
destinados a proporcionar servicios, tales como correo electrónico (SMTP),
transferencia de ficheros (FTP), conexión remota (TELNET) y otros más recientes
como el protocolo HTTP (Hypertext Transfer Protocol).
- Transporte:
Coincide con el nivel de transporte del modelo OSI. Los protocolos de este
nivel, tales como TCP y UDP, se encargan de manejar los datos y
proporcionar la fiabilidad necesaria en el transporte de los mismos.
- Internet:
Es el nivel de red del modelo OSI. Incluye al protocolo IP, que se encarga
de enviar los paquetes de información a sus destinos correspondientes. Es
utilizado con esta finalidad por los protocolos del nivel de transporte.
- Enlace:
Los niveles OSI correspondientes son el de enlace y el nivel físico. Los
protocolos que pertenecen a este nivel son los encargados de la
transmisión a través del medio físico al que se encuentra conectado cada host,
como puede ser una línea punto a punto o una red Ethernet.
El TCP/IP necesita funcionar
sobre algún tipo de red o de medio físico que proporcione sus propios
protocolos para el nivel de enlace de Internet. Por este motivo hay que tener
en cuenta que los protocolos utilizados en este nivel pueden ser muy diversos y
no forman parte del conjunto TCP/IP. Sin embargo, esto no debe ser problemático
puesto que una de las funciones y ventajas principales del TCP/IP es
proporcionar una abstracción del medio de forma que sea posible el intercambio
de información entre medios diferentes y tecnologías que inicialmente son
incompatibles.
Para transmitir información a
través de TCP/IP, ésta debe ser dividida en unidades de menor tamaño. Esto
proporciona grandes ventajas en el manejo de los datos que se transfieren y,
por otro lado, esto es algo común en cualquier protocolo de comunicaciones. En
TCP/IP cada una de estas unidades de información recibe el nombre de
"datagrama" (datagram), y son conjuntos de datos que se
envían como mensajes independientes.
TCP (Transmission Control Protocol).
El protocolo de control de
transmisión (TCP) pertenece al nivel de transporte, siendo el encargado de
dividir el mensaje original en datagramas de menor tamaño, y por lo tanto,
mucho más manejables. Los datagramas serán dirigidos a través del protocolo IP
de forma individual. El protocolo TCP se encarga además de añadir cierta
información necesaria a cada uno de los datagramas. Esta información se añade
al inicio de los datos que componen el datagrama en forma de cabecera.
La cabecera de un datagrama
contiene al menos 160 bit que se encuentran repartidos en varios campos con
diferente significado. Cuando la información se divide en datagramas para ser
enviados, el orden en que éstos lleguen a su destino no tiene que ser el
correcto. Cada uno de ellos puede llegar en cualquier momento y con cualquier
orden, e incluso puede que algunos no lleguen a su destino o lleguen con
información errónea. Para evitar todos estos problemas el TCP numera los
datagramas antes de ser enviados, de manera que sea posible volver a unirlos en
el orden adecuado. Esto permite también solicitar de nuevo el envío de los
datagramas individuales que no hayan llegado o que contengan errores, sin que
sea necesario volver a enviar el mensaje completo.
|
Formato de la cabecera TCP.
|
|
Puerto origen
|
Puerto destino
|
|
Número de secuencia
|
|
Señales de confirmación
|
|
Tamaño
|
Reservado
|
Bits de control
|
Window
|
|
Checksum
|
Puntero a datos urgentes
|
|
|
|
|
|
A continuación de la cabecera
puede existir información opcional. En cualquier caso el tamaño de la cabecera
debe ser múltiplo de 32 bits, por lo que puede ser necesario añadir un campo de
tamaño variable y que contenga ceros al final para conseguir este objetivo
cuando se incluyen algunas opciones. El campo de tamaño contiene la longitud
total de la cabecera TCP expresada en el número de palabras de 32 bits que
ocupa. Esto permite determinar el lugar donde comienzan los datos.
Dos campos incluidos en la
cabecera y que son de especial importancia son los números de puerto de origen
y puerto de destino. Los puertos proporcionan una manera de distinguir entre
las distintas transferencias, ya que un mismo ordenador puede estar utilizando
varios servicios o transferencias simultáneamente, e incluso puede que por medio
de usuarios distintos. El puerto de origen contendrá un número cualquiera que
sirva para realizar esta distinción. Además, el programa cliente que realiza la
petición también se debe conocer el número de puerto en el que se encuentra el
servidor adecuado. Mientras que el programa del usuario utiliza números
prácticamente aleatorios, el servidor deber tener asignado un número estándar
para que pueda ser utilizado por el cliente. (Por ejemplo, en el caso de la
transferencia de ficheros FTP el número oficial es el 21). Cuando es el
servidor el que envía los datos, los números de puertos de origen y destino se
intercambian.
En la transmisión de datos a
través del protocolo TCP la fiabilidad es un factor muy importante. Para poder
detectar los errores y pérdida de información en los datagramas, es necesario
que el cliente envíe de nuevo al servidor unas señales de confirmación una vez
que se ha recibido y comprobado la información satisfactoriamente. Estas
señales se incluyen en el campo apropiado de la cabecera del datagrama (Acknowledgment
Number), que tiene un tamaño de 32 bit. Si el servidor no obtiene la señal
de confirmación adecuada transcurrido un período de tiempo razonable, el
datagrama completo se volverá a enviar. Por razones de eficiencia los datagramas
se envían continuamente sin esperar la confirmación, haciéndose necesaria la
numeración de los mismos para que puedan ser ensamblados en el orden correcto.
También puede ocurrir que la
información del datagrama llegue con errores a su destino. Para poder detectar
cuando sucede esto se incluye en la cabecera un campo de 16 bit, el cual
contiene un valor calculado a partir de la información del datagrama completo (checksum).
En el otro extremo el receptor vuelve a calcular este valor, comprobando que es
el mismo que el suministrado en la cabecera. Si el valor es distinto
significaría que el datagrama es incorrecto, ya que en la cabecera o en la
parte de datos del mismo hay algún error.
La forma en que TCP numera los
datagramas es contando los bytes de datos que contiene cada uno de ellos y
añadiendo esta información al campo correspondiente de la cabecera del
datagrama siguiente. De esta manera el primero empezará por cero, el segundo
contendrá un número que será igual al tamaño en bytes de la parte de datos del
datagrama anterior, el tercero con la suma de los dos anteriores, y así
sucesivamente. Por ejemplo, para un tamaño fijo de 500 bytes de datos en cada
datagrama, la numeración sería la siguiente: 0 para el primero, 500 para el
segundo, 1000 para el tercero, etc.
Existe otro factor más a tener
en cuenta durante la transmisión de información, y es la potencia y velocidad
con que cada uno de los ordenadores puede procesar los datos que le son
enviados. Si esto no se tuviera en cuenta, el ordenador de más potencia podría
enviar la información demasiado rápido al receptor, de manera que éste no pueda
procesarla. Este inconveniente se soluciona mediante un campo de 16 bit (Window)
en la cabecera TCP, en el cual se introduce un valor indicando la cantidad de información
que el receptor está preparado para procesar. Si el valor llega a cero será
necesario que el emisor se detenga. A medida que la información es procesada
este valor aumenta indicando disponibilidad para continuar la recepción de
datos.
Protocolos alternativos a TCP.
TCP es el protocolo más
utilizado para el nivel de transporte en Internet, pero además de éste existen
otros protocolos que pueden ser más convenientes en determinadas ocasiones. Tal
es el caso de UDP y ICMP.
UDP (User Datagram Protocol)
El protocolo de datagramas de usuario (UDP) puede
ser la alternativa al TCP en algunos casos en los que no sea necesario el gran
nivel de complejidad proporcionado por el TCP. Puesto que UDP no admite
numeración de los datagramas, éste protocolo se utiliza principalmente cuando
el orden en que se reciben los mismos no es un factor fundamental, o también
cuando se quiere enviar información de poco tamaño que cabe en un único
datagrama.
Cuando se utiliza UDP la garantía de que un paquete
llegue a su destino es mucho menor que con TCP debido a que no se utilizan las
señales de confirmación. Por todas estas características la cabecera del UDP es
bastante menor en tamaño que la de TCP. Esta simplificación resulta en una
mayor eficiencia en determinadas ocasiones.
Un ejemplo típico de una situación en la que se
utiliza el UDP es cuando se pretende conectar con un ordenador de la red,
utilizando para ello el nombre del sistema. Este nombre tendrá que ser
convertido a la dirección IP que le corresponde y, por tanto, tendrá que ser
enviado a algún servidor que posea la base de datos necesaria para efectuar la
conversión. En este caso es mucho más conveniente el uso de UDP.
ICMP (Internet Control Message Protocol)
El protocolo de mensajes de control de Internet
(ICMP) es de características similares al UDP, pero con un formato aún más
simple. Su utilidad no está en el transporte de datos "de usuario",
sino en los mensajes de error y de control necesarios para los sistemas de la
red.