Programación con Sockets



Documentos relacionados
COMUNICACIÓN ENTRE PROCESOS SOCKETS

Introducción a la programación con sockets en C

Introducción de Sockets en C.

Migrando aplicaciones a IPv6

Comunicación entre Procesos y Sockets

sockets Flujo (SOCK_STREAM) Comunicación bidireccional Confiable (entrega garantizada) Información ordenada en el destino Datagrama (SOCK_DGRAM)

Sockets (UDP) Tema 2.- Nivel de aplicación en Internet

SOCKET S. Alberto Castro Rojas

Arquitecturas cliente/servidor

ARQUITECTURAS CLIENTE/SERVIDOR

TELEPROCESO Y SISTEMAS DISTRIBUIDOS

Adaptación de aplicaciones a IPv6

Práctica 1 Programación de Aplicaciones Distribuidas: Sockets UDP. Laboratorio de Comunicación de Datos ITT Telemática Septiembre 2011

Estructuras y funciones de programación de sockets.

Tema 4.1: - TRANSPORTE-

UNIVERSIDAD DE CANTABRIA DEPARTAMENTO DE INGENIERÍA DE COMUNICACIONES GRUPO DE INGENIERÍA TELEMÁTICA

Mecanismos IPC: sockets

Tema 4: Sockets: Un interfaz con TCP/IP

Redes (IS20) Ingeniería Técnica en Informática de Sistemas. CAPÍTULO 8: El nivel de transporte en Internet

-> Todo socket viene definido por dos características fundamentales:

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

Sockets: funcionamiento y programación. Sockets tipo UNIX. MSc. Ivan A. Escobar

Diseño de aplicaciones distribuidas ÍNDICE

Problemas de Redes de Computadores. Conjunto de problemas 1

Sistemas Distribuidos. Sockets

Sockets (TCP) Tema 2.- Nivel de aplicación en Internet

WSAEADDRNOTAVAIL (10049) Dirección solicitada no se puede asignar.

Curso de Redes Computadores 1 Tema 3 Introducción a la capa de transporte. Interfaz de programación en redes. Sockets.

Qué es un socket? Dominios de comunicación. Tipos de sockets en el dominio AF_INET. Sockets Stream. Sockets Datagram. Sockets Raw

Ingeniería Técnica de Telecomunicación, esp. Telemática Universidad de Jaén

SOCKETS en Linux. Lic. Leonardo de - Matteis. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur 2011

Redes de Computadores Nivel de Aplicación: Programación con sockets I

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

Programación de aplicaciones distribuidas usando sockets

Sistemas Operativos Distribuidos

Programación con sockets

INTRODUCCIÓN. El protocolo TCP, funciona en el nivel de transporte del modelo de referencia OSI, proporcionando un transporte fiable de datos.

Tutorial BMS Server Studio UDP

Características de un lenguaje ideal para robótica

Modem IBM Compatible. IBM Compatible. Ethernet IBM AS/400. Laser printer. Workstation. Mac II. El Interfaz. Socket. versión perliminar

Análisis Experimental de la Transmisión de Datos

Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1

Tema 4 Sockets: Un interfaz con TCP/IP

Programación C/S Básica

Capa de TRANSPORTE. Ing. José Martín Calixto Cely Original: Galo Valencia P.

IMPLEMENTACIÓN DE APLICACIONES DE SEGURIDAD CON OPENSSL

El Protocolo IP. Tema 3. Servicio y Protocolo IP. Aplicaciones en Redes Locales 05/06

Clase de Sockets en lenguaje C. Prof. Ricardo González

Modelo TCP/IP. Página 1. Modelo TCP/IP

Nivel de Transporte en Internet

Anexo B. Comunicaciones entre mc y PC

Capas del Modelo ISO/OSI

Cátedra de Sistemas Distribuidos Escuela de Ingeniería Electrónica Departamento de Sistemas e Informática

Mecanismo(s) de intercambio de información entre 2 ó más computadores conectados entre sí o a través de otros.

Arquitectura de Redes y Servicios de Telecomunicación

Desarrollo de Aplicativos con winsockets


Control de accesos autónomo por huella dactilar

Práctica 2 Programación de Aplicaciones Distribuidas: Sockets TCP. Laboratorio de Comunicación de Datos ITT Telemática 26 de Septiembre 2011

Facultad de Ciencias del Hombre y la Naturaleza SISTEMAS OPERATIVOS DE REDES CICLO II Materia: Sistemas Operativos de Redes Tema:

Tipos de comunicación La comunicación puede ser:

1. PARAMETROS DE CALIDAD DE SERVICIO. -PERDIDAS DE PAQUETES EN LOS ROUTERS: Vía TCP son recuperables, pero las retransmisiones TCP son


Aspectos Básicos de Networking

Programación de sockets

Univ. de Concepción del Uruguay Facultad de Ciencias Agrarias Ingeniería Agrónoma

El Modelo de Referencia OSI

BREVE INTRODUCCIÓN A IPSEC

Protocolo PPP PPP Protocolo de Internet de línea serie (SLIP)

Índice general. Tipos de servicio de transporte. Por qué un nivel de transporte? TEMA 6 Funciones de los niveles superiores. Miguel A.

UNIVERSIDAD POLITÉCNICA DE PACHUCA SOCKETS EN JAVA

IPSEC. dit. Objetivo: proporcionar a IP (IPv4( IPv4, IPv6) ) mecanismos de seguridad. Servicios de Seguridad

S C TP: Una alternativa al protocolo TC P s obre Linux. Ing. Isaac Fernández Baca Peña

Práctica GESTIÓN Y UTILIZACIÓN DE REDES LOCALES. Curso 2001/2002. TCP/IP: protocolo TCP

INSTITUTO TECNOLÓGICO DE SALINA CRUZ. Fundamentos De Redes. Semestre Agosto-Diciembre Reporte De Lectura

Conceptos básicos de redes TCP/IP

Introducción a Sockets en Linux

Práctica 1: sockets en Python

CFGM. Servicios en red. Unidad 2. El servicio DHCP. 2º SMR Servicios en Red

TELECOMUNICACIONES Y REDES

TEMA: PROTOCOLOS TCP/IP

Bloque IV: El nivel de red. Tema 10: Enrutamiento IP básico

Curso de Arquitectura de Redes TCP/IP

Luis Villalta Márquez

Programación de Sockets

01/10/ Conjunto de protocolos TCP/IP. Contenido. a. TCP/IP Internet OSI. a. TCP/IP Internet OSI. b. Nivel de red Protocolo IP

FUNDAMENTOS DE REDES Arquitectura de Redes Modelo de referencia OSI y TCP/IP

a) Escenarios CISCO: Interconexión de redes mediante protocolos PPP, PAP, CHAP. NOTAS: Jorge García Delgado PPP:

Servidor FTP. Ing. Camilo Zapata Universidad de Antioquia

ESCUELA POLITÉCNICA NACIONAL

Transcripción:

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 mediante un nombre. Proporcionan un interfaz estándar para el acceso a diferentes protocolos de comunicaciones. Soportan, entre otros, la pila de protocolos TCP/IP. Acceso a servicios de transporte orientados a conexión (TCP) Acceso a servicios de transporte orientados a datagrama (UDP) Acceso a servicios de capa de red (IP) 2

Tipos de Sockets Stream (SOCK_STREAM): Flujo de datos bidireccional, fiable, ordenado y sin duplicados. En la recepción no se conservan marcas relacionadas con la forma en que fueron enviados. Datagrama (SOCK_DGRAM): Flujo de datos bidireccional, sin garantías de fiabilidad, orden o evitación de duplicados. Los datos se recibes en los mismos bloques en que fueron enviados. Otros tipos: Raw (SOCK_RAW) Paquetes Secuenciados (SOCK_SEQPAQUET) 3

Dominios de Sockets Cada socket está asociado a un dominio de comunicaciones. Un dominio es una abstracción introducida para encapsular propiedades comunes de los sockets involucrados en la comunicación: Esquema usado para nombre el socket. Tipos de sockets disponibles dentro del dominio. Protocolos de comunicaciones utilizados.... La familia que soporta la pila de protocolos TCP/IP es: PF_INET o AF_INET 4

Nombres (I) La estructura del nombre o dirección de un socket depende de la familia a la que pertenece. La API utiliza una estructura genérica en la declaración de las funciones. struct sockaddr { uint8_t sa_len; sa_family_t sa_family; // address family: AF_XXX value char sa_data[14]; // protocol specific address }; Proporciona estructuras particularizadas para cada familia de sockets soportada. struct sockaddr_in struct sockaddr_un 5

Nombres (II) longitud familia longitud AF_INET longitud AF_LOCAL nº puerto (2 bytes) Dir IPv4 (4 bytes) datos (14 bytes) relleno (8 bytes) pathname (hasta 104 bytes) Longitud fija: 16 bytes Longitud fija: 16 bytes Longitud variable 6

Rellenando la una dirección: Ejemplo I: sock_addr.sin_addr.s_addr = htonl(inaddr_any); sock_addr.sin_port = htons(0); sock_addr.sin_family = AF_INET; Ejemplo II: sock_addr.sin_addr.s_addr = inet_addr( 128.59.69.7 ); sock_addr.sin_port = htons(5115); sock_addr.sin_family = AF_INET 7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

Programación con Windows Sockets (I) Tipo de dato del socket: SOCKET La validez de un socket se comprueba comparando con INVALID_SOCKET Estilo BSD: s = socket(...); if (s == -1) /* or s < 0 */ {...} Estilo recomendado: s = socket(...); if (s == INVALID_SOCKET) {...} 25

Programación con Windows Sockets (II) Función Select() y FD_* La sintaxis y funcionalidad se mantiene, aunque: Sólo es aplicable a sockets. El número máximo de descriptores a comprobar no se emplea Los conjuntos de sockets se representan con el tipo fd_set, aunque se implementan como un array de sockets. Para evitar problemas de compatibilidad se recomienda emplear las macros FD_XXX para: Activar Inicializar Borrar Comprobar dichos conjuntos. 26

Programación con Windows Sockets (III) Códigos de Error La causa de un error no está disponible a través de la variable errno. Para acceder a los códigos de error debe usarse la función WSAGetLastError(). Para mantener compatibilidad a nivel de código con BSD, se puede hacer la siguiente definición: En Windows: #define errno WSAGetLastError() En UNIX: int WSAGetLastError() {return errno} 27

Programación con Windows Sockets (IV) Códigos de Error (cont.) Estilo BSD: r = recv(...); if (r == -1 && errno == EWOULDBLOCK) {...} Estilo recomendado: r = recv(...); if (r == -1 && WSAGetLastError()== EWOULDBLOCK) {...} 28

Programación con Windows Sockets (V) Cambio de nombre en funciones: En dos casos ha sido necesario cambiar el nombre de las funciones usadas por la librería Berkeley Sockets: close() closesocket() ioct() ioctlsocket() / WSAIoctl() Número máximo de sockets soportados El número máximo de sockets que puede usar una determinada aplicación depende de la implementación de Winsock empleada y se conoce a través de WSAStartUp() Además existe la constante FD_SETSIZE que fija el tamaño máximo de las estructuras fd_set. Por defecto es 64. 29

Programación con Windows Sockets (VI) Fichero de inclusión: Winsock2.h Comprobación del fallo de una función: Estilo BSD: r = recv(...); if (r == -1 && errno == EWOULDBLOCK) {...} Estilo recomendado: r = recv(...); if (r == SOCKET_ERROR && WSAGetLastError()== EWOULDBLOCK) {...} 30

Programación con Windows Sockets (VII) Orden de los bytes: El orden de los bytes en la arquitectura Intel es diferente del empleado por la red. Cualquier referencia a direcciones IP o números de puerto pasadas desde o hacia una función WinSock debe estar en orden de red. Inicialización y terminación de los programas: Es necesario usar la función WSAStartup() antes de hacer ninguna llamada a las funciones de sockets para inicializar la DLL compartida (winsock.dll) Es necesario ejecutar la función WSACleanup() al finalizar para liberar los recursos ocupados en la DLL 31