Presentación inteligencia artificial en la actualidad
Hxc18
1. HACK X CRACK: T C P / I P - - H E R R A M I E N TA S B A S I C A S
P
P
A
A
S
S
O
O
P A S Oa
P A a
a
a
a
a
a
aa
a
a
a
a
a 3 SERVIDORES ON LINE PARA TUS PRACTICAS DE HACK
NUMERO 18
DESCUBRIMOS EL
POTENCIAL DEL XML
TCP / IP: UDP
PROTOCOLO DE DA AGRAMAS
TOCOLO DAT
DE USUARIO
LINUX
COMUNICACION
ENTRE PROCESOS
PASO DE VARIABLES
Nº 18 -- P.V.P. 4,5 EUROS
00018
8 414090 202756
LOS MEJORES ARTÍCULOS GRATIS EN NUESTRA WEB
P C PA S O A PA S O : C R E A N D O F O R M U L A R I O S C O N P H P ! ! !
4. EDITORIAL
el tiempo y las promesas
Grandes cambios se han sucedido en las últimas semanas
en este país. No, no me refiero al cambio de gobierno, eso
es lo de menos… lo importante son los cambios sociales,
esos que hacen de nosotros quienes realmente somos. 4 EDIT ORIAL
5 Cur so de PHP: Mane jo de F or mularios W eb
Hace tiempo, en el Foro de Hack x Crack se creó un hilo
11 XB O X (IV): Con vier t ela en un centr o multimedia
donde hablamos sobre el futuro de la humanidad. Unos,
pesimistas, argumentaban que el hombre acabaría 16 Pr ogramación bajo linux: Memoria com par tida
destruyendo su entorno y a sí mismos… otros, optimistas, 22 Cur so de T CP/IP (II) UDP
creían que en el ser humano sería lo suficientemente
40 Cur so XML: XSL
inteligente como para superar las adversidades de la
evolución. 50 La r ealidad de los vir us inf or máticos
Yo no conozco el futuro, ignoro lo que le depara el futuro
a la humanidad, pero SI SE QUE EL FONDO DEL SER
10 Ser vidor HXC : Modo de em pleo.
HUMANO ES BUENO.
21 Colabora con noso tr os.
¿Argumento? Muy simple, la realidad. En Marzo pude 38 Descarga nues tr os logos y melodias.
ver como unos hombres y mujeres que acababan de salvarse
38 Ganador SUSE LINUX
de la muerte, volvían al peligro para salvar a otros hombres
y mujeres que ni tan siquiera conocían. Y pude ver como 39 Suscripciones.
otros hombres y mujeres que podrían haberse quedado a 65 Númer os atrasados.
salvo en sus casas, optaron por enfrentarse al peligro para
ayudar a sus semejantes.
Tengo la certeza de que el hombre, en su interior más
profundo, es bueno. Eso me da esperanza y fuerzas para
seguir adelante, fuerza para creer que unos pocos jamás
podrán doblegar a la mayoría… y la mayoría es buena, la
mayoría somos héroes, la mayoría sacamos de nuestro
interior lo mejor que tenemos en los momentos más
difíciles.
No olvidemos nunca a quienes han dejado de vivir para
regalarnos la vida al resto.
GRACIAS...
5. Curso de PHP
Manejo de formularios web
- FORMULARIOS EN PHP: Trabajaremos con los datos.
- Enviaremos datos de una página a otra,
- Los recogeremos y finalmente los trataremos.
En la navegación web intervienen los Si nos fijamos, veremos que las variables no
siguientes elementos: poseen el símbolo $ delante. Esto se debe a
Un Cliente (Navegador Web) que en realidad este modo de pasar variables
Un Servidor Web es común a todos los lenguajes (ASP, PHP,
JSP,...)
Una Petición (Request)
Una Respuesta (Response)
Las variables las recibe la página destino del
enlace, y ya podemos trabajar directamente
En pocas palabras, un cliente (Navegador
con ellas; pero no siempre se definen
Web) realiza peticiones (Request) a un
automáticamente las variables recibidas por
Servidor Web que responde (Response) las
parámetro en las páginas Web, depende de
páginas web que están almacenadas en él.
una variable de configuración de PHP:
register_globals, que tiene que estar
Normalmente cuando se desarrollan páginas
activada para que así sea.
Web, es necesario que los datos recogidos
en un primer momento se “arrastren” entre
A continuación vamos a explicar esto en un
las diferentes páginas mientras nos sean
ejemplo. Tenemos dos páginas, registro1.php
necesarios.
y registro2.php, que siguen los pasos para
un registro simple de usuarios.
Un ejemplo muy claro de esto es un sistema
de registro de usuarios, todos nos hemos
<HTML>
registrado en algún portal o algún “site”, y
<HEAD>
para realizar el registro completo hay que
<TITLE>Registro Paso 1</TITLE>
realizarlo por pasos, donde cada paso es una
</HEAD>
página Web diferente y los datos obtenidos
<BODY>
en la primera página se deben mantener
<FORM NAME=”formRegistro1”>
hasta la finalización del registro.
<TABLE BORDER=”1”>
<TR>
Variables a través de la URL <TD>Nombre:</TD>
<TD><INPUT TYPE=”TEXT” NAME=”NOMBRE” VALUE=””></TD>
Para pasar las variables de una página PHP </TR>
a otra, lo podemos hacer introduciendo dicha <TR>
variable dentro del enlace hipertexto de la <TD>Apellidos:</TD>
página destino. <TD><INPUT TYPE=”TEXT” NAME=”APELLIDOS” VALUE=””></TD>
</TR>
La sintaxis sería la siguiente: <TR>
<TD>Email:</TD>
<a href="destino.php?var1=valor1&var2=valor2&...">enlace</a> <TD><INPUT TYPE=”TEXT” NAME=”EMAIL” VALUE=””></TD>
</TR>
PC PASO A PASO Nº 18 Página 5
6. Programación PHP - Programación PHP - Programación PHP - Programación PHP
</TABLE>
</FORM>
<A HREF="javascript:window.location.ref. = 'registro2.php?nombre='
+ document.formRegistro1.NOMBRE.value + '&apellidos=' +
document.formRegistro1.APELLIDOS.value + '&email=' +
document.formRegistro1.EMAIL.value">Enviar</A>
</BODY>
</HTML>
Si nos fijamos en la barra de dirección del
navegador de la imagen anterior, en la URL
de la página aparecen las variables junto al
valor que les hemos rellenado en el formulario.
$HTTP_GET_VARS
También es posible recopilar en una variable
tipo array el conjunto de variables que han
sido enviadas al script por este método a
partir de la variable de sistema
$HTTP_GET_VARS, que es un array asociativo.
<HTML>
<HEAD>
<TITLE>Registro Paso 2</TITLE>
</HEAD>
<BODY>
<HTML>
Usuario Registrado:
<HEAD>
<TABLE BORDER=”1”>
<TITLE>Registro Paso 2</TITLE>
<TR>
</HEAD>
<TD>Nombre:</TD>
<BODY>
<TD><? print($HTTP_GET_VARS["nombre"]);?></TD>
Usuario Registrado:
</TR>
<TABLE BORDER=”1”>
<TR>
<TR>
<TD>Apellidos:</TD>
<TD>Nombre:</TD>
<TD><? print($HTTP_GET_VARS["apellidos"]);?></TD>
<TD><?= $nombre;?></TD>
</TR>
</TR>
<TR>
<TR>
<TD>Email:</TD>
<TD>Apellidos:</TD>
<TD><? print($HTTP_GET_VARS["email"]);?></TD>
<TD><?= $apellidos;?></TD>
</TR>
</TR>
</TABLE>
<TR>
</BODY>
<TD>Email:</TD>
</HTML>
<TD><?= $email;?></TD>
</TR> Aunque podamos recoger variables que se
</TABLE> definen directamente en nuestra página,
</BODY> resulta más seguro utilizar $HTTP_GET_VARS
</HTML> por dos razones:
Página 6 PC PASO A PASO Nº 18
7. Programación PHP - Programación PHP - Programación PHP - Programación PHP
La primera es que así nos aseguramos que <TR>
esa variable viene realmente de la URL <TD>Nombre:</TD>
<TD><INPUT TYPE=”TEXT” NAME=”NOMBRE” VALUE=””></TD>
La segunda, que así nuestro código será
</TR>
más claro cuando lo volvamos a leer, porque
<TR>
quedará especificado que esa variable
<TD>Apellidos:</TD>
estamos recibiéndola por la URL.
<TD><INPUT TYPE=”TEXT” NAME=”APELLIDOS” VALUE=””></TD>
</TR>
$_GET <TR>
<TD>Email:</TD>
A partir de la versión 4.1.0 de PHP se ha <TD><INPUT TYPE=”TEXT” NAME=”EMAIL” VALUE=””></TD>
introducido el array asociativo $_GET, que </TR>
es idéntico a $HTTP_GET_VARS, aunque un <TR>
poco más corto de escribir. <TD COLSPAN=”2” ALIGN=”CENTER”>
<INPUT TYPE=”SUBMIT” NAME=”enviar” VALUE=”Enviar”>
Variables a través de Formularios </TD>
</TR>
El proceso es similar al explicado para las </TABLE>
URLs, pero en esta ocasión el envió de </FORM>
variables de una página PHP a otra no se </BODY>
realiza a través de la URL, si no enviándolas </HTML>
a través de un formulario.
Al igual que en las variables a través de la
URL, las variables que se procesan a través
del envío de formularios no siempre se definen
automáticamente, ello depende de una
va r i a b l e d e c o n f i g u ra c i ó n d e P H P :
register_globals, que tiene que estar
activada para conseguir que las variables se
definan automáticamente.
Para ver el funcionamiento del procesamiento
de variable a través de los formularios vamos
a realizar el mismo ejemplo que en el apartado
anterior.
Tenemos dos páginas, registro1.php y
registro2.php, que siguen los pasos para un
registro simple de usuarios.
<HTML> Como podemos ver, el código es exactamente
<HEAD> igual al del ejemplo de procesamiento de
<TITLE>Registro Paso 1</TITLE> variables a través de la URL, en lo único que
</HEAD> se diferencia es en la línea de definición del
<BODY> formulario:
<FORM NAME=”formRegistro1” ACTION=”registro2.php”
<FORM NAME=”formRegistro1” ACTION=”registro2.php” METHOD=”POST”
METHOD=”POST” >
>
<TABLE BORDER=”1”>
PC PASO A PASO Nº 18 Página 7
8. Programación PHP - Programación PHP - Programación PHP - Programación PHP
Si ejecutamos el código anterior no recibiremos
y en el botón que realiza el envío: las variables en registro2.php ¿porqué? PHP
distingue entre mayúsculas y minúsculas, es
<INPUT TYPE=”SUBMIT” NAME=”enviar” VALUE=”Enviar”> CASE-SENSITIVE, por lo que las variables
$nombre, $apellidos y $email son nuevas para
Vamos a prestar especial atención a la línea el y no tienen ningún valor.
en la que se define el formulario, ACTION
nos indica la página destino y METHOD, nos El siguiente código es el correcto:
indica el método (GET o POST) utilizado para
el envío del formulario. <HTML>
<HEAD>
Si METHOD es igual a GET las variables del <TITLE>Registro Paso 2</TITLE>
formulario se envían a través de la URL, y </HEAD>
si METHOD es igual a POST, el envío de <BODY>
variables no es visible a través de la URL. Usuario Registrado:
<TABLE BORDER=”1”>
¿Cuál es el mejor a utilizar? Pues esto
<TR>
dependerá del caso concreto en el que nos
<TD>Nombre:</TD>
encontremos, pero siempre queda mucho
<TD><?= $NOMBRE;?></TD>
más elegante y seguro que las variables no
</TR>
estén visibles en la URL. Además la longitud
<TR>
de cadena permitida en la URL es de 255,
<TD>Apellidos:</TD>
así que es aconsejable si se van a rellenar
<TD><?= $APELLIDOS;?></TD>
muchos datos que en METHOD utilizado sea
</TR>
POST.
<TR>
<TD>Email:</TD>
<HTML>
<TD><?= $EMAIL;?></TD>
<HEAD>
</TR>
<TITLE>Registro Paso 2</TITLE> </TABLE>
</HEAD> </BODY>
<BODY> </HTML>
Usuario Registrado:
<TABLE BORDER=”1”>
<TR>
<TD>Nombre:</TD>
<TD><?= $nombre;?></TD>
</TR>
<TR>
<TD>Apellidos:</TD>
<TD><?= $apellidos;?></TD>
</TR>
<TR>
<TD>Email:</TD>
<TD><?= $email;?></TD>
</TR> Como podemos observar en la imagen anterior,
</TABLE> las variables no están visibles en la URL de la
</BODY> página, pero esto cambiaría si el METHOD
</HTML> utilizado fuese GET.
Página 8 PC PASO A PASO Nº 18
9. Programación PHP - Programación PHP - Programación PHP - Programación PHP
$HTTP_POST_VARS de la URL y la segunda, que así nuestro
códigoserá más claro cuando lo volvamos a
También es posible recopilar en una variable leer, porque quedará especificado que esa
tipo array el conjunto de variables que han variable estamos recibiéndola por la URL
sido enviadas al script por este método a
partir de la variable de sistema $_POST
$HTTP_POST_VARS, que es un array
asociativo. A partir de PHP 4.1.0 se pueden recoger las
variables de formulario utilizando también el
La sintaxis es la siguiente: array asociativo $_POST, que es el mismo que
$HTTP_POST_VARS, pero más corto de escribir.
$HTTP_POST_VARS["nombre"]
En el próximo número…
Aunque podamos recoger variables que se
definen directamente en nuestra página, En el próximo número comenzaremos a
resulta más seguro utilizar $HTTP_POST_VARS programar sockets, programar socket nos
por dos razones, la primera que así nos permitirá hacer un emulador de Telnet, hacer
aseguramos que esa variable viene realmente un FTP, ... y todo gracias al PHP ;)
PC PASO A PASO Nº 18 Página 9
10. SERVIDOR DE HXC
MODO DE EMPLEO
- Hack x Crack ha habilitado tres
servidores para que puedas realizar las Explicamos esto porque la mayoría, seguro que piensa en
un Servidor Web como en algo extraño que no saben ni
prácticas de hacking. donde está ni como se accede. Bueno, pues ya sabes dónde
se encuentran la mayoría de IIS (en Inetpub) y cuál es
- Las IPs de los servidores de hacking las la página por defecto (Inetpubwwwrootdefault.htm). Y
encontrarás en EL FORO de la revista ahora, piensa un poco… … ¿Cuál es uno de los objetivos de
( w w w . h a c k x c r a c k . c o m ) . Una vez en el foro entra un hacker que quiere decirle al mundo que ha hackeado
en la zona COMUNICADOS DE HACK X CRACK (arriba del u n a We b ? P u e s e s t á c l a r o, e l o b j e t i vo e s c a m b i a r ( o s u s t i t u i r )
todo) y verás varios comunicados relacionados con los el archivo default.html por uno propio donde diga “hola,
servidores. No ponemos las IP aquí porque es bueno soy DIOS y he hackeado esta Web” (eso si es un lamer ;)
acostumbrarte a entrar en el foro y leer los comunicados.
Si hay alguna incidencia o cambio de IP o lo que sea, se A partir de ese momento, cualquiera que acceda a ese
comunicará en EL FORO. s e r v i d o r, v e r á e l d e f a u l t . h t m m o d i f i c a d o p a r a v e r g ü e n z a d e l
“site” hackeado. Esto es muy genérico pero os dará una
idea de cómo funciona esto de hackear Webs ;)
- Actualmente tienen el BUG del Code /
D e c o d e . La forma de “explotar” este bug la explicamos - Cuando accedas a nuestro servidor mediante el CODE /
extensamente en los números 2 y 3. Lo dejaremos así por DECODE BUG, crea un directorio con tu nombre (el que mas
un tiempo (bastante tiempo ;) Nuestra intención es ir te guste, no nos des tu DNI) en la unidad d: a ser
habilitando servidores a medida que os enseñemos distintos posible y a partir de ahora utiliza ese directorio para hacer
tipos de Hack. t u s p r á c t i c a s . Ya s a b e s , s u b i r n o s p r o g r a m i t a s y p r a c t i c a r
con ellos :) ... ... ¿cómo? ¿que no sabes crear directorios
- En los Servidores corre el Windows 2000 con el IIS
de Servidor Web. No hemos parcheado ningún bug, ni mediante el CODE/DECODE BUG... repasa los números 2 y
t a n s i q u i e ra e l R P C y p o r s u p u e s t o t a m p o c o h e m o s i n s t a l a d o tres de Hack x Crack ;p
n i n g ú n S e r v i c e Pa c k . Pa ra q u i e n p i e n s e q u e e s o e s u n e r r o r
(lógico si tenemos en cuenta que el RPC provoca una caída Puedes crearte tu directorio donde quieras, no es necesario
completa del sistema), solo decirte que AZIMUT ha que sea en d:mellamojuan. Tienes total libertad!!! Una
configurado un firewall desde cero que evita el bug del i d e a e s c r e a r l o , p o r e j e m p l o , e n
RPC, (bloqueo de los puertos 135 (tcp/udp), 137 (udp), d:xxxsystem32default10019901mellamojuan (ya irás
138 (udp), 445 (tcp), 593 (tcp)). La intención de todo esto aprendiendo que cuanto mas oculto mejor :)
es, precisamente, que puedas practicar tanto con el
CODE/DECODE como con cualquier otro “bug” que conozcas
(y hay cientos!!!). Poco a poco iremos cambiando la Es posiblemente la primera vez que tienes la oportunidad
c o n f i g u ra c i ó n e n f u n c i ó n d e l a e x p e r i e n c i a , l a i d e a e s t e n e r de investigar en un servidor como este sin cometer un delito
los Servidores lo menos parcheados posibles pero (nosotros te dejamos y por lo tanto nadie te perseguirá).
mantenerlos operativos las 24 horas del día. Por todo ello Aprovecha la oportunidad!!! e investiga mientras dure esta
y debido a posibles cambios de configuración, no olvides iniciativa (esperemos que muchos años).
visitar el foro (Zona Comunicados) antes de “penetrar” en
nuestros servidores. - En este momento tenemos mas de 600 carpetas de peña
que, como tu, está practicando. Así que haznos caso y crea
- Cada Servidor tiene dos unidades (discos duros duros): t u p r o p i a c a r p e t a d o n d e t r a b a j a r.
* La unidad c: --> Con 40GB y Raíz del Sistema
* La unidad d: --> Con 40GB
* La unidad e: --> CD-ROM
N o t a : R a í z d e l S e r v i d o r, s i g n i f i c a q u e e l W i n d o w s A d va n c e d
!
Server está instalado en esa unidad (la unidad c:) y
concretamente en el
Por lo tanto, la raíz
directorio por defecto winnt
del sistema está en c:winnt
MUY IMPORTANTE...
- E l I I S , I n t e r n e t I n f o r m a t i o n S e r v e r, e s e l S e r v i d o r d e
páginas Web y tiene su raíz en c:inetpub (el directorio
por defecto)
MUY IMPORTANTE!!!!! Por favor, no borres archivos
Nota: Para quien nunca ha tenido instalado el IIS, le será del Servidor si no sabes exactamente lo que estás haciendo ni
e x t ra ñ o t a n t o e l n o m b r e d e e s t a c a r p e t a ( c : i n e t p u b ) c o m o
s u c o n t e n i d o . Pe r o b u e n o , u n d í a d e e s t o s o s e n s e ñ a r e m o s borres las carpetas de los demás usuarios. Si haces eso, lo único
a i n s t a l a r v u e s t r o p r o p i o S e r v i d o r We b ( I I S ) y d e t a l l a r e m o s
su funcionamiento. que consigues es que tengamos que reparar el sistema servidor
De momento, lo único que hay que saber es que cuando y, mientras tanto, ni tu ni nadie puede disfrutar de él :(
T Ú p o n g a s n u e s t ra I P ( l a I P d e u n o d e n u e s t r o s s e r v i d o r e s )
en tu navegador (el Internet explorer por ejemplo), lo que Es una tontería intentar “romper” el Servidor, lo hemos puesto
estás haciendo realmente es ir al directorio
c : I n e t p u b w w w r o o t y l e e r u n a r c h i vo l l a m a d o d e fa u l t . h t m . para que disfrute todo el mundo sin correr riesgos, para que todo
Nota: Como curiosidad, te diremos que APACHE es otro el mundo pueda crearse su carpeta y practicar nuestros ejercicios.
S e r v i d o r d e p á g i n a s We b ( s e g u r o q u e h a s o í d o h a b l a r d e
él). Si tuviésemos instalado el apache, cuando pusieses En el Servidor no hay ni Warez, ni Programas, ni claves, ni nada
n u e s t r a I P e n T U n a v e g a d o r, a c c e d e r í a s a u n d i r e c t o r i o de nada que “robar”, es un servidor limpio para TI, por lo tanto
raíz del Apache (donde se hubiese instalado) e intentarías
leer una página llamada index.html ... pero... ¿qué te cuídalo un poquito y montaremos muchos más :)
estoy contando?... si has seguido nuestra revista ya
dominas de sobras el APACHE ;)
11. Serie Xbox Life (IV)
Convirtiendo nuestra Xbox en un
centro Multimedia.
- ¿Podemos ver películas en DivX con la XBOX?
- ¿Y escuchar musica en formato MP3?
- ¿Y visualizar fotos?
Aquí estamos un mes más, antes de todo Pues muy sencillo, dependiendo del lector que
quiero agradecer a los que apoyan esta serie, tengamos, podremos usar CD´s, CD-RW, DVD
es muy grato ver recompensado el esfuerzo. y determinadas marcas de cada uno de éstos.
GRACIAS.
Samsung:
Este mes vamos a descubrir los distintos Este lector es el
lectores DVD que tiene la consola Xbox y mejor, lee lo que
vamos a instalar y configurar unos programas le metas, tanto
que nos permitan ver películas DivX, escuchar CD´s como
MP3, ver fotos, incluso ahorrarnos el tener D V D ´ s y
que comprar el Kit DVD para ver las películas prácticamente de
en este formato. cualquier marca.
En la imagen de
Como es de costumbre en esta serie, os voy arriba podéis ver
a detallar lo que necesitamos para hacer todas cómo es la
estas cosas. bandeja de este
lector, así podréis
Lo que necesitamos: saber qué lector
Xbox con mod chip. lleva vuestra
Evox instalado en nuestra consola consola sin
Media Center (la versión más reciente) necesidad de
abrirla.
DVDX2.
ZXBTOOLS (Ultima versión).
Philips:
Pc Preparado.
Este lector es el
segundo si los
Todos los programas los podréis encontrar en
ordenamos de
la Web de la revista (www.hackxcrack.com).
mejor a peor. Lee
algunos CD´s y
Los DVD de XBOX: DVD´s de
m a r c a s
Algunos de vosotros sabréis ya que hay 3 conocidas,
fabricantes distintos de lectores para esta siempre y cuando
consola, para quien no lo sepa, las marcas se calibre la lente
son Samsung, Thompson y Philips. para que los lea,
ya que el láser encargado de leer los CD´s
Os podéis estar preguntando, ¿para qué os está tan bajo de potencia que no es capaz de
cuento esto? leerlos.
PC PASO A PASO Nº 18 Página 11
12. Programación PHP - Programación PHP - Programación PHP - Programación PHP
El calibrar la lente lleva sus riesgos, ya que consola para manejaros por los menús, pero os habréis
ahorrado 30€.
le acortas la vida y en muchos casos, si se
hace mal, puede dejar de funcionar. Instalando y Configurando El Xbox Media
Center:
Thompson:
Lo descargamos de la web, lo descomprimimos en una
Este podríamos
carpeta y veremos esto:
decir que es el
peor, ya que no
lee CD´s, solo
CD-RW y de
lagunas marcas
como VERBATIM.
Con los DVD
también tenemos
el mismo
problema y lo más aconsejable es usar los
de marca PRIMCO.
Nos metemos en la carpeta “xbmc-2004-01-02” y veremos
Instalando DVDX2: esto:
Nos lo descargamos de la Web y lo
descomprimimos en una carpeta del pc.
Veremos dos archivos: el dvdx_v2.0.iso y
dvdx2.txt.
El txt lo podemos borrar, sólo trae información
de quien lo creó.
Extraemos dvdx_v2.0.iso con el ZXBTOOLS
(como os enseñé el mes pasado) y tendremos
una carpeta llamada “Media” y un archivo Editamos con el bloc de notas el archivo “XboxMediaCenter.xml”.
llamado “default.xbe”. Aquí os digo os enseño cómo he configurado el archivo,
lo configuramos a nuestro gusto (lo que está en negrita
Ahora tenemos que pasar la carpeta y el es la explicación):
archivo al HD de la consola. Si tenéis
configurado el evox como expliqué <xboxmediacenter>
anteriormente, copiáis todo a la carpeta MP
que creamos en el artículo de Evolution X. Si #Skin que cargará al iniciar el programa, lo dejamos
no fuera así, lo copiáis a la carpeta que como está!#
corresponda.
<skin>MediaCenter</skin>
La transferencia la hacemos por FTP. Copiamos
todo, reiniciamos la consola y lo veremos en #Dirección IP, Máscara subred, Puerta de enlace por
el apartado donde los hayáis copiado (en mi defecto, Nombre del server (Dejad en blanco si
caso Media Players). queréis usar los valores del Evolution X) !#
Nos preparamos unas palomitas, arrancamos <ipadres>-</ipadres>
el DVDX2, metemos la película y a disfrutar. <netmask>-</netmask>
Con esto tendréis que usar el mando de la <defaultgateway>-</defaultgateway>
Página 12 PC PASO A PASO Nº 18
13. Programación PHP - Programación PHP - Programación PHP - Programación PHP
<nameserver>192.168.0.1</nameserver> #Ruta donde guarda el contenido destinado a la
<CDDBIpAdres>194.97.4.18</CDDBIpAdres> memoria caché de los álbumes de fotos (lo dejamos
<CDDBEnabled>yes</CDDBEnabled> como está) !#
#Determina las unidades del hd de la consola que <albums>$HOMEalbums</albums>
se puede usar !#
#Lo dejemos como esta, son los valores del mando !#
<useFDrive>yes</useFDrive>
<useGDrive>no</useGDrive> <delays>
<remote>
#Valores del servidor proxy!#
<move>220</move>
<httpproxy>-</httpproxy> <repeat>300</repeat>
<httpproxyport>-</httpproxyport> </remote>
#Servidor remoto que nos dará la fecha y hora!# <controller>
<move>220</move>
<timeserver>207.46.248.43</timeserver> <repeat>220</repeat>
</controller>
#El dashboard que arrancará al salir!# </delays>
<dashboard>C:evoxdash.xbe</dashboard> # Aquí podemos especificar los iconos que se
mostrarán en cada apartado !#
#Directorios alternativos para los subtítulos de las
#Para los archivos !#
películas, no os olvidéis de crear esta carpeta !#
<subtitles>$HOMEsubtitles</subtitles> <filetypeicons>
<xbe>defaultProgram.png</xbe>
#Lo dejamos como está !# </filetypeicons>
<startwindow>0</startwindow>
#Esta es la configuración base del menú, es decir
#Extensiones de las fots, Videos y Sonidos que lo que vamos a ver en el programa, en cada sección.
queremos que acepte. Si falta alguna, agregadla!# Podemos agregar o quitar la que queramos, en name
ponemos el nombre que queramos y en path ponemos
<pictureextensions>.png|.jpg|.jpeg|.bmp|.gif|.ico|.tif|.ti
la ruta a la carpeta, por ejemplo, he quitado el acceso
ff|.tga|.pcx</pictureextensions>
a c: y os aconsejo que hagáis lo mismo.!#
<musicextensions>.m4a|.flac|.ac3|.aac|.nfo|.pls|.rm|.
mpa|.wav|.wma|.ogg|.mp3|.mp2|.m3u</musicextensions> #Configuración para Mis programas#
<videoextensions>.nfo|.rm|.m3u|.ifo|.mov|.qt|.divx|.xv
id|.bivx|.vob|.pva|.wmv|.asf|.asx|.ogm|.m2v|.avi|.bin|. <myprograms>
dat|.mpg|.mpeg|.mkv|.avc|.vp3|.svq3|.nuv|.viv|.dv|.fli <bookmark>
</videoextensions> <name>Programas en E:</name>
<path>E:apps</path>
<!-- path where xbmc should store its thumbnails !#
</bookmark>
<thumbnails>$HOMEthumbs</thumbnails> <bookmark>
<name> Programas en F:</name>
#Directorio donde almacenará los atajos (lo dejamos <path>F:apps</path>
como está !# </bookmark>
<bookmark>
<shortcuts>$HOMEshortcuts</shortcuts>
<name>Programas en DVD </name>
#Ruta donde guarda el contenido destinado a la <path>D:</path>
memoria caché (lo dejamos como está) !# </bookmark>
</myprograms>
<imdb>$HOMEimdb</imdb>
PC PASO A PASO Nº 18 Página 13
14. Programación PHP - Programación PHP - Programación PHP - Programación PHP
#Configuración para las fotos !# #Mis archivos !#
<pictures> #Más de lo mismo, venga, a configurar !#
<default></default>
<bookmark> <files>
<name>Fotos E </name> <bookmark>
<path>E:fotos</path> <name>E :</name>
</bookmark> <path>E:</path>
<bookmark>
</bookmark>
<name>Fotos F:</name>
<bookmark>
<path>F:fotos</path>
<name>F: drive</name>
</bookmark>
<path>F:</path>
<bookmark>
<name>Fotos en DVD</name> </bookmark>
<path>D:</path> <bookmark>
</bookmark> <name>DVD</name>
<path>D:</path>
#Ahora llega lo interesante, estos apartado son para </bookmark>
hacer stemig o lo que es lo mismo, pillar los archivos <bookmark>
en este caso las fotos del PC, por medio del cable <name>SMB</name>
RJ-45, y aquí se pueden definir los valores. Podéis <path>smb://192.168.0.1/archivos/</path>
quitar los que no uséis; yo solo uso el SMB, que más </bookmark>
adelante os explicaré cómo se configura. A partir de
</files>
aquí quitaré los demás !#
<bookmark>
# Mi música !#
<name>XNS</name>
<path>xns://192.168.0.1:1400/</path>
<music>
</bookmark>
<default></default>
<bookmark>
<bookmark>
<name>XBMS</name>
<path>xbms://192.168.0.1:1400/</path> <name>Musica E: </name>
</bookmark> <path>E:MP3</path>
</bookmark>
#Aquí está la configuración del strem por SMB, <bookmark>
dependiendo de cómo hayáis compartido la carpeta <name>Musica F:</name>
en el pc, se configura de una manara o de otra!# <path>F:MP3</path>
</bookmark>
<bookmark> <bookmark>
<name>SMB</name> <name>MP3 DVD</name>
<path>D:</path>
#Este es un ejemplo
</bookmark>
smb://dominio;Usuario:contraseña@servidor/carp
<bookmark>
eta compartida !#
<name>SMB</name>
#Así tengo configurado el mío !#
<path>smb://192.168.0.1/mp3/</path>
</bookmark>
<path>smb://192.168.0.1/fotos/</path>
</music>
</bookmark>
</pictures>
Página 14 PC PASO A PASO Nº 18
15. Programación PHP - Programación PHP - Programación PHP - Programación PHP
#Mis videos !# Pinchamos en la pestaña compartir,
seleccionamos la casilla “Compartir esta carpeta
<video> en la red”, cambiamos el nombre si ya esta
<default></default> ocupado y aceptamos.
<bookmark>
Esto lo hacemos con todas las carpetas que
<name>Viedos E:</name>
hemos puesto en los apartados de SMB.
<path>E:videos</path>
</bookmark>
Pues ya está todo. Pasamos todo lo que hay
<bookmark>
en esta carpeta a su carpeta correspondiente
<name>Videos F:</name> del HD de la consola, lo arrancamos y a
<path>F:videos</path> disfrutar.
</bookmark>
<bookmark> Con un poco de investigación os haréis con el
<name>Videos DVD</name> control de todo, es muy sencillo e intuitivo.
<path>D:</path>
</bookmark> El mes que viene jugaremos online GRATIS.
<name>SMB</name> Hasta entonces.
<path>smb://192.168.0.1/videos/</path> </bookmark>
Salu2.
</video>
</xboxmediacenter>
Ya se ha acabado la configuración, así que guardamos los
cambios, y salimos del bloc de notas.
Ahora tenemos que compartir las carpetas en nuestro PC
para que a través de la red podamos cargar películas o
escuchar
música.
En Windows XP se haría de la siguiente manera:
Abrimos el explorador
de Windows, nos
situamos encima de
la carpeta que
queremos compartir,
por ejemplo el de
videos, pinchamos
con el botón derecho
sobre la carpeta y
pinchamos en
propiedades:
PC PASO A PASO Nº 18 Página 15
16. ProgramaciOn en GNU/LiNUX
Memoria Compartida
el_chaman. Luis U. Rodríguez Paniagua
- Intercambio de datos entre procesos - pipes
- Memoria compartida - sockets
- Colas de mensajes
1. Presentación 2.1. Solicitud de memoria
compartida
En el presente artículo veremos como es
posible intercambiar datos entre dos procesos. La primera operación que debemos aprender
Dispondremos de tres mecanismos básicos: es la necesaria para solicitar una zona de
Memoria compartida, colas de mensajes y memoria compartida. La manera de hacer
esto es mediante la función:
empleo de pipes y sockets. Analizaremos en
el presente artículo las dos primeras formas. #include <sys/types.h>
#include <sys/ipc.h>
2. Memoria compartida. #include <sys/shm.h>
int shmget(key_t key, int size, int shmflg);
Este será el método más rápido de comunicar
dos procesos entre sí. Consiste en hacer que Retorna: -1 en caso de error, o el identificador
dos procesos compartan una zona común de de la zona de memoria compartida en otro
memoria de manera que los dos procesos caso.
podrán leer y escribir en dicha zona de shmget reserva una zona de memoria de
memoria. tamaño size bytes devolviendo un identificador
que nos permitirá manejar dicha zona de
Esto, que en teoría es sencillo de entender,
memoria. El objetivo de key es similar al visto
a la hora de llevarlo a la práctica se complica
en la llamada de semáforos semget (es decir,
un poco. Cada vez que ejecutamos un proceso, pasar una clave única que servirá en nuestro
este tiene asociada una parte de la memoria caso para identificar de manera única la zona
exclusivamente para él. Ahí será donde guarde de memoria asociada a nuestro proceso).
sus datos ( va r i a b l e s , pila, etc...).
En cuanto a shmflag será una máscara de bits
Si en alguna ocasión este proceso intenta que indicarán el modo de adquisición del
acceder a una zona de memoria a la que no identificador devuelto por shmget:
tiene acceso u otro proceso intenta acceder
Si el bit IPC_CREAT está activo, la zona
a la memoria reservada para este proceso, compartida de memoria se creará a no ser
se estará produciendo una violación de que haya sido creada por otros procesos.
segmenteto con lo cual el programa fallará.
Si los bits IPC_CREAT e IPC_EXCL están
El encargado de controlar esto es el S.O., y activos simultáneamente, la llamada a shmget
afortunadamente en nuestro caso, este falla en caso de que la memoria compartida
dispone de la interfaz adecuada que nos hubiese sido reservada previamente.
permitirá crear zonas de memoria especiales
Además de estos valores podremos indicar
que podrán ser compartidas entre varios
los permisos: 0400 (lectura para el usuario),
procesos.
0200 (modificación para el usuario), 0060
Página 16 PC PASO A PASO Nº 18
17. Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux
(permiso de lectura y modificación para el struct shmid_ds {
struct ipc_perm shm_perm; /* Estructura de permisos */
grupo) y 0006 (permiso de lectura y int shm_segsz; /* Tamaño del área de memoria (bytes) */
time_t shm_atime; /* last attach time */
modificación para el resto de los usuarios).
time_t shm_dtime; /* last detach time */
time_t shm_ctime; /* last change time */
Para crear una zona de memoria compartida unsigned short shm_cpid; /* pid of creator */
de 1KByte (1024 bytes) con permisos de unsigned short shm_lpid; /* pid of last operator */
short shm_nattch; /* no. of current attaches */
e s c r i t u ra l e c t u ra s ó l o p a ra u s u a r i o ...
teclearíamos: };
int shmid; struct ipc_perm {
... key_t key;
ushort uid; /* owner euid and egid */
if (( shmid = shmget(IPC_PRIVATE, 1024, IPC_CREAT | 0600 )) == -1) ushort gid;
{ ushort cuid; /* creator euid and egid */
ushort cgid;
fprintf(stderr, " ERROR al reservar memoria compartidan"); ushort mode; /* lower 9 bits of access modes */
} ushort seq; /* sequence number */
};
....
2.2. Control de memoria IPC_SET Inicializa algunos de los campos
compartida de la estructura de control de la memoria
compartida. El valor de estos campos se
Una vez que hemos reservado una zona de toma de la estructura referenciada por *buf.
memoria compartida, podemos realizar
IPC_RMID Elimina la zona de memoria
diversas operaciones de control sobre dicha asociada al identificador shmid. Si esta zona
zona con el fin de establecer distintos atributos de memoria compartida está siendo usada
de la misma. Estas operaciones de control por varios procesos, no se elimina hasta
las realizará la función shmctl. que todos los procesos liberen esta zona de
memoria compartida.
La declaración de esta función es:
#include <sys/types.h> SHM_LOCK Bloquea en memoria el
segmento identificado por shmid impidiendo
#include <sys/ipc.h>
el intercambio sobre él. Esta operación sólo
#include <sys/shm.h>
puede ser realizada por el superusuario.
int shmctl(int shmid, int cmd, struct shmid_ds *buf);
SHM_UNLOCK. Desbloquea en memoria el
Retorna 0 en caso de éxito y -1 en caso de segmento identificado por shmid. Esta
error. operación sólo la puede realizar el
superusuario.
shmid es el identificador de memoria
compartida sobre el que vamos a operar. 2.3. Operaciones con memoria
cmd es la operación de control que queremos
compartida
realizar. Este parámetro puede tomar los Para poder usar una zona de memoria
siguientes valores: compartida que previamente hemos creado,
esta debe ligarse al espacio de direcciones de
IPC_STAT Lee el estado de la estructura de memoria asignadas a nuestro proceso. La
control de la memoria y lo devuelve a través forma en la que vamos a poder ligar o desligar
de la zona de memoria apuntada por *buf. una zona de memoria compartida al espacio
La estructura de esta zona de memoria es: de direcciones de nuestro proceso es mediante
el empleo de las funciones shmat y shmdt.
PC PASO A PASO Nº 18 Página 17
18. Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux
#include <sys/types.h> #include <stdio.h>
#include <sys/ipc.h> #include <stdlib.h>
#include <sys/shm.h> #include <sys/types.h>
#include <sys/ipc.h>
void *shmat(int shmid, const void *shmaddr, int shmflg); #include <sys/shm.h>
#include <sys/sem.h>
shmat es la función encargada de ligar una
zona de memoria compartida al espacio de
direcciones de memoria local del proceso. int main(int argc, char *argv[])
{
Retorna: la dirección a la que está unida la
zona de memoria compartida. -1 en caso de int shmid, i, semid, estado, pid;
error. struct sembuf operaciones;
char *mensaje;
Los parámetros que recibe son: shmid que
será el identificador de la zona de memoria key_t clave;
compartida a enlazar. shmaddr será la
dirección virtual donde queremos que nuestro //
proceso "vea" la zona de memoria compartida. // Zona de cración de memoria compartida
Como esto lo debe asignar el núcleo, puede
//
que no siempre se nos devuelva el puntero
// Creación de la memoria compartida
apuntando a shmaddr, por lo que se suele
poner este parámetro a 0 y dejar la // Primero la clave de recurso IPC
responsabilidad al S.O. if( (clave = ftok("shm.c",'K'))==-1)
{
En cuanto a shmflg, se trata de una máscara
de bits que indica el modo de acceso a fprintf(stderr," Error al crear la claven");
memoria. Si queremos hacer un acceso de return -1;
sólo lectura, indicaremos, por ejemplo, }
SHM_RDONLY (Más información en la página // Ahora la memoria compartida. Tamaño: 1024 caracteres
de manual correspondiente).
if( (shmid=shmget(clave, 1024 * sizeof(char), IPC_CREAT | 0600))==-1)
La función encargada de desligar la zona de {
memoria compartida es shmdt: fprintf(stderr," Error al crear segmento de memoria compartidan");
#include <sys/types.h> return -1;
#include <sys/ipc.h> }
#include <sys/shm.h> // Ahora debemos enlazar la zona de memoria compartida con la
// memoria local del proceso.
int shmdt(const void *shmaddr); if( (mensaje=(char *)shmat(shmid, 0, 0))==-1)
Retorna: 0 en caso de éxito, -1 en caso de {
error. fprintf(stderr," Error al ligar la memoria compartidan");
Esta función recibirá como único parámetro: return -1;
shmaddr que es el puntero que señala a la
zona de memoria compartida a desligar. }
2.4. Ejemplo de uso // Comienza el lanzamiento de procesos
En este primer ejemplo vamos a hacer que //
un proceso hijo llene un vector de caracteres
if((pid=fork())==-1)
con una frase. A continuación el proceso
padre, espera a que termine el hijo y lee {
dicho vector: // Escribimos en la memoria compartida
Página 18 PC PASO A PASO Nº 18
19. Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux
fprintf(stderr, "Error al lanzar proceso hijon"); int main(int argc, char *argv[])
return -1; {
}
int shmid, i, estado;
if (pid != 0) // Somos el padre struct sembuf operaciones;
{ char *mensaje, buffer[80];
// leemos de la memoria compartida key_t clave;
// Esperamos a que termine el proceso hijo
wait(&i); //
for(i=0;i<1024;i++) // Zona de creación de memoria compartida
printf("%c-", mensaje[i]); //
return 0; // Creación de la memoria compartida
} // Primero la clave de recurso IPC
else // Somos el hijo if( (clave = ftok("shm.c",'K'))==-1)
{ {
// Escribimos algo fprintf(stderr," Error al crear la claven");
strncpy(mensaje, "Hola, esto es una prueba de memoria compartida", 1024); return -1;
return 0; }
} // Ahora la memoria compartida. Tamaño: 1024 caracteres
if( (shmid=shmget(clave, 1024 * sizeof(char), IPC_CREAT | 0600))==-1)
// Limpieza de memoria compartida {
if((shmdt(mensaje))==-1) fprintf(stderr," Error al crear segmento de memoria compartidan");
{ return -1;
fprintf(stderr," Error al desaligar memoria compartidan"); }
} // Ahora debemos enlazar la zona de memoria compartida
return 0; // con la memoria local del proceso.
} if( (mensaje=(char *)shmat(shmid, 0, 0))==-1)
{
Pero es en los siguientes ejemplos donde
fprintf(stderr," Error al ligar la memoria compartidan");
muestra un poco más de potencia el empleo
return -1;
de la memoria compartida. Imaginemos que
tenemos dos programas cuyo código es el }
siguiente:
// // Comienza el lanzamiento de procesos
// Servidor que muestra lo que escribe el cliente //
// Compilar con: gcc shm_s.c -o shm_s printf("n Lectorn");
// do{
#include <stdio.h> for(i=0;i<80;i++)
#include <stdlib.h> printf("%c",mensaje[i]);
#include <sys/types.h> printf("n");
#include <sys/ipc.h> sleep(1);
#include <sys/shm.h>
#include <sys/sem.h> }while(mensaje[0]!='0');
PC PASO A PASO Nº 18 Página 19
20. Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux
// Limpieza de memoria compartida {
if((shmdt(mensaje))==-1) fprintf(stderr," Error al crear segmento de memoria compartidan");
{ return -1;
fprintf(stderr," Error al desaligar memoria compartidan"); }
} // Ahora debemos enlazar la zona de memoria compartida con la
return 0; // memoria local del proceso.
} if( (mensaje=(char *)shmat(shmid, 0, 0))==-1)
{
El servidor examina el buffer de memoria
fprintf(stderr," Error al ligar la memoria compartidan");
compartida cada segundo e imprime su
contenido. return -1;
}
El cliente será el encargado de llenar dicho
buffer:
// Comienza el lanzamiento de procesos
//
//
// Cliente que escribe lo que mostrará el servidor
printf("n Escriba 0 para salirn");
// Compilar con: gcc shm_c.c -o shm_c
do{
//
printf("n > ");
#include <stdio.h>
i=0;
#include <stdlib.h>
do
#include <sys/types.h>
{
#include <sys/ipc.h>
fscanf(stdin, "%c", &mensaje[i]);
#include <sys/shm.h>
i++;
#include <sys/sem.h>
}while(mensaje[i-1]!=10);
//scanf("%s", buffer);
int main(int argc, char *argv[])
//strncpy(mensaje, buffer, 80);
{
for(j=i;j<1024;j++)
int shmid, i,j, estado;
mensaje[j]=' '; // rellenamos el resto del buffer
struct sembuf operaciones;
// con espacios
char *mensaje, buffer[80];
}while(mensaje[0]!='0');
key_t clave;
// Limpieza de memoria compartida
//
if((shmdt(mensaje))==-1)
// Zona de cración de memoria compartida
{
//
fprintf(stderr," Error al desaligar memoria compartidan");
// Creación de la memoria compartida
}
// Primero la clave de recurso IPC
return 0;
if( (clave = ftok("shm.c",'K'))==-1)
}
{
fprintf(stderr," Error al crear la claven"); Una vez compilados estos programas, en dos
terminales distintos, abrimos primero un
return -1; cliente y escribimos algo:
} luis@leonov:~/articulos/articulo11_el_chaman/code$ ./shm_c
// Ahora la memoria compartida. Tamaño: 1024 caracteres Escriba 0 para salir
if( (shmid=shmget(clave, 1024 * sizeof(char), IPC_CREAT | 0600))==-1) > hola
Página 20 PC PASO A PASO Nº 18
21. Curso de linux - Memoria compartida - Curso de linux - Memoria compartida - Curso de linux
Y en otro terminal ejecutamos el servidor:
luis@leonov:~/articulos/articulo11_el_chaman/code$ ./shm_s
Lector
hola
A partir de este momento cada cosa que
escribamos en el cliente será mostrado en el
servidor cada segundo.
Estos dos programas aún se pueden mejorar
un poco de manera que, por ejemplo, el
servidor sólo muestre algo cuando el buffer
está lleno (vaciándolo por ejemplo tras recibir
el último dato o sincronizando los procesos
mediante semáforos). Dejo a los lectores el
practicar con estos ejercicios.
22. CURSO DE TCP/IP (2ª Entrega)
EL PROTOCOLO DE TRANSPORTE UDP
(PROTOCOLO DE DA AGRAMAS DE USUARIO)
T
- Vamos a descubrir las herramientas necesarias para "crear" paquetes de red
- Empezaremos a desgranar las capas de red
- Trataremos el Protocolo de Datagramas de Usuario
1. INTRODUCCIÓN el protocolo UDP, pero en futuras lecciones
exprimiremos al máximo las herramientas
Espero que no os perdieseis el primer artículo para hacer maravillas con las demás capas de
del curso de TCP/IP (Transmisión Control protocolos: TCP, IP, ARP (Address Resolution
Protocol / Internet Protocol --- Protocolo de Protocol --- Protocolo de Resolución de
Control de Transmisión / Protocolo de Direcciones), etc.
Internet), porque voy a asumir que habéis Empezaré explicando a grandes rasgos el
comprendido a grandes rasgos el concepto mecanismo de transporte de un paquete UDP
de capas de protocolos, y el mecanismo básico a través de Internet para luego detallar las
de transporte de paquetes de datos a través cabeceras UDP y, por último, veremos todo
de Internet (o cualquier otra red TCP/IP). esto de forma práctica utilizando unas
herramientas que nos permiten construir
! NOTA DE PC PASO A PASO / HXC
paquetes UDP desde cero (los llamados “raw
sockets”).
Para todos aquellos que no tienen la primera entrega del Pero, antes de empezar, he de aclararos un
curso de TCP / IP publicada en el número 17 de PC PASO asunto. Supongo que algunos de vosotros os
preguntareis qué ha pasado con la serie RAW.
A PASO, hemos decidido pasarla a formato PDF y liberarla
Mis intenciones no eran de ninguna manera
en la Web de la revista (www.hackxcrack.com).
sustituir la serie RAW por el curso de TCP/IP,
si no desarrollar ambos en paralelo. Pero es
También aprovechamos esta “nota” para indicar
increíble de qué manera pueden conspirar
a nuestros lectores que todos los artículos juntas las circunstancias de la vida para
liberados y los programas que mencionamos cambiar por completo tu rumbo cuando menos
en los artículos están disponibles en la sección te lo esperas. En poco más de un mes me han
ARTÍCULOS LIBERADOS Y DESCARGAS de la surgido una serie de problemas de todo tipo
Web. (familiares, personales, de salud, laborales,
y académicos) por los cuales ahora (y sin
Para esta primera “lección” he escogido un plazo definido) dispongo de muchísimo menos
protocolo muy sencillo, el protocolo UDP (User tiempo.
Datagram Protocol --- Protocolo de He barajado un poco mis posibilidades, y creo
Datagramas de Usuario), para así poder que lo que puedo permitirme de momento es
extenderme más en explicaros algunas continuar sólo con el curso de TCP/IP, aunque
herramientas que nos pueden ser útiles a lo no descarto publicar algún otro artículo de la
largo de todo el curso. De momento, estas serie RAW algún mes que consiga juntar algo
herramientas las utilizaremos para manejar más de tiempo. Con esto lo que os quiero
Página 22 PC PASO A PASO Nº 18
23. Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP
decir es que no os prometo nada con respecto protocolo DNS. Vamos a utilizar este protocolo
a la serie RAW, pero que haré lo que esté en como ejemplo para ver qué ocurre desde que
mi mano para que no termine aquí, aunque un cliente solicita una consulta DNS a un
haya que avanzar ahora mucho más despacio. servidor, hasta que éste cliente recibe la
respuesta pertinente. Os aconsejo que leáis
Gracias por vuestra comprensión. ;-) el artículo sobre DNS de la serie RAW, que se
encuentra en el número 14 de la revista,
! NOTA EDITORIAL aunque voy a empezar haciendo una
introducción sobre este protocolo.
Para los nuevos lectores, simplemente decir que la serie
de artículos denominada “SERIE RAW” ha estado presente
en casi todos los números de esta publicación y ha ! NOTA DE PC PASO A PASO / HXC:
constituido uno de los pilares de la misma.
El artículo SERIE RAW: DNS mencionado por el autor ha
La Serie RAW ya nos ha aportado conocimientos sobre los sido liberado y está disponible en nuestra Web:
Protocolos más importantes y desde hace mucho tiempo www.hackxcrack.com
se nos ha reclamado el inicio de un curso de TCP / IP.
Finalmente, desde el anterior número 17 por fin ese curso
ha llegado. 2.1. LAS CAPAS DE UDP/IP
Tal y como nos describe el autor, esperamos poder hacer Os recuerdo que el protocolo DNS es el que
más entregas de la Serie Raw en futuros números, pero de nos permite utilizar las famosas URLs en lugar
forma más dilatada en el tiempo. Mientras tanto disfrutemos de direcciones IP. Es decir, nos permite escribir
de este excelente curso de TCP / IP, una serie de artículos en nuestro navegador http://www.google.com
ampliamente reclamada y esperada por nuestros lectores. en lugar de tener que escribir
http://216.239.39.99, que es la dirección IP
de Google.
2. FUNCIONAMIENTO DEL Para conseguir esto, existen repartidos por el
PROTOCOLO UDP mundo una serie de servidores encargados
de traducir URLs a IPs, e IPs a URLs. Nuestros
PCs se comunicarán con alguno de estos
Los que os perdisteis la introducción de este
servidores cada vez que quieran utilizar una
curso no tenéis que preocuparos, ya que este
URL, para obtener así su IP correspondiente.
primer punto resume en cierto modo lo que
Esta comunicación se lleva a cabo a través
expliqué entonces. Aún así, os recomiendo
del protocolo DNS.
que leáis la introducción, ya que aquí voy a
resumir en un par de páginas lo que allí
Cuando escribimos en nuestro navegador una
explicaba en más de 20 páginas.
URL, por ejemplo http://neworder.box.sk,
nuestro sistema enviará una consulta DNS a
Para los que sí que leísteis la introducción,
un servidor, indicando en la consulta el nombre
este punto creo que os puede ayudar a aclarar
que desea traducir (en este caso
las ideas a modo de resumen.
neworder.box.sk, ya que el prefijo http:// es
sólo una indicación al navegador sobre el
A lo largo de la serie RAW os expliqué varios
protocolo a utilizar, pero no forma parte del
protocolos que funcionaban sobre TCP, pero
nombre que deseamos traducir).
sólo uno que funcionase sobre UDP: el
PC PASO A PASO Nº 18 Página 23
24. Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP - Curso de TCP/IP (2) - UDP
En segundo lugar, sabiendo que en Internet
todas las máquinas están conectadas entre sí
mediante una compleja red de cables y
conexiones inalámbricas, es lógico pensar que
será necesario conocer el camino a recorrer
en toda esa maraña de cables para enlazar
ambas máquinas entre sí.
En tercer lugar, el cliente necesitará conocer
la dirección IP del servidor DNS, ya que sólo
conociendo la dirección IP de una máquina
El servidor DNS nos enviará una respuesta puedes acceder a ella a través de Internet.
que contendrá la IP correspondiente a ese
nombre. En cuarto lugar, tiene que existir algún
mecanismo que le indique al servidor que la
consulta que le estamos haciendo es una
consulta DNS, y no de cualquier otro tipo. Por
ejemplo, el servidor DNS podría ser al mismo
tiempo un servidor Web, y un servidor de
correo electrónico. Por tanto, tiene que existir
un mecanismo que le permita distinguir qué
clientes solicitan servicios DNS, cuáles
solicitan servicios Web, y cuáles solicitan
servicios de correo eletrónico.
Gracias a esto, a continuación nuestro A grandes rasgos, son cuatro los problemas
navegador podrá acceder a la máquina que que hemos encontrado para conseguir llevar
contiene la página Web que deseamos visitar, a cabo esta comunicación. Y, por supuesto,
ya que sólo puede existir una comunicación no es coincidencia que sean cuatro las capas
directa entre dos máquinas si cada una conoce de protocolos utilizadas en una comunicación
la dirección IP de la otra. UDP: capa física, capa de enlace, capa de
red, y capa de transporte.
Ahora vamos a pensar un poco en cómo se
podría conseguir todo este mecanismo del Si no fuese gracias a la existencia de estas 4
DNS, en el cual un cliente solicita un nombre capas diferenciadas, el protocolo DNS debería
a un servidor, y el servidor le responde con encargarse por sí sólo de solucionar todos
la IP correspondiente. ¿Qué problemas se nos estos problemas. Es decir, el protocolo DNS
presentan a la hora de llevar a cabo este debería tener sus propias conexiones físicas
proceso aparentemente tan sencillo? Pensadlo entre máquinas, sus mecanismos para
un poco, y después mirad la lista de problemas encontrar un camino entre todas las máquinas
a salvar que os pongo a continuación, para que están conectadas simultáneamente, sus
ver si habéis llegado a las mismas propias direcciones IP, y sus propios
conclusiones: mecanismos para diferenciarse de
otros servicios (como la Web o el correo
En primer lugar, por supuesto, hay que electrónico).
conseguir que ambas máquinas (cliente y
Esto convertiría al aparentemente sencillo
servidor) tengan una conexión física, ya
protocolo DNS en un sistema de una
sea por cables, por radio, o por cualquier otro
complejidad inabarcable, y lo mismo ocurriría
medio físico que les permita establecer una
con cualquier otro protocolo que tuviese que
comunicación bidireccional.
Página 24 PC PASO A PASO Nº 18