<-- Capítulo

Índice del tutor de Delphi
© Copyright 1999
por David Martínez.

Todos los derechos reservados

Capítulo -->

Capitulo 10.1 Teoría Básica de Comunicaciones Internet

En este capítulo veremos cómo funciona el Internet, y las Intranets. No voy a profundizar mucho, ya que el internet es un área tan grande en la computación (se podrían escribir volúmenes enteros solamente acerca del Internet sin mencionar a Delphi ni una vez). Pero creo que es importante saber al menos algo acerca de esta "plataforma gigantesca" para la cual vamos a comenzar a escribir.

Comunicaciones en Red

Una red es un número indeterminado de computadoras que se comunican entre sí. Las computadoras se comenzaron a comunicar en 1969 y desde entonces ha habido una evolución gradual en el campo de las redes.

Protocolos

Cualquier medio de comunicación entre dos computadoras, desde el cable serial hasta el modem y el ethernet, debe de resolver varios problemas:

El primer problema es resuelto por el hardware. Una tarjeta de red o un modem puede enviar señales de un lugar a otro, preparar paquetes y traducirlos a bytes. El driver de su tarjeta de red es el software que traduce bytes a impulsos en el cable.

Pero los demás problemas son solucionados por una especificación llamada el protocolo de red. Con el correr de los años ha habido varios protocolos, que han tenido distintos grados de éxito.

En el ambiente de redes Novell, IPX/SPX fué un protocolo bastante famoso. Pero IPX tiene el problema de que los paquetes son demasiado grandes. Esto no causa ningún problema dentro de una oficina o una organización (un edificio), pero en una situación de ciudad a ciudad o país a país, IPX da problemas.

¿Porqué importa el tamaño del paquete? Recordemos que un cable por sí solo tiene un grave problema de confiabilidad. Entre más extendemos el cable, habrá mayor probabilidad de que algo (alguna condición física) interrumpirá el flujo de datos temporalmente. Esto ocurre más seguido de lo que uno pensaría, especialmente en paquetes grandes. Los protocolos están escritos de manera que, si hay algun error, normalmente el protocolo trata de enviar todo el paquete de nuevo unas cuantas veces. Esto quiere decir que entre más grande el paquete, más tardará el protocolo en enviar datos sobre redes poco confiables. Si usted ha usado redes Novell IPX y cable coaxial (cuya tecnología los hace muy sensibles a cambios en el ambiente), sabrá a lo que me refiero con "lentitud".

Alguna vez trabajé en una oficina que tenía redes IPX con cable coaxial. Para arruinar un cable coaxial, basta con pisarlo. Cuando esto ocurre, toda la red se hace extremadamente lenta. Esto es porque los paquetes deben pasar por esa parte del cable que ha sido arruinada, y los datos se pierden más seguido. Las computadoras no dan ningún error, pero nadie sabe porqué la red está lenta (hasta que va uno con aparatos para medir impedancia y nota que el cable "pisado" no funciona correctamente.
El cable coaxial es uno de los peores en cuanto a confiabilidad.

El protocolo TCP/IP

TCP/IP es un protocolo diseñado en el ambiente universitario, para lograr que las computadoras de distintas universidades pudieran comunicarse entre sí. Gracias al hecho de que fué diseñado con grandes distancias geográficas en mente, TCP/IP es un protocolo balanceado, con paquetes que no son demasiado grandes ni demasiado pequeños (el otro "pecado", ya que un paquete demasiado pequeño hace que la comunicación tenga una cantidad de elementos de "handshaking" demasiado grande con respecto a la información "real").

Cuando el TCP/IP comenzó a ser usado en máquinas Unix, la infraestructura básica del internet apareció. Una red TCP/IP es como la carretera por donde pasará la información.

Por este motivo, el Internet está completamente montado sobre el protocolo TCP/IP.

Puertos y Servicios

El protocolo TCP/IP tiene diferentes "puertos". Básicamente, el paquete de datos tiene dentro de sus metadatos el "número de puerto" donde deberá enviar los bytes a la computadora de destino. Una vez que la implementación TCP/IP en la computadora de destino recibe los bytes, lo primero que hace es revisar a qué puerto debe de asignarlo.

Esto se hace para que diferentes "temas" de conversación puedan ser utilizados al mismo tiempo. Estos temas de conversación normalmente son controlados por un "servicio", que es un programa residente en memoria que le dice a TCP/IP que todos los datos para el "puerto #x" deberán ser enviados a dicho programa. Los "clientes" de este servicio siempre especifican el puerto a donde enviarán sus datos.

Hay varios servicios estándar, que están especificados en el documento RFC #1700 (todo: Encontrar documento en el Web). Usted puede asignar cualquier servicio a cualquier puerto para sus propios propósitos, pero si usted no sigue los estándares, le será más dificil a los clientes hablar con usted.

Todos los servicios tienen algo en común: Redireccionan stdin y stdout para que provengan del protocolo TCP/IP.

A continuación veremos algunos de los puertos estándar junto con sus servicios. Note que esta es una lista muy limitada de los servicios más utilizados en el Internet, pero como veremos más adelante en la sección de programación de sockets, usted puede programar sus propios servicios y asignar sus propios puertos. Existen muchísimos servicios diferentes que han sido registrados como estándares para diferentes propósitos.

Cabe mencionar que, como Windows "llegó tarde" al internet, muchos de estos servicios son estándar o gratis bajo Unix, pero son programas comerciales (o a veces no existen) bajo Windows. Por otra parte, Windows es muy enfocado al cliente, y hay una gran variedad de programas cliente para casi todos los servicios estándar que corren en Windows.

Telnet (23)

Telnet es el servicio más simple de implementar en una máquina Unix. Unix siempre ha contado con el concepto de terminales de texto remotas, que fué la primera manera de compartir recursos en una computadora. Telnet simplemente crea una "Terminal Virtual", redireccionando stdin para que lea desde el protocolo TCP/IP puerto 25, y stdout/stderr para que escriban al mismo puerto. De esta manera, otras computadoras pueden usar un cliente de Telnet (que es simplemente un emulador de terminal que puede platicar con TCP/IP) para crear una sesión de usuario desde otra computadora.

Bajo Unix, telnet es un protocolo estándar (viene con el sistema operativo). Bajo Windows, este servicio es mucho más difícil de implementar, ya que aunque la línea de comando soporta stdin y stdout, la mayor parte de los programas (incluso programas de MS-DOS) escriben directamente a la memoria de video en vez de utilizar salida de caracteres. Casi todos los servidores telnet para Windows son comerciales.

SMTP (25) y POP (110)

SMTP y POP son los protocolos de correo electrónico para enviar y recibir correo, respectivamente. Bajo UNIX, uno de los servicios estándar son estos dos servicios de correo electrónico.

Windows normalmente no cuenta con este servicio, y los servicios de Microsoft para correo no funcionan del modo estándar ni en los mismos puertos. Los servicios de correo Windows que pueden comunicarse con estos puertos normalmente son comerciales.

FTP (20/21)

El servicio FTP es el servicio de transferencia de archivos. Básicamente, un cliente de FTP es un "mini-shell" que le permite ejecutar comandos que se convierten en peticiones específicas de archivos, ya sea en modo ASCII o binario. El puerto 21 se encarga del control (los comandos), mientras que el puerto 20 se encarga de enviar los datos.

Web o HTTP (80)

Todos sabemos lo que es el Web. En cuanto a implementación, el web o http se parece al FTP, pero solo utiliza un puerto (80). Con el protocolo web, los clientes envían comandos estilo "HTTP GET Directorio/Archivo.html" y la respuesta es un archivo de texto en estilo FTP. Una vez que el archivo ha "llegado", el cliente de web (por ejemplo, internet explorer) interpreta los metacomandos dentro del documento HTML y continúa ejecutando GETs para todos los gráficos y applets Java que la página contenga, formando la página mientras los lee. De esta manera vemos en nuestro cliente de Web que la página "aparece" poco a poco. Texto primero (porque el texto está dentro del html), gráficas después.

Finger

Finger es un servicio de directorio que corre en varias máquinas Unix. Finger puede leer la lista de usuario de la máquina en la que está ejecutando y dar información básica acerca de usuarios específicos. Por ejemplo, usted pide "finger david@dominio.com", y recibe de la computadora "dominio.com" lo siguiente:

Login: david                            Name: David Martinez
Directory: /home/david                  Shell: /bin/bash
On since Mon Sep 13 10:37 (PDT) on ttyp0 from Superman.martinezfamily
No mail.
Plan:
To keep writing my Delphi course at home, and finish my first full-blown 
Java project by summer of 2000.

Algunas máquinas privadas no corren servidores finger.

NNTP (119)

NNTP (Network News Transfer Protocol) es un servicio de grupos de discusión. Usted se conecta al servidor utilizando un cliente de News (como Collabra Discussions o Outlook express) y pide un grupo (como borland.public.delphi.objectpascal). A continuación verá todos los mensajes que otras personas han escrito al grupo. Es una especie de correo electrónico "público", o un pizarrón de anuncios gigantesco. Los newsgroups son muy útiles para intercambiar tips técnicos, hacer preguntas de programación y muchos otros temas.

IRC Chat (194)

IRC es como una fiesta gigantesca en vivo. En IRC, usted especifica el "chat room" al que se quiere unir, y una vez ahí todo lo que usted escribe es publicado en la pantalla de todas las otras personas que se han unido al "cuarto". El servicio de IRC también se puede conectar como "repetidor", lo cual da lugar a redes IRC gigantescas con miles y miles de cuartos.

IRC es como ir al centro de una ciudad tumultuosa a medianoche durante la fiesta de Independencia Nacional en su país. Hay toda clase de barrios/vecindarios y toda clase de gentes. Tenga precaución, procure no contestar a gente que no conozca y asegúrese de tener todos los "parches de seguridad" en su máquina por si las dudas.

Aún cuando doy muchas precauciones (y yo en lo personal no lo utilizo mucho), muchas gentes disfrutan mucho de este protocolo, y puede ser muy útil el hacer un servidor IRC privado para "juntas" y colaboración acerca de temas serios. Varias revistas y periódicos organizan "chats" con gente famosa, y todos utilizan el protocolo IRC, ya sea en un servidor IRC privado o en un "chat room" en una de las redes de servidores públicos.

Básicamente, así es como funciona el Internet. En los siguientes capítulos usted verá desde como hacer su propio servicio hasta como escribir clientes para varios servicios estándar utilizando componentes fáciles de usar.

Capítulo -->