P2P-Informe de Redes Prog_ de Sockets

7
Programación de Sockets Intergantes: Bryan Jeldes, Eduardo Arancibia, Fabricio Rosales, Mathias Oyarzun Universidad Técnica Federico Santa María, 28-07-2014

description

P2P-Informe de Redes Prog_ de Sockets

Transcript of P2P-Informe de Redes Prog_ de Sockets

  • Programacin de Sockets

    Intergantes: Bryan Jeldes, Eduardo Arancibia, Fabricio Rosales, Mathias Oyarzun

    Universidad Tcnica Federico Santa Mara, 28-07-2014

  • Resumen

    En la dcada de los 80s, cuando se utilizaba la red ARPANET y ARPA Internet, el sistemaoperativo modificado 1BSD UNIX, necesitaba facilitar el diseo de aplicaciones queutilizaran dichas redes; por tal motivo, se cre la Interfaz de Programacin de Sockets.2Sockets, es un mtodo de comunicacin programable por el cual un proceso puedeconectarse y enviar flujos de datos a otros procesos que estn dentro de un mismosistema, o en una maquina completamente distinta.

    En nuestro proyecto nos centramos netamente en programar sockets que conecteprocesos en mquinas distintas. Mostramos la programacin de sockets en algunoslenguajes, relacionamos funciones incluidas en la programacin, conocimos quenecesitaba un socket para que funcionara, etc. Y en la prctica, tratamos de entablar lacomunicacin entre un programa cliente y un programa servidor, que estaba alojado enuna Raspberry PI, a travs del lenguaje de programacin Python, e investigamos con elprograma Wireshark como los programas enviaban la informacin con sus respectivospaquetes.

    Finalmente, pudimos hacer efectiva la comunicacin a la Raspberry P; envibamosmensajes del cliente, ejecutado en un notebook, al servidor y comprobamos conWireshark los paquetes enviados.

    1Programacin de Sockets por Xavier Perramon Tornil y Enric Peig Oliv, UOC.2http://es.wikipedia.org/wiki/Socket_de_Internet, 1

  • Introduccin

    La presente investigacin se refiere al uso de los sockets, y en especfico a los sockets queposeen su espacio de nombre en formato Internet, es decir, procesos que se comunicanalojados en mquinas distintas.

    El objetivo principal era averiguar cmo se programaba uno de estos conectores, hacerlofuncionar en la prctica y estudiar los componentes que se necesitaban para que este seejecutara. Con este fin, se plante la idea de hacer un programa cliente y un programaservidor que intercambiaran mensajes entre s, como una especie de chat arcaico; elcliente seria alojado en un notebook, con un cdigo especfico, y el servidor en unaRaspberry PI.

    En pro del objetivo principal, se us el lenguaje de programacin Python para llevar a caboestos programas (para fines prcticos, Python era la mejor opcin, ya que era simple yrpido para mostrar el funcionamiento del codigo), se buscaron los componentesnecesarios para que un socket funcionara, se program un cdigo en Python que enviaramensajes a otro programa ejecutado en otra mquina, en este caso una Raspberry PI.

    En general, se tratara de evaluar la complejidad de programar sockets, estudiar suscomponentes y funciones, y adems, comprobar los paquetes que este enva al servidor yviceversa.

  • Programacin de Sockets

    En primera instancia, para programar un socket, escogimos una especie de cliente-servidor(modelo P2P) que se comunicaran a travs de mensajes. Ahora se mostraran lasfunciones utilizadas para hacer funcionar los cdigos.

    El cdigo del programa Cliente:

    -HOST y PORT: Se inicializan estasvariables con valores fijos, ya que parafines prcticos, lo conectaremos alservidor con un IP y puerto prefijado(dentro de un red domstica).

    -socket(AF_INET, SOCK_STREAM): funcin que crea el socket. AF_INET hace alusin a lacomunicacin en mquinas distintas. SOCK_STREAM indica que se transportaran los datosva TCP .

    -s.connect(HOST, PORT): conecta al servidor prefijado.

    -s.send(message): enva el mensaje escrito por el cliente.

    -s.recv(): recibe un mensaje proveniente del servidor.

    -s.close(): Cierra la conexin.

  • El cdigo del programa Servidor:

    -socket(AF_INET, SOCK_STREAM): Lomismo que en el cliente, AF_INET paraconectarse a otra maquina, ySOCK_STREAM para usar transportevia TCP.

    -s.bind(HOST, PORT): Se le asigna unadireccin y un puerto al servidor. Aligual que antes estos ya estnprefijados, sin embargo, HOST no es necesario en este caso, solo el puerto.

    s.listen(1): Indica cuantas conexiones aceptara. En este caso aceptara una sola conexin.

    s.accept(): Acepta la conexin entrante. Esta variable es una tupla y es igualada a lasvariables conn y addr.

    Conn.recv(1024),Conn.sendall(reply), con.close(): .recv recibe lo que le envio elcliente, .sendall(reply) enva a todos lo que esta en reply y con.close() cierra la conexin.

    Finalmente, se puede comprobar con WIRESHARK que al enviar mensajes al servidor,estos se comunicangracias a los socketsque utilizan lospuertosrespectivos:57713para el cliente y 6975para el servidor.

  • Conclusiones

    En este proyecto se averiguo el cmo se programaba un socket en bruto, usando algnlenguaje de programacin, que en este caso fue 3Python. Se investigaron las funcionesque utilizaban los cdigos para entender el cmo funcionaba un socket, como secomunicaba con un proceso alojado en otra mquina. Se program el cliente en unnotebook y el servidor en una Raspberry PI, y se comprob que se pueden comunicar atravs de sockets, verificndolo con Wireshark. 4Adems en el proceso de investigacin seobservo cmo se programaba en otros lenguajes que no eran python como C y Java, estosdos ultimos fueron abordados de manera general sin embargo se lleg al concenso de queel sistema es igual para todos, lo que cambia es el cmo se programa pero en esenciatodos usan las mismas funciones al fin y al cabo.

    En conclusin, los sockets cumplieron ampliamente la tarea que se les dio cuando fueroncreados para ARPA Internet, y creemos que sern mejorados en el futuro facilitando anms el diseo de programas que necesiten comunicarse con sistemas.

    3http://victorpando.blogspot.com/2008/12/programacin-de-sockets-con-python.html4http://es.tldp.org/Tutoriales/PROG-SOCKETS/prog-sockets.html y Programacin de Sockets por

    Xavier Perramon Tornil y Enric Peig Oliv, UOC.

  • Referencias

    http://es.tldp.org/Tutoriales/PROG-SOCKETS/prog-sockets.html http://es.wikipedia.org/wiki/Socket_de_Internet http://victorpando.blogspot.com/2008/12/programacin-de-sockets-con-

    python.html

    Programacin de Sockets por Xavier Perramon Tornil y Enric Peig Oliv, UOC.

    ProgramacindeSockets