Manejo de sockets IPv6
|
|
|
- María Soledad Sevilla Murillo
- hace 9 años
- Vistas:
Transcripción
1 Universidad Técnica Federico Santa María INF-354 Taller de Redes de Computadores Manejo de sockets IPv6 Autores: Alonso Sandoval Hernán Vargas Profesor: Javier Cañas 21 de noviembre de 2014
2 Índice 1. Resumen 2 2. Acerca de la aplicación Cliente Servidor Migrando aplicaciones Funciones estándar de sockets Estructura de direcciones Resolución DNS Explorando el código fuente Sockets Estructura addrinfo Referencias 9 1
3 1. Resumen Nuestro proyecto consiste en 2 aplicaciones (un cliente y un servidor) las cuales interactúan tanto en el protocolo IPv4 1 como en IPv6 2. En el siguiente documento presentaremos los detalles de nuestro proyecto, mostrando tanto la parte usuario (formas de uso) como la que interesa al estudiante (Código, librerias, etc.). Nuestro objetivo es poder manipular la nueva estructura que compone el protocolo IPv6 a través de la librería de sockets en C [1], permitiendonos hacer pruebas para ver las principales diferencias con su predecesor el protocolo IPv4. Para más detalles del proyecto, visitar el trac del curso [2]. 2. Acerca de la aplicación Como dijimos anteriormente nuestro proyecto comunica dos aplicaciones siguiendo la estructura de cliente y servidor, estando de preferencia en máquinas distintas de manera que podamos hacer las pruebas pertinentes en un ambiente lo más realista posible. A continuación presentamos la forma de usar ambas aplicaciones, la cuales se obtienen al compilar el código fuente Cliente Las opciones con la aplicación cliente son: Modo de empleo: $./client -4 [OPCIONES] (Para IPv4.) $./client -6 [OPCIONES] (Para IPv6.) Las opciones son: Ejemplos: $ -a, address (Define explícitamente la dirección.) $ -p, port (Define explícitamente el puerto.) $./client -6 -a:: -p4021 $./client -6 address=:: port=4021 Existe una configuración por defecto la cual es guardada en el archivo config ubicado en el directorio raíz del proyecto. Una vez ingresado los parámetros, el cliente intentará conectar con el servidor que debiese estar en la máquina que posee la dirección otorgada por el usuario, si lo logra comenzará la sesión permitiendo el paso de mensajes. Los mensajes enviados son analizados por el servidor y se envía una respuesta acorde a ellos. Si el mensaje no está en la lista de funciones establecidas, el servidor responderá lo mismo que se le envió (en este caso, lo que envía el cliente). El servidor puede establecer la comunicación entre dos clientes, lo cual a su vez permite la comunicación entre distintos protocolos. Además, podemos enviar archivos los cuales son guardados en la carpeta del cliente Las funciones disponibles son: list: Muestra una lista de los clientes conectados mostrando su alias e IP. wait: Pone al cliente en modo espera de otras conexiones. linkto: Conecta al cliente con alias IPvX:Y, donde X es la versión del protocolo e Y el alias del cliente. Notar que dicho cliente debe estar en modo wait. Ej: > linkto IPv6:5. fileto: Envía un archivo al cliente de alias Y. Ej: > fileto IPv6:5..filesrc filedst. close, quit, exit: Cierra el socket conectado con el cliente. 1 Internet Protocol version 4 2 Internet Protocol version 6 2
4 2.2. Servidor Por parte del servidor no existen muchas opciones dado que todo lo editable debiese estar en el archivo de configuración, el cual como dijimos anteriormente se encuentra en el directorio raíz. Modo de empleo: $./server Como dijimos, el servidor lee la configuración de puertos desde el archivo de configuración. Internamente selecciona una IP disponible por medio de IP ANY tanto para IPv4 como para IPv6, luego lanza en threads [3] los dos sockets escucha 3. Mientras está escuchando muestra las conexiones entrantes y los mensajes recibidos. 3. Migrando aplicaciones Al momento de pensar o repensar nuestras aplicaciones a modo que funcione o sea compatible con el nuevo protocolo IPv6 nos encontramos con que el principal problema es el tamaño de direcciones, no por su tamaño en bytes sino por su formato. Si bien un socket es un nivel de abstracción donde no utilizamos la dirección directamente, es necesario proporcionarla para la creación de este Funciones estándar de sockets Para C la biblioteca socket.h provee las funciones necesarias para la creación de sockets. Tenemos las siguientes funciones: int socket (int domain, int type, int protocol); int bind (int fd, struct sockaddr* addr, int addrlen); int listen (int fd, int backlog); int connect (int fd, struct sockaddr* addr, int addrlen); int accept (int fd, void* recv addr, int* addrlen); int send (int fd, void* msg, int len, int flags); int recv (int fd, void* msg, int len, int flags); int shutdown (int fd, int level); Para cada una de estas funciones destacamos: La función socket retorna un file descriptor (fd). Las funciones send y recv retornan la cantidad de bytes enviados/recibidos. Todas las demás funciones retornan 0 en caso de ejecutarse correctamente y -1 en caso contrario. Algunas definiciones de los datos: domain: Dominio del protocolo, en nuestro caso AF INET para IPv4 y AF INET6 para IPv6. type: Tipo de conexión, SOCK STREAM para flujos o SOCK DIAGRAM para datagramas. protocol: Protocolo de conexión, debe ser congruente al tipo. Si el tipo de conexión solo tiene un protocolo asociado (ej: TCP) se puede poner un 0. fd: File descriptor del socket objetivo. addr, recv addr: Estructura de dirección. Depende del protocolo. addrlen: Largo de la estructura de dirección. 3 Sockets a la espera de recibir una conexión entrante 3
5 backlog: Cantidad de conexiones en espera que podemos tener simultáneamente. msg: Buffer donde guardar mensajes a enviar o recibidos. len: Largo del mensaje a enviar o máximo del mensaje a recibir. level: Nivel de apagado, 0 prohíbe la recepción, 1 prohíbe la emisión y 2 prohíbe ambos. Cabe destacar que como los sockets, una vez son creados, son manejados prácticamente como cualquier otro fichero por el sistema operativo, podemos utilizar funciones como read, write y close en vez de rcv, send y shutdown respectivamente. Como podemos notar, la única dependencia de estas funciones con IPv4 o IPv6 van por parte de las estructuras de dirección. Pero las funciones aceptan la estructura general: sockaddr y no es específica, así, el problema de migración no será en los sockets mismos, si no más bien en las estructuras Estructura de direcciones Las estructuras de direcciones IPv4 e IPv6 están definidas de la siguiente forma: Estructura IPv4: struct in_addr{ unsigned long s_addr; /* 32b para la dirección. */ struct sockaddr_in{ short sin_family; /* AF_INET */ unsigned short sin_port; /* Puerto en formato network. */ struct in_addr sin_addr; char sin_zero[8]; Estructura IPv6: struct in6_addr { u_int8_t s6_addr[16]; /* 128b para la dirección. */ struct sockaddr_in6{ u_char sin6_len; /* Largo de esta estructura. */ u_char sin6_family; /* AF_INET6 */ u_int16m_t sin6_port; /* Puerto en formato network. */ u_int32m_t sin6_flowinfo; struct in6_addr sin6_addr; Inmediatamente notamos que el cambio fundamental entre estas estructuras se encuentra en la longitud de la dirección IP. Además se han quitado los ceros de sockaddr in (eran para completar el bloque) y se ha agregado el largo de la estructura y flowinfo. Nota: Las estructuras descritas anteriormente guardan la información en formato (binario), para ello debemos utilizar las siguientes funciones de conversión al guarda/leer los puertos: int network port = htons(int human readabl port); int human readable port = ntohs(int network port); 3.3. Resolución DNS Para poder obtener la(s) direccion(es) IP rela(es) de un servidor debemos hacer la consulta al DNS, en C tenemos la biblioteca netdb.h que provee funciones y estructuras que facilitan esta tarea: 4
6 #include <netdb.h> /* Estructura hostent para resolver direcciones. */ struct hostent{ char* h_name; /* Nombre del host. */ char** h_aliases; /* Nombres alternativos del host. */ int h_addrtype; /* Tipo de dirección (AF_INET o AF_INET6). */ int h_length; /* Longitud, en bytes, de la dirección. */ char** h_addr_list; /* Puntero a las direcciones del host. */ char* h_addr; /* Primera dirección del host (h_addr_list[0]). */ /* Funciones */ struct hostent* gethostbyname(const char* name); struct hostent* gethostbyname2(const char* name, int af); struct hostent* gethostbyaddr(const void* addr, socklen_t length, int format); La función gethostbyname(name) obtiene las direcciones IP de algún servidor name, por ejemplo name = obtendrá las direcciones de google. La función gethostbyname2(name, af) es igual a gethostbyname(...) solo que filtra las direcciones dependiendo de la variable af (AF INET o AF INET6, en nuestro caso). La función gethostbyaddr(addr, length, format) hace lo contrario a las instrucciones anteriores. Se le suministra addr que es una estructura de direcciones, length el largo de dicha estructura y af el tipo de dirección y determina los demás campos de la estructura conforme a ello. 4. Explorando el código fuente A continuación se presenta el código básico para la creación de sockets en IPv4: 4.1. Sockets Sockets para IPv4 #include <netinet/in.h> /* Estructuras y constantes de dirección. */ #include <sys/socket.h> /* Funciones para el manejo de sockets. */ #include <netdb.h> /* Estructura y funciones para DNS. */ #define SERVER 0 #define CLIENT 1 /* == Parámetros == */ char direccion[len] = " /* Puede ser una dirección ip. */ int puerto = 4040; /* Puerto al que nos conectaremos. */ int c = TIPO_APP; /* TIPO_APP será SERVER o CLIENT. */ /* == Variables == */ int mi_socket; /* Entero para guardar el fd del socket. */ struct sockaddr_in in; /* Estructura descrita en la sección anterior. */ struct hostent *he; /* Donde guardaremos el resultado de la consulta DNS. */ /* == Configuración de la dirección == */ menset(&in, 0, sizeof(in)); /* Llenamos la estructura de 0 s y de paso sin_zero. */ in.sin_family = AF_INET; /* Familia IPv4. */ in.sin_port = htons(puerto); /* Puerto en formato network. */ /* Servidor: seleccionamos cualquier IP disponible, */ 5
7 in.sin_addr.s_addr = INADDR_ANY; /* Cliente: debemos resolver la dirección por medio del DNS, */ else if(c == CLIENT){ he = gethostbyname(direccion); /* Consulta al DNS. */ in.sin_addr = *( (struct in_addr *) he->h_addr); /* Guardamos la dirección en la estructura. */ /* == Trabajo con sockets == */ mi_socket = socket(af_inet, SOCK_STREAM, 0); /* Creación del socket. */ /* Servidor: debemos ponernos en modo escucha, */ bind(mi_socket, (struct sockaddr *) &in, sizeof(in)); /* Linkeamos nuestra dirección y el puerto. */ listen(mi_socket, BACKLOG); /* Modo escucha. */ /* Variables para guardar clientes. */ struct sockaddr_in cliente; int socket_entrante, len_cl = sizeof(struct sockaddr_in); socket_entrante = accept(mi_socket, (struct sockaddr *) &cliente, &len_cl); /* Con esto tendremos una conxion con cliente por medio de socket_entante. */ /* cliente: basta hacer connect, este internamente hace el bind. */ else if(c == CLIENT){ connect(mi_socket, (struct sockaddr *) &in, sizeof(in)); Sockets para IPv6 #include <netinet/in.h> /* Estructuras y constantes de dirección. */ #include <sys/socket.h> /* Funciones para el manejo de sockets. */ #include <netdb.h> /* Estructura y funciones para DNS. */ #define SERVER 0 #define CLIENT 1 /* == Parámetros == */ char direccion[len] = " /* Puede ser una dirección ip. */ int puerto = 4040; /* Puerto al que nos conectaremos. */ int c = TIPO_APP; /* TIPO_APP será SERVER o CLIENT. */ /* == Variables == */ int mi_socket; /* Entero para guardar el fd del socket. */ struct sockaddr_in6 in; /* Estructura descrita en la sección anterior. */ struct hostent *he; /* Donde guardaremos el resultado de la consulta DNS. */ /* == Configuración de la dirección == */ in.sin6_family = AF_INET6; /* Familia IPv6. */ in.sin6_port = htons(puerto); /* Puerto en formato network. */ in.sin6_flowinfo = 0; /* Servidor: seleccionamos cualquier IP disponible, */ in.sin6_addr = in6addr_any; /* Cliente: debemos resolver la dirección por medio del DNS, */ else if (c == CLIENT){ he = gethostbyname2(direccion, AF_INET6); /* Consulta al DNS. */ memcpy((char *) &in.sin6_addr, he->h_addr, he->h_length); /* Guardamos la dirección en la estructura. */ /* == Trabajo con sockets == */ 6
8 mi_socket = socket(af_inet6, SOCK_STREAM, 0); /* Creación del socket. */ /* Servidor: debemos ponernos en modo escucha, */ bind(mi_socket, (struct sockaddr *) &in, sizeof(in)); /* Linkeamos nuestra dirección y el puerto. */ listen(mi_socket, BACKLOG); /* Modo escucha. */ /* Variables para guardar clientes. */ struct sockaddr_in6 cliente; int socket_entrante, len_cl = sizeof(struct sockaddr_in6); socket_entrante = accept(mi_socket, (struct sockaddr *) &cliente, &len_cl); /* Con esto tendremos una conxion con cliente por medio de socket_entante. */ /* Cliente: basta hacer connect, este internamente hace el bind. */ else if(c == CLIENT){ connect(mi_socket, (struct sockaddr *) &in, sizeof(in)); Cuales son las diferencias entre ambos códigos?: struct sockaddr in in; struct sockaddr in6 in; menset(&in, 0, sizeof(in)); in.sin6 flowinfo = 0; in.sin family = AF INET; in.sin6 family = AF INET6; in.sin port = htons(puerto); in.sin6 port = htons(puerto); in.sin addr.s addr = INADDR ANY; in.sin6 addr = in6addr any; he = gethostbyname(direccion); he = gethostbyname2(direccion, AF INET6); in.sin addr = *( (struct in addr *) he->h addr); memcpy((char *) &in.sin6 addr, he->h addr, he->h length); mi socket = socket(af INET, SOCK STREAM, O); mi socket = socket(af INET6, SOCK STREAM, O); 4.2. Estructura addrinfo En la sección Resolución de DNS vimos como netdb.h define funciones y estructuras para interactuar a modo de obtener la dirección de un host. Esta biblioteca además posee las capacidades que nos ayudarán a trabajar con las estructuras de dirección tanto de IPv4 como en IPv6 indistintamente. Tenemos: #include<netdb.h> struct addrinfo { int ai_flags; int ai_family; /* Familia del protocolo. */ int ai_socktype; /* Tipo de conexión. */ int ai_protocol; /* Protocolo de conexión. */ size_t ai_addrlen; /* Largo de la dirección. */ struct sockaddr *ai_addr; /* Estructura de dirección. */ char *ai_canonname; /* Nombre canonico. */ struct addrinfo *ai_next; /* Siguiente elemento de la lista. */ ; /* Para resolver cierta dirección tenemos: */ int getaddrinfo(char *direccion, char *servicio, struct addrinfo *consulta, struct addrinfo **respuesta); /* Para liberar la memoria */ void freeaddrinfo(struct addrinfo *respuesta); req.ai_flags = 0; req.ai_socktype = SOCK_STREAM; /* Tipo de conexion */ req.ai_protocol = 0; /* Protocolo de conexion. TCP por defecto */ Así, nuestro código quedará de la siguiente forma, mostrandose IPv4 e IPv6 al mismo tiempo: #include <netinet/in.h> /* Estructuras y constantes de dirección. */ #include <sys/socket.h> /* Funciones para el manejo de sockets. */ #include <netdb.h> /* Estructura y funciones para DNS. */ #define SERVER 0 7
9 #define CLIENT 1 /* == Parámetros == */ char direccion[len] = " /* Puede ser una dirección ip. */ char puerto[6] = "4040"; /* Puerto al que nos conectaremos, ahora es string. * Acepta nombres de servicios descritas en: /etc/services */ int v = VERSION; /* VERSION será 4 para IPv4 y 6 para IPv6.*/ int c = TIPO_APP; /* TIPO_APP será SERVER o CLIENT. */ /* == Variables == */ struct addrinfo consulta, *respuesta; int mi_socket; if(v == 4) consulta.ai_family = PF_INET; /* Igual a AF_INET, para IPv4. */ else if(v == 6) consulta.ai_family = PF_INET6; /* Igual a AF_INET6, para IPv6. */ /* Opciones de ai_flags: */ consulta.ai_flags = AI_PASSIVE; /* Para poder hacer bind(). */ getaddrinfo(null, puerto, &consulta, &respuesta); /* Consulta al DNS. */ else if(c == CLIENT){ consulta.ai_flags = 0; getaddrinfo(direccion, puerto, &consulta, &respuesta); /* Consulta al DNS. */ /* Ahora en respuesta tenemos nuestra direccion configurada, luego trabajamos los * * sockets sin la necesidad de tener en cuenta la version de IP utilizada. */ my_socket = socket(respuesta->ai_family, respuesta->ai_socktype, respuesta->ai_protocol); bind(mi_socket, respuesta->ai_addr, respuesta->ai_addrlen); listen(mi_socket, BACKLOG); else if(c == CLIENT){ connect(my_socket, respuesta->ai_addr, respuesta->ai_addrle); Como vemos, la única diferencia entre los protocolos radica en la asignación de ai family, la cual puede ser hecha con un simple if. 8
10 5. Referencias [1] Nuevas funciones para sockets. [2] Trac del curso, Taller de redes %20aplicaciones\%20a\%20IPv6 [3] Como usar threads en C. [4] Acerca de error en bind(). [5] Sobre como pasar argumentos. _con\_getopt\%28\%29 9
Migrando aplicaciones a IPv6
Migrando aplicaciones a Fundamentos técnico: DualStack y Socket.h Alonso Sandoval A. Hernán Vargas L. Universidad Técnica Federico Santa María [email protected], [email protected]
BOLETIN 8 INDICE. ordenación de bytes. conversión de nombre y direcciones.
Sockets BOLETIN 8 INDICE 1. Introducción. 2. Tipos de sockets. 3. socket() 4. bind() 5. listen() 6. accept() 7. connect() 8. send()/recv(). 1. Funciones de ordenación de bytes 2. Funciones de conversión
Adaptación de aplicaciones a IPv6
Adaptación de aplicaciones a IPv6 extensión de la interfaz de sockets Eva M. Castro [email protected] Tutorial IPv6 -Adaptación de aplicaciones a IPv6 1 Contenido * Introducción Modelo de sockets BSD
Práctica 1 Programación de Aplicaciones Distribuidas: Sockets UDP. Laboratorio de Comunicación de Datos ITT Telemática Septiembre 2011
Práctica 1 Programación de Aplicaciones Distribuidas: Sockets UDP Laboratorio de Comunicación de Datos ITT Telemática Septiembre 2011 Introducción Aplicaciones Distribuidas Su funcionalidad se distribuye
Introducción a la programación con sockets en C
Introducción a la programación con sockets en C Enrique Bonet Departamento de Informática Universidad de Valencia Índice Introducción Socket Creación de un socket Cierre de un socket Asociación de un socket
Qué es un socket? Dominios de comunicación. Tipos de sockets en el dominio AF_INET. Sockets Stream. Sockets Datagram. Sockets Raw
Qué es un socket? Es una interfaz de entrada salida de datos que permite la intercomunicación entre procesos. Los procesos pueden estar ejecutándose en el mismo o en distintos sistemas, unidos mediante
-> Todo socket viene definido por dos características fundamentales:
LOS SOCKETS. Los sockets no son más que puntos o mecanismos de comunicación entre procesos que permiten que un proceso hable (emita o reciba información) con otro proceso incluso estando estos procesos
COMUNICACIÓN Sistemas Distribuidos
COMUNICACIÓN Sistemas Distribuidos Alvaro Ospina Sanjuan Universidad Pontificia Bolivariana Medellín 2010 Agenda Comunicación centralizada y distribuida Protocolos con capas Modelo cliente servidor Sockets
Diseño de aplicaciones distribuidas ÍNDICE
Aplicaciones Distribuidas (s) Aplicaciones Distribuidas (s) TCP TCP Protocolos de Protocolos de Transporte Transporte UDP UDP STREAM STREAM (TCP) (TCP) SOCKET SOCKET Etapas en la Creación Etapas en la
Clase de Sockets en lenguaje C. Prof. Ricardo González
Clase de Sockets en lenguaje C Prof. Ricardo González 1 Modelo de Programación Cliente-Servidor Cliente: un programa que envía peticiones. Servidor: un programa que ofrece un servicio que satisface peticiones
Práctica 2 Programación de Aplicaciones Distribuidas: Sockets TCP. Laboratorio de Comunicación de Datos ITT Telemática 26 de Septiembre 2011
Práctica 2 Programación de Aplicaciones Distribuidas: Sockets TCP Laboratorio de Comunicación de Datos ITT Telemática 26 de Septiembre 2011 Introducción Aplicaciones Orientadas a Conexión TCP:Servicio
Estructuras y funciones de programación de sockets.
Estructuras y funciones de programación de sockets. Introducción. Autor: Enrique Bonet En estos apuntes se incluye una breve descripción de las estructuras y funciones cuyo uso puede ser necesario para
Ingeniería Técnica de Telecomunicación, esp. Telemática Universidad de Jaén
Contenido. Introducción Primitivas Sockets orientadas a conexión (TCP) Primitivas orientadas a no conexión (UDP) Programación con Sockets en Internet Funciones sockets Funciones auxiliares 1 Bibliografía.
Introducción de Sockets en C.
PRÁCTICA 2: Introducción de Sockets en C. 1 La Interfaz Socket es una API para redes TCP/IP que se compone de funciones o rutinas. Originalmente se construyó a principios de los 80 para el sistema operativo
Mecanismos IPC: sockets
Mecanismos IPC: sockets Ampliación de Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Sockets Los sockets son una abstracción lógica que permiten la comunicación bidireccional
Programación Básica de Sockets en Unix para Novatos
Tabla de contenidos BracaMan Introducción...3 Diferentes tipos de sockets en Internet...3 Estructuras...3 Conversiones....5 Direcciones IP...5 Funciónes Importantes...6 Algunas palabras sobre dns...14
Redes de Computadores Nivel de Aplicación: Programación con sockets I
Redes de Computadores Nivel de Aplicación: Programación con sockets I Área de Ingeniería Telemática Dpto. Automática y Computación http://www.tlm.unavarra.es/ En clases anteriores... El nivel de aplicación
Estructuras y funciones de programación de sockets.
Estructuras y funciones de programación de sockets. Introducción. En estos apuntes se incluye una breve descripción de las estructuras y funciones cuyo uso puede ser necesario para el desarrollo de las
Sockets: funcionamiento y programación. Sockets tipo UNIX. MSc. Ivan A. Escobar
Sockets tipo UNIX MSc. Ivan A. Escobar Creación socket: socket() int socket(familia, tipo, protocolo) Regresa un valor entero Parecido descriptor de archivos: descriptor socket sockfd int familia familia
DESARROLLO DE APLICACIONES DISTRIBUIDAS. SOCKETS en UNIX
DESARROLLO DE APLICACIONES DISTRIBUIDAS PRÁCTICAS CURSO 2002-2003 SOCKETS en UNIX 1. Los SOCKETS en OSI/ISO - Como ya conocéis, el modelo OSI/ISO estructura los diferentes elementos que conforman una red
Sockets (TCP) Tema 2.- Nivel de aplicación en Internet
Sockets (TCP) Tema 2- Nivel de aplicación en Internet Dr Daniel Morató es de Computadores Ingeniero Técnico en Informática de Gestión, 2º curso Material parcialmente adaptado del libro Computer Networking:
UNIVERSIDAD DE CANTABRIA DEPARTAMENTO DE INGENIERÍA DE COMUNICACIONES GRUPO DE INGENIERÍA TELEMÁTICA
UNIVERSIDAD DE CANTABRIA DEPARTAMENTO DE INGENIERÍA DE COMUNICACIONES GRUPO DE INGENIERÍA TELEMÁTICA MANUAL DE SOCKETS EN C TABLA DE CONTENIDOS Introducción.. 4 Sockets en C.. 7 2.1 Conceptos Básicos..
Desarrollo de Aplicativos con winsockets
Seminario de Redes de Computadoras 66.48 Desarrollo de Aplicativos con winsockets Docentes: Ing. Marcelo Utard Ing. Pablo Ronco Alumnos: Baños, Germán Gámez, Pablo Rabino, Juan Pablo Salas, Federico Introducción
Tema 4: Sockets: Un interfaz con TCP/IP
Tema 4: Sockets: Un interfaz con TCP/IP Introducción. Conceptos básicos. Dirección de un socket. Llamadas básicas de los sockets. Diferencias entre BSD-Sockets y WinSockets. Asignación de puertos a procesos.
Sistemas Distribuidos. Sockets
Sistemas Distribuidos Sockets Sockets Aparecieron en 1981 en UNIX BSD 4.2 Intento de incluir TCP/IP en UNIX. Diseño independiente del protocolo de comunicación. Un socket es punto final de comunicación
Características de un lenguaje ideal para robótica
COMUNICACIÓN MEDIANTE SOCKETS Enrique Ortega Edrodoso Ingeniería Técnica de Informática de Gestión Introducción Los vehículos autoguiados comerciales disponibles en la actualidad tienen una serie de inconvenientes
Tema 4 Sockets: Un interfaz con TCP/IP
1 Tema 4 Sockets: Un interfaz con TCP/IP Capítulos: Introducción. Conceptos básicos. Dirección de un socket. Llamadas básicas de los sockets. Diferencias entre BSD-Sockets y WinSockets. Asignación de puertos
Sockets (UDP) Tema 2.- Nivel de aplicación en Internet
Sockets (UDP) Tema 2.- Nivel de aplicación en Internet Dr. Daniel Morató es de Computadores Ingeniero Técnico en Informática de Gestión, 2º curso Sockets y UDP UDP: no hay conexión entre cliente y servidor»
Tema 3: COMUNICACIÓN ENTRE PROCESOS
Tema 3: COMUNICACIÓN ENTRE PROCESOS E. U. Informática en Segovia Departamento de Informática Universidad de Valladolid 1 Introducción Estudia las comunicaciones punto a punto entre los lados de un enlace
Programación con sockets
Programación con sockets Internetworking with TCP/IP Client/Server Programming and Applications: Linux/POSIX Sockets Version Douglas E. Comer David L. Stevens Capítulos: 2, 5, 7 Grupo de Sistemas y Comunicaciones
ARQUITECTURA DE REDES Laboratorio PRÁCTICA 2: MANUAL DE SOCKETS EN C. Grado en Ingeniería Informática Curso 2014/15
ARQUITECTURA DE REDES Laboratorio PRÁCTICA 2: MANUAL DE SOCKETS EN C Grado en Ingeniería Informática Curso 2014/15 ÍNDICE 1. INTRODUCCIÓN.. 3 1.1 La familia de protocolos TCP/IP. 3 1.2 Nivel de red (IP)..
Tema 2. Comunicación entre procesos
Tema 2. Comunicación entre procesos SCS Sistemas Cliente/Servidor 4 o informática http://ccia.ei.uvigo.es/docencia/scs octubre 2008 FJRP, FMBR 2008/09 ccia SCS 2.1 Requisitos y alternativas Sistemas distribuidos
Sistemas Operativos Distribuidos
Sockets Sistemas Distribuidos Sockets Aparecieron en 1981 en UNIX BSD 4.2 Intento de incluir TCP/IP en UNIX. Diseño independiente del protocolo de comunicación. Un socket es punto final de comunicación
Introducción a Sockets en Linux
Introducción a Sockets en Linux Horacio Goetendía Bonilla 6 de Enero de 2003 Índice 1. Conceptos 2 1.1. Socket............................... 2 2. Sockets en Unix standar 2 2.1. Namespace (int dominio)(dominio
sockets Flujo (SOCK_STREAM) Comunicación bidireccional Confiable (entrega garantizada) Información ordenada en el destino Datagrama (SOCK_DGRAM)
s s Comunicación punto-a-punto entre procesos Los s son los extremos de la comunicación Diferentes dominios UNIX: Entre procesos de un mismo equipo Internet: Entre procesos de diferentes equipos (TCP/IP)
Arquitecturas Cliente/Servidor
Arquitecturas Cliente/Servidor Integrantes: Arellano Santiago Víctor Manuel Girón Capistrán Aldo Iván Guerrero Ramirez Eduardo Daniel Rosas Peña Ramiro SOCKETS EN C. LLAMADAS PARA EL MANEJO DE SOCKETS
Administración de redes en GNU/Linux
Administración de redes en GNU/Linux La configuración de una red en UNIX/Linux es en cierta medida más compleja que en sistemas Microsoft. Sin embargo para numerosos administradores tiene un mayor grado
SOCKETS en Linux. Lic. Leonardo de - Matteis. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur 2011
Introducción al uso de SOCKETS en Linux Lic. Leonardo de - Matteis Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur 2011 Interfaz de programación de aplicaciones NAPI
INTRODUCCIÓN A LA PROGRAMACIÓN CON SOCKETS. Celeste Campo Carlos García Rubio
INTRODUCCIÓN A LA PROGRAMACIÓN CON SOCKETS Celeste Campo ([email protected]) Carlos García Rubio ([email protected]) PROGRAMACIÓN CON SOCKETS Pág. 1 ÍNDICE 1. Introducción. 2. API de sockets: Llamadas al
Análisis Experimental de la Transmisión de Datos
UNIVERSIDAD TÉCNICA FEDERICO SANTA MARÍA DEPARTAMENTO DE ELECTRÓNICA Análisis Experimental de la Transmisión de Datos ELO322 Redes de Computadores I Pablo Ahumada D. Jorge Cápona G. Resumen Se muestra
Ejercicio Sockets Suma Resta. Descripción
Ejercicio Sockets Suma Resta Siguiendo con nuestra propuesta de construir embriones de servicios, como hemos hecho en la práctica programando un embrión de Telnet, un embrión de cliente de un servidor
Los sockets de Unix. Dr. Roberto Gómez Cárdenas ITESM-CEM. Dr. Roberto Gomez C. Diapo. No.
Los sockets de Unix Emisor Receptor Dr. Roberto Gómez Cárdenas ITESM-CEM [email protected] http//homepage.cem.itesm.mx/rogomez Dr. Roberto Gomez C. Diapo. No. 1 La comunicación - Comunicación ocurre a través
Programación de aplicaciones distribuidas usando sockets
Programación de aplicaciones distribuidas usando sockets 1 a Versión: José Luis Díaz. Octubre 1994. 2 a Versión: José Ramón Arias. Nov. 1998, Oct. 1999, Oct. 2000. Índice general 1. Programación de aplicaciones
Sistema Cliente Servidor Con Sockets
Sistema Cliente Servidor Con Sockets Rafael Benedicto Tovar Antonio Soler Muñoz 0 Índice 1. Resumen del proyecto 2 Introducción teórica 2.1 - Qué es un socket? 2.2 - Dominios de comunicación 2.3 - Tipos
Programación con Sockets
Programación con Sockets INTRODUCCIÓN 1 Qué son los Sockets? Son un mecanismo de comunicación entre procesos: Dentro de una misma máquina. Distribuidos en diferentes máquinas. Que pueden ser identificados
Programación en red sobre TCP/IP Interface sockets
Programación en red sobre TCP/IP Interface sockets Teresa Monreal y Pablo Ibáñez Area de Arquitectura y Tecnología de Computadores Departamento de Informática e Ingeniería de Sistemas 1 Indice Introducción.
COMUNICACIÓN ENTRE PROCESOS SOCKETS
COMUNICACIÓN ENTRE PROCESOS SOCKETS Diseño de Sistemas Operativos Curso 2007/08 Grupo: Mi30 Martín Santana, A. David Martínez Santana, Luis Ignacio Qué son?(definición) n) Los sockets son mecanismos de
AMPLIACION DE SISTEMAS OPERATIVOS SOCKETS AIRAN GODOY HERNANDEZ JOSE MARIA RODRIGUEZ RODRIGUEZ 5º INGENIERIA EN INFORMATICA
AMPLIACION DE SISTEMAS OPERATIVOS SOCKETS AIRAN GODOY HERNANDEZ JOSE MARIA RODRIGUEZ RODRIGUEZ 5º INGENIERIA EN INFORMATICA 1 Definición de Socket Punto de comunicación entre procesos, mediante el cual
Programación C/S Básica
1 de 16 Programación C/S Básica Enrique Alba Torres Universidad de Málaga (UMA) 2 de 16 Los servicios Internet se ofertan como sistemas Cliente/Servidor Los protocolos de base suelen ser peer-to-peer (igual-a-igual)
TimeOut RTT medido 1 5 seg. 2*5= 10 1 2 0,7 3 TimeOut 3 TimeOut 3 0,001 4 0,35 5 0,44
ARQUITECTURA DE REDES Y SERVICIOS DE TELECOMUNICACIÓN Junio 2014 Teoría: 1) Qué sucedería si por error recibiera UDP un datagrama UDP que originalmente iba destinado a otra máquina?. (0,5 ptos) 2) Asumiendo
Problemas de Redes de Computadores. Conjunto de problemas 1
Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1 Pregunta 1.1: Si configuro mi servidor Web para que no acepte conexiones desde la dirección IP 130.206.1.1,
SOCKET S. Alberto Castro Rojas
SOCKET S EL64E Alberto Castro Rojas 1 Interfaz de programación genérica Soporte de múltiples suites de protocolos de comunicación (familias) Representaciones de direcciones sin dependencias (endpoint)
Comunicación entre procesos mediante Sockets Preparado por Gabriel Astudillo Muñoz Escuela de Ingeniería Civil Informática Universidad de Valparaíso
1 Resumen Comunicación entre procesos mediante Sockets Preparado por Gabriel Astudillo Muñoz Escuela de Ingeniería Civil Informática Universidad de Valparaíso Este documento tiene como objetivo describir
Mecanismo(s) de intercambio de información entre 2 ó más computadores conectados entre sí o a través de otros.
Comunicaciones Comunicaciones: Mecanismo(s) de intercambio de información entre 2 ó más computadores conectados entre sí o a través de otros. Terminología: Trama: unidad de información a transmitir Medio:
Modem IBM Compatible. IBM Compatible. Ethernet IBM AS/400. Laser printer. Workstation. Mac II. El Interfaz. Socket. versión perliminar
IBM Compatible Modem IBM Compatible Ethernet IBM AS/400 Laser printer Workstation Mac II El Interfaz Socket versión perliminar ÍNDICE 1. INTRODUCCIÓN. 2. QUÉ ES UN SOCKET?. 2.1. Dominio de un socket. 2.2.
PRÁCTICA 2: Cliente-servidor UDP
PRÁCTICA 2: Cliente-servidor UDP El objetivo de esta práctica es la familiarización con aplicaciones elementales que usan los servicios de transporte de los sockets UDP. A lo largo de la práctica se realizarán
ARQUITECTURA DE REDES Laboratorio
1nsloo.cl ARQUITECTURA DE REDES Laboratorio Práctica 2: Ejercicios de aplicación de Sockets en C 1. OBJETIVOS. El objetivo de esta práctica es que el alumno llegue a conocer los principales conceptos relacionados
Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1
Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1 Preguntas cortas Pregunta 1.1: Si configuro mi servidor Web para que no acepte conexiones desde
Usando Internet Sockets Brian "Beej" Hall [email protected] Copyright 1995-2001 by Brian "Beej" Hall
Usando Internet Sockets Brian "Beej" Hall [email protected] Copyright 1995-2001 by Brian "Beej" Hall Historia Revision Version 1.0.0 August, 1995 Revised by: beej Initial version. Revision Version 1.5.5
Universidad Simón Bolívar Departamento de Computación y Tecnología de la Información Curso de Redes I CI-4815 Trimestre Septiembre Diciembre 2013
Universidad Simón Bolívar Departamento de Computación y Tecnología de la Información Curso de Redes I CI-4815 Trimestre Septiembre Diciembre 2013 Proyecto I Autores: Lairon Acosta. Carnet: 09-10927 Jueves
Bibliografía [COM00] Internetworking with TCP/IP, vol. 3, Cap. 2 y del 7 al 15.
Tema 5: El Modelo Cliente-Servidor Conceptos básicos. Características y estructura de un cliente. Obtención de información. Algoritmos del cliente TCP y UDP. Ejemplos. Características y estructura de un
TELEPROCESO Y SISTEMAS DISTRIBUIDOS
Universidad Nacional del Nordeste TELEPROCESO Y SISTEMAS DISTRIBUIDOS La Interfaz Socket Lic. Vanesa S. Roffé Año 2009 Introducción - Origen de la INTERFAZ SOCKET La Interfaz Socket es una API para redes
Desarrollo de Aplicaciones Distribuidas. Sockets. Daniel Avellaneda
Desarrollo de Aplicaciones Distribuidas Sockets Daniel Avellaneda Sockets en Java Qué es un Socket Un socket es una abstracción a través de la cual una aplicación pueden mandar y recibir datos. Un socket
Taller de Programación en Redes Stack TCP/IP - Sockets
Taller de Programación en Redes Stack TCP/IP - Sockets Lic. en Sistemas de Información - Universidad Nacional de Luján Dr. Gabriel Tolosa [email protected] Lic. Marcelo Fernández [email protected]
SCHOOL OF HACKING 2015 RETO BUFFER OVERFLOW
SCHOOL OF HACKING 2015 RETO BUFFER OVERFLOW INSTRUCCIONES Para la resolución del reto habrá que tener una máquina física o virtual Linux instalada al menos con las siguientes características: - Compilador
Práctica 1: sockets en Python
Práctica 1: sockets en Python Álvaro Navarro [email protected] Jesús M. González-Barahona [email protected] Infraestructura de Redes 5 o Ingeniería Informática 08/09 1. Fase 1: Cliente UDP Esta primera fase tiene
