|
Aprendiendo un poco del TCP/IP (parte II) |
|
|
|
Por Jose Manuel Tella Llop, extraído de microsoft.public.es.windows98
Recordando un poco la Parte 1 de este articulo, teoricamnete ya tenemos los conceptos y las definiciones como para poder hacer alguna cosilla, y sobre todo que la terminologia del TCP nos suene. OTROS CONCEPTOS QUE DEBEMOS CONOCER ----------------------------------- Host: debemos ser conscientes que en TCP/IP todas las maquinas son hosts. Desde nuestro humilde PC hasta el mainframe mas gigantesco que exista. Bien, sabemos ya lo que es una dirección IP. Pero existe otro concepto que muchas veces se maneja: un "puerto". Un "puerto" no es nada más que un sitio al donde podemos ir via TCP en nuestro PC. Es un numero de 2 bytes, por tanto puede ser desde el 0 al 65535. Pero para uqe vayamos a un puerto, y seamos capaces de hacer algo, "alguien" deberá estar en espera en ese puerto. El TCP instalado en nuestor PC, se reserva para sí, los puertos 0 a 1023, y en muchos de ellos, coloca a ese "alguien" en espera. (no es otra cosa que un programa que "escucha" en dicho puerto. Para que dos PCs hablen entre sí, hay que establecer un canal de comunicacion. Esto es lo que se llama un "SOCKET". Para establecer dicho canal (o dicho SOCKET), es necesario una dirección y puerto origen y una dirección y puerto destino. Es decir, esta combinacion de 2 direcciones y dos puertos es lo que se llama un socket. Evidentemente habá, un programa en nuestro PC que "escuche" y escriba en el purto de nuestro PC y otro programa en el destino que escuche y escriba en el otro puerto. Muchas veces para indicar una dirección /puerto, se separan por dos puntos. Supongo que como el mundo curioso, habreis estado por ciertas paginas de hackers o de crakers. Allí habreis visto ciertas direcciones del tipo: 123.23.43.66:2021 Esto, escribiendolo en un navegador de la forma: ftp://123.23.43.66:2021 Está solicitando que se abra un socket desde nuestro PC y puerto 21 al ordenador 123.23.43.66 puerto 2021 (el puerto 21 es el puerto "estandar" del ftp, y por tanto no es necesario especificarlo, pero en ese caso, la maquina destino, utiliza un puerto no estandar, el 2021 por ejemplo). Bien, una vez abierto el socket, en la otra maquina abrá un servidor de FTP que atenderá a las peticiones del navegador. El navegador, aunque nosotros no lo veamos, una vez establecido el sockect, lo que hará será dar un comando DIR en la maquina destino y nos mostrará el "directorio" que está ofreciendo el servidor. Realmente la sinstaxis completa del FTP es: ftp://usuario:password@dirección IP:puerto El usuario/password es obligado siempre en una comunicacion FTP (por definicion), lo que pasa es que el navegador es "listo" y normalmente sino está especificada, no envia como usuario "guest" (invitado). Y el servidor FTP, puede o nó, aceptar a dicho usuario.
CAPAS DE RED ------------ Una red tradicional nos dá: Cliente de Red y Servicios de RED. El CLiente de la red, es capaz de asignarse por ejemplo unidades de disco remotas, o utilizar una impresora remota directamente. El TCP/IP unicamente nos dá hasta nivel de transporte (al contrario de otros modelos de red, que nos dan hasta nivel de cliente). Es decir realmente, tenemos el IP (internet protocol), y sobre el, podemos tener 2 niveles diferenciados de transporte: a) TCP: Transport control Protocol b) UDP: Universal Data Packet. Ahora los veremos con detalle, pero antes pensemos como se envian y como se manejan los mensajes por internet. Un mensaje se trocea en pequeños mensajes, que lllevan en su cabecera la identidicacion del destino y su puerto y la identificacion del origen y su puerto. Igualmente llevan un numero de orden consecutivo. Internet funciona por la teoria de la "patata caliente". Si os dan una patata caliente, que quema, ¿que haceis?. Facil, o se la pasais a otra persona, o la tirais al suelo. Pues bien, un paquete IP, es lo mismo. Segun lo recibe una maquina en internet, o lo suelta a otra rapidamente o lo "tira". Además sino recibe un ACK (un OK) de la maquina a la que se lo ha pasado, además coge y se lo repite. Segun lo anterior, resulta que el mensaje que sale de nuestra maquina, se trocea y además esos trocitos, pueden llegar a la maquina destino, algunos duplicados, otros que faltas y además "desordenados". Y lo mas "gordo": funciona!!! Bien, lo que os he contado es el UDP. El UDP funciona a base de "datagramas", y el propio programa que haya abierto una comunicacion UDP, es el responsable de: coger todos los trocitos de mensaje, ignorar los repetidos y solicitar los que le faltan a la maquina origen. Fijaros que he dicho el "propio programa". Es decir esto no es responsabilidad del TCP/IP que tenemos instalado en la maquina, sino es responsabilidad del programa de aplicacion. (es decir, el programador tiene que ser el "avispadillo"). Y ahora el TCP. Este si que está soportado por el propio sistema operativo (o por la capa que nos suministra la red, realmente). Bajo TCP, ya tenemos garantizado el mensaje y el orden de los paquetes. Si alguno no se recibe o esta fuera de secuencia, el TCP se encarga de pedirlo. Por tanto, nuestro programa ya va a recibir siempre ordenados los mensajes, y además no va a recibir duplicados. Mas sencillo de programar. ** Fijaros, que ya estoy hablando de "programas". Es decir estoy asumiento que una por encima del TCP hay un programa, que NO nos da el sistema operativo. ¿que tipos de programas pueden ser? Facil: - Navegadores (puerto 80 del TCP) - Clientes o servidores FTP (puerto 21) - Telnet o emulador de terminal (puerto 24) - Etc...... 0 a 1023 reservados o definidos como "estandard". - 1024 en adelante: libre para programas de "usuario". Para las aplicaciones o programas que queramos hacer. Y que evidentemente harán lo que su creador quiera que hagan.... SERVIDORES Y SERVICIOS ---------------------- En los parrafos anteriores, hemos introducido el FTP. Es decir, nos hemos adelantado, hemos hablado de un "servicio" que puede estar o no ejecutandose en la otra maquina. Evidentemente para que haya un servicio abierto, es que hay un programa servidor de ese servicio, arrancado en la otra maquina. Y además husto en el parrafo anterior hemos hablado de "programas". ¿que tipos de programas pueden ser? Facil: - Navegadores (puerto 80 del TCP) - Clientes o servidores FTP (puerto 21) - Telnet o emulador de terminal (puerto 24) - Etc...... 0 a 1023 reservados o definidos como "estandard". - 1024 en adelante: libre para programas de "usuario". Para las aplicaciones o programas que queramos hacer. Y que evidentemente harán lo que su creador quiera que hagan.... PROGRAMAS O SERVICIOS SUMINISTRADOS CON WIN98 --------------------------------------------- Evidentemente son muy pobres. Pero son los que dá cualquier sistema operativo, o incluso más, ya que el resto de sistemas operativos no nos dan casi nada. El resto de programas, se deben "comprar" a terceros o incluso a la propia casa del sistema operativo. En Win98, tenemos: ** El Navegador (IE). ** Lector de News y Mail (OE) ** Un cliente FTP en ventana MsDOS ** En emulador de terminal (TELNET) tambien en ventana MsDOS
Y unas pequeñas utilidades como: "route", "winipcfg", "ipconfig", "netstat".. Esta ultima, el "netstat", es interesante. En cualquier momento nos dice los socket abiertos entre nuestra maquina y un puerto de nuestra maquina y una maquina ajena y su puerto. Recordad que programas peligrosos, tambien pueden estar involucrados. Este es el caso de BO (Back Orifice). Si queremos ver los socket abiertos en nuestro PC, o las posibles conexiones que estan "escuchando" en nuestro PC, debemos dar el comando: netstat -a Otra utilidad muy interesante en el "route". Recordad que en la primera parte del articulo, lo habiamos dadado como: route print y nos mostraba la tabla de rutas. Es conveniente ver la tabla de rutas en el segundo ejemplo de dicho articulo. Es decir cuando estamos conectados a internet via módem y además tenemos una tarjeta de red, que nos conecta a una intranet. Cajamos dicho Ejemplo y vamos a poner un problema: Supongamos que en nuestra Intranet, está en la red 169.254.x.x (direcciones directamente alcanzables desde nuestra tarjeta de red), y además tenemos otras direcciones, por ejemplo 169.100.x.x, conectadas fisicamente a nuestra red. Estas direcciones, en principio son inalcanzables, ya que si queremos llegar a ellas de alguna manera, El TCP se recorre nuestra tabla de rutas de abajo a arriba, no lo encuentra y entonces como en el ultimo nivel tiene 0.0.0.0 con el gateway, la dirección de nuestro módem , pues entonces intenta localizar las maquinas a las que queremos llegar en internet en vez de en nuestra intranet. Evidentemente no se puede. Pues bien, podemos proceder a modificar la tabla de rutas. Si dais route /?. el comando os explicará la sintaxis, en nuestro caso particular, lo que queremos es añadir la ruta 169.100.x.x a traves de nuestra tarjeta de red. Por tanto debemos dar el comando: route add 169.100.0.0 mask 255.255.0.0 169.254.1.15 Fijaros que acabo de poner como "gateway" a la dirección IP de mi trjeta "fisica" de red. Con esto cualquier peticion a dicho tramo de nuestra red, ya será alcanzable. Y ahora por fin, solucionemos en este caso un ultimo problema. Las maquinas en ese tramo, tienen un "nombre". Pero nosotros no podemos acceder por nombre debido a que nuestro DNS es nuestro proveedor de internet via módem , y este, no conoce las maquinas de nuestra intranet. Entonces, si tenemos una maquina llamada ZEUS, en la dirección 169.100.1.10, no podremos hacer por ejemplo: telnet ZEUS pero en cambio, si que nos funcionará: telnet 169.100.1.10 ¿como podemos resolverlo?. Facil tambien. Recordad que en el articulo anterior, habianos dicho que nuestro PC, para resolver el tenma de nombres, siempre bsca primero en el fichero "hosts" del direcotrio de Windows a ver si lo encuentra, y sino, se lo pide al DNS. Por tanto si nos creamos un fichero hosts, o si ya existiese, si le añadimos a él la linea (con el notepad, por ejemplo): 169.100.1.10 ZEUS ya podremos referirnos a ZEUS por su nombre. Nos lo encontrará. ********************************************* Bueno y estos dos articulillos, han intentado ser una pequeña introducción del TCP y de algunos conceptos que se manejan a menudo. Igualmente, espero que sirva para solucionar algun problemilla a aquellos que estan simultaneamente conectados a varias redes diferentes.
Volver a
Artículos y FAQs
|