INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf ·...

168
INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS INGENIERÍA DE PROTOCOLOS INGENIERÍA DE PROTOCOLOS INGENIERÍA DE PROTOCOLOS INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES DE COMUNICACIONES (MÓDULO 2) (MÓDULO 2) (MÓDULO 2) (MÓDULO 2) LUIS MENGUAL (c)

Transcript of INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf ·...

Page 1: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS INGENIERÍA DE PROTOCOLOS DE COMUNICACIONESDE COMUNICACIONES

(MÓDULO 2)(MÓDULO 2)(MÓDULO 2)(MÓDULO 2)

LUIS MENGUAL (c)

Page 2: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOSF. I. M.

F. I. M.

L.S.I.I.S

L.S.I.I.S

INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOSDE COMUNICACIONESDE COMUNICACIONES

(MÓDULO 2)

http://www.personal.fi.upm.es/~lmengual/inicio_IP.html

LUIS MENGUAL GALÁN

LUIS MENGUAL (c)

LUIS MENGUAL GALÁN

Page 3: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

OBJETIVOSOBJETIVOSOBJETIVOSOBJETIVOS

Describir las técnicas de descripción formal utilizadas para especificar formalmente protocolos de comunicaciones yespecificar formalmente protocolos de comunicaciones y presentar sus ventajas en la ingeniería de protocolos

Analizar las interfaces de programación más utilizadas en el entorno corporativo: Sockets de Berkeley Windowsentorno corporativo: Sockets de Berkeley, Windows Sockets, Sockets en Java.

Comprender las técnicas de implementación de aplicaciones di t ib id tili d l dif t i t f ddistribuidas utilizando las diferentes interfaces de programación y el modelo cliente-servidor.

Estudiar el rendimiento de las implementaciones de software cliente y servidor.

LUIS MENGUAL (c)

Page 4: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

ÍNDICEÍNDICEÍNDICEÍNDICE1. ESPECIFICACIÓN, DISEÑO Y VERIFICACIÓN DEPROTOCOLOS

1.1 Niveles de descripción de una arquitectura estructurada1.1.1 Definición de la Arquitecturaq1.1.2 Especificación de servicios1.1.3 Especificación formal de protocolos

1.2 Desarrollo de Protocolos 1 2 1 E ifi ió F l1.2.1 Especificación Formal

1.2.1.1 Validación1.2.1.2 Verificación1.2.1.3 Análisis de Prestaciones

1.2.2 Implementación1.2.3 Conformidad

1.3 Metodologías de Especificación1 3 1 L j N l1.3.1 Lenguaje Natural1.3.2 Grafos de Control de Comunicaciones1.3.3 Máquinas de Estados Finitos Extendidas1.3.4 Redes de Petri

LUIS MENGUAL (c)

1.3.4 Redes de Petri1.3.5 SDL1.3.6 Estelle1.3.7 Lotos

Page 5: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

ÍNDICEÍNDICEÍNDICEÍNDICE1

2. IMPLEMENTACIÓN DE PROTOCOLOS (I)2. IMPLEMENTACIÓN DE PROTOCOLOS (I)

2.1 Modelo cliente-servidor2.1.1 Terminología y conceptose o og a y co ceptos2.1.2 Comparación con otros modelos

2.1.2.1 Aplicaciones peer to peer,2.1.2.2 Teoría de Agentesg

2.2 Modelo Unix2.2.1 Comunicación entre procesos2.2.2 Procesos Concurrentes2.2.3 E/S asíncronas

2.3 Interfaces de Programación de Aplicaciones (API, AplicationProgramming Interface)

2.3.1 Funcionalidad y especificación de las Interfaces deProgramación2.3.2 Interfaces existentes

LUIS MENGUAL (c)

Page 6: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

ÍNDICEÍNDICEÍNDICEÍNDICE1

2. IMPLEMENTACIÓN DE PROTOCOLOS (II)2. IMPLEMENTACIÓN DE PROTOCOLOS (II)

2.4 Interfaz Sockets de Berkeley2.4.1 Algoritmos de diseño Software Clientego t os de d se o So t a e C e te

2.4.1.1 Arquitectura del cliente2.4.1.2 Tipos de clientes (TCP/UDP)

2.4.2 Implementación Software Clientep2.4.2.1 Ejemplos clientes TCP/UDP

2.4.3 Algoritmos de diseño Software Servidor2.4.3.1 Arquitectura del servidor2.4.3.2 Tipos de servidores (TCP/UDP, concurrentes, iterativos)

2.4.4 Implementación Software Servidor2.4.4.1 Servidores Iterativos no Orientados a Conexión (UDP)2.4.4.2 Servidores Iterativos Orientados a Conexión (TCP)2.4.4.3 Servidores Concurrentes orientados a conexión (TCP)2.4.4.4 Servidores Concurrentes. Un solo proceso TCP2 4 4 5 S id M lti t l (TCP UDP)

LUIS MENGUAL (c)

2.4.4.5 Servidores Multiprotocolo (TCP, UDP)2.4.4.6 Servidores Multiservicio (TCP, UDP)

Page 7: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

ÍNDICEÍNDICE1

ÍNDICEÍNDICE

2. IMPLEMENTACIÓN DE PROTOCOLOS (III)2.4.5 Eficiencia y gestión de la concurrencia en servidores

2 4 5 1 El ió t d l it ti t2.4.5.1 Elección entre un modelo iterativo y concurrente2.4.5.2 Nivel de concurrencia2.4.5.3 Concurrencia en función de la demanda2 4 5 4 Coste de la concurrencia2.4.5.4 Coste de la concurrencia

2.4.6 Concurrencia en clientes2.4.6.1 Ventajas de la concurrencia2 4 6 2 Implementaciones con varios procesos2.4.6.2 Implementaciones con varios procesos2.4.6.3 Implementación con un solo proceso

2.4.7 Procedimientos Remotos2 4 7 1 Servicios Básicos sobre RPC2.4.7.1 Servicios Básicos sobre RPC2.4.7.2 Construcción de aplicaciones

LUIS MENGUAL (c)

Page 8: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

ÍNDICEÍNDICEÍNDICEÍNDICE

2. IMPLEMENTACIÓN DE PROTOCOLOS (IV)2.5 Interfaz Windows Sockets

2.5.1 Comparación sockets de Berkeley2.5.1 Comparación sockets de Berkeley2.5.2 Desarrollo de aplicaciones

2.6 Interfaz sockets en Java2.6.1. Introducción2.6.2. Direcciones de Internet2.6.3. Sockets TCP

2 6 3 1 Sockets para clientes2.6.3.1 Sockets para clientes 2.6.3.2 Sockets para servidores 2.6.3.3 Servidores multiusuario 2 6 3 4 Sockets seguros2.6.3.4 Sockets seguros

2.6.4. Datagramas y sockets UDP2.6.5. Sockets multicast2 6 6 C i URL

LUIS MENGUAL (c)

2.6.6. Conexiones a URLs2.6.7. Otras alternativas (Java RMI, Java IDL)

Page 9: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

BIBLIOGRAFÍABIBLIOGRAFÍABIBLIOGRAFÍABIBLIOGRAFÍA

“USING FORMAL DESCRIPTION TECHIQUES” An Introduction USING FORMAL DESCRIPTION TECHIQUES An Introduction to Estelle, Lotos and SDL. Edited by K.J. Turner. John Wiley &Sons 1993

“INTERNETWORKING WITH TCP/IP CLIENT-SERVER INTERNETWORKING WITH TCP/IP. CLIENT-SERVER PROGRAMMING AND APLICATIONS BSD SOCKETS” VERSION VOLUME III. D. Comer, R. Stevens. Prentice Hall. 1993

“UNIX NETWORK PROGRAMMING” R Stevens Prentice Hall UNIX NETWORK PROGRAMMING . R. Stevens, Prentice Hall. 1998

“INTERNETWORKING WITH TCP/IP VOLUME III: CLIENT-SERVER PROGRAMMING AND APPLICATIONS” WindowSERVER PROGRAMMING AND APPLICATIONS . Window Sockets Version. D. Comer, R. Stevens. Prentice Hall. 1997

“NETWORK PROGRAMMING FOR MICROSOFT WINDOWS”. A. Jones J Ohlund Second Edition 2002Jones, J. Ohlund. Second Edition 2002

“JAVA NETWORK PROGRAMMING”. E. R. Harold. O’Reilly 2000, 2ª Edition

LUIS MENGUAL (c)

“JAVA SECURITY”. S. Oaks. O’Reilly 2001, 2ª Edition

Page 10: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

COMPUTACIÓN DISTRIBUIDACOMPUTACIÓN DISTRIBUIDACOMPUTACIÓN DISTRIBUIDACOMPUTACIÓN DISTRIBUIDA

MODELO CLIENTE-SERVIDOR

cliente servidorSOLICITA SERVICIOS ESPERA LA PETICIÓN DE UN CLIENTEclienteLAS PETICIONES SE HACEN

A TRAVÉS DE UN APIPROCESAMIENTO DE LAINTERFAZ GRÁFICA DE USUARIO

UN CLIENTEPROCESA LA PETICIÓNPUEDE ACEPTA O RETORNARCANTIDADES ARBITRARIAS DEDATOS

PROCESOCLIENTE

PROCESOSERVIDOR

LUIS MENGUAL (c)

Page 11: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

COMPUTACIÓN DISTRIBUIDACOMPUTACIÓN DISTRIBUIDACOMPUTACIÓN DISTRIBUIDACOMPUTACIÓN DISTRIBUIDA

LLAMADAS A PROCEDIMIENTOS REMOTOSREMOTE PROCEDURE CALL (RPC)

cliente servidor servidorcliente servidor servidor

call remoteproc. A

call remoteproc. Bproc. A proc. B

Respondto caller

Respondto callerRespondto caller

exit

LUIS MENGUAL (c)

Page 12: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

COMPUTACIÓN DISTRIBUIDACOMPUTACIÓN DISTRIBUIDACOMPUTACIÓN DISTRIBUIDACOMPUTACIÓN DISTRIBUIDA

AGENTES MÓVILESAGENTES MÓVILES

servidor

clienteSERVIDOR

CÓDIGOPROCESOCLIENTE

AGENTE DELCLIENTE

CÓDIGO

LUIS MENGUAL (c)

Page 13: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTRODUCCIÓN: AGENTESINTRODUCCIÓN: AGENTESINTRODUCCIÓN: AGENTESINTRODUCCIÓN: AGENTES

“Un agente es un proceso software que representa a un cliente y que se mueve a través de la red tomando ciertas decisiones para atender a un servicio”p

Un agente software tiene tres dimensiones:– Representación

» Un agente representa a un usuario frente a otros sistemas y» Un agente representa a un usuario frente a otros sistemas y otros agentes

– Movilidad» Un agente se mueve por la red (pueden tener un itinerario de» Un agente se mueve por la red (pueden tener un itinerario de

viaje: lista de destinos y plan de viaje)» Los agentes pueden recoger información a medida que viajan

de una máquina a otra– Inteligencia

» Capacidad de un agente para aplicar el conocimiento para la resolución de problemas

LUIS MENGUAL (c)

» Un agente puede tomar decisiones basandose en los datos que recogen

Page 14: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTRODUCIÓN: AGENTESINTRODUCIÓN: AGENTESINTRODUCIÓN: AGENTESINTRODUCIÓN: AGENTES

Ejecuta acciones

Ejecuta accionesrecoge información

Toma decisiones

Ejecuta accionesrecoge información

Toma decisiones

agenteEjecuta acciones

recoge información

agente agente

INTERNET agente

Toma decisiones

agente agenteagente

Ejecuta accionesrecoge información

Ejecuta accionesrecoge información

LUIS MENGUAL (c)

recoge informaciónToma decisiones

recoge informaciónToma decisiones

Page 15: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

COMPUTACIÓN DISTRIBUIDACOMPUTACIÓN DISTRIBUIDACOMPUTACIÓN DISTRIBUIDACOMPUTACIÓN DISTRIBUIDA

APPLETS EN JAVAAPPLETS EN JAVA

idclienteEl usuario pide una apple en java

servidor

NAVEGADORWEB

p pp j

Llega una apple en java

Arranca la máquinaVirtual de java y

Á

Virtual de java ySe ejecuta la applet

LUIS MENGUAL (c)

MÁQUINA VIRTUAL JAVA

Page 16: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

MODELO CLIENTEMODELO CLIENTE --SERVIDORSERVIDORMODELO CLIENTE MODELO CLIENTE SERVIDORSERVIDOR

UN SERVIDOR ES CUALQUIER PROGRAMA QUE ESPERA UNA PETICIÓN DE UN CLIENTECLIENTE

UN CLIENTE EN UN PROGRAMA QUE ENVÍA UNA PETICIÓN A UN SERVIDOR Y ESPERA UNA RESPUESTAUNA RESPUESTA

UN SERVIDOR DEBE CONTEMPLAR ASPECTOS TALES COMO:ASPECTOS TALES COMO:

– AUTENTIFICACIÓN– AUTORIZACIÓN– SEGURIDAD EN LOS DATOS– SEGURIDAD EN LOS DATOS– PROTECCIÓN

LUIS MENGUAL (c)

Page 17: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

MODELO CLIENTE MODELO CLIENTE --SERVIDORSERVIDORARQUITECTURA TCP/IP

TCP/IP PROPORCIONA LOS MECANISMOS C / O O C O OS C S OSBÁSICOS PARA TRANSFERIR DATOS

TCP/IP PERMITE ESTABLECER LA COMUNICACIÓN ENTRE DOS PROGRAMAS DE APLICACIÓNENTRE DOS PROGRAMAS DE APLICACIÓN

TCP/IP NO ESPECIFICA COMO LOS PROGRAMADORES DEBERIAN ORGANIZAR LOS PROGRAMAS DE APLICACIÓN EN UN ENTORNO DISTRIBUIDOEL MODELO MAS EXTENDIDO Y DESARROLLADO EL MODELO MAS EXTENDIDO Y DESARROLLADO PARA LA COMUNICACIÓN ENTRE APLICACIONES ES EL MODELO CLIENTE-SERVIDOR

LUIS MENGUAL (c)

Page 18: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

MODELO CLIENTE MODELO CLIENTE --SERVIDORSERVIDORARQUITECTURA TCP/IP

SI CLIENTE Y SERVIDOR UTILIZAN EL PROTOCOLO UDP TENEMOS UNAPROTOCOLO UDP TENEMOS UNA COMUNICACIÓN NO ORIENTADA A CONEXIÓN

SI CLIENTE Y SERVIDOR UTILIZAN EL SI CLIENTE Y SERVIDOR UTILIZAN EL PROTOCOLO TCP TENEMOS UNA COMUNICACIÓN ORIENTADA A CONEXIÓN

UN SERVIDOR PUEDE A SU VEZ ACTUAR COMO CLIENTE PARA ATENDER UNA PETICIÓN

LUIS MENGUAL (c)

Page 19: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

MODELO CLIENTE MODELO CLIENTE --SERVIDORSERVIDORARQUITECTURA TCP/IP

EL PROTOCOLO TCP PROPORCIONA FIABILIDAD:

USA NÚMEROS DE SECUENCIA– USA NÚMEROS DE SECUENCIA– ELIMINA PAQUETES DUPLICADOS – EFECTUA RETRANSMISIONES

PROPORCIONA CONTROL DE FLUJO– PROPORCIONA CONTROL DE FLUJO– COMPUTA UN CHECKSUM SOBRE LOS DATOS– INFORMA AL CLIENTE Y SERVIDOR SI LA RED ES INOPERANTE

EL PROTOCOLO UDP NO GARANTIZA UNA ENTREGA FIABLE

– UNA PETICIÓN DE UN CLIENTE (O UNA RESPUESTA DEL (SERVIDOR) SE PUEDE PERDER DUPLICAR, RETARDAR, O ENTREGAR FUERA DE ORDEN

– LOS PROGRAMAS DE APLICACIÓN DEL CLIENTE Y SERVIDOR DEBEN ADOPTAR LAS ACCIONES OPORTUNAS PARA

LUIS MENGUAL (c)

DEBEN ADOPTAR LAS ACCIONES OPORTUNAS PARA DETECTAR Y CORREGIR ERRORES

Page 20: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

MODELO CLIENTE MODELO CLIENTE --SERVIDORSERVIDORARQUITECTURA TCP/IP

LOS PROGRAMAS DE APLICACIÓN CLIENTE- LOS PROGRAMAS DE APLICACIÓN CLIENTESERVIDOR USARÁN EL PROTOCOLO UDP SI:

– LOS PROGRAMAS DE APLICACIÓN SE HAN DISEÑADO PARA MANEJAR FIABLIDAD Y CONTROL DE ERRORESMANEJAR FIABLIDAD Y CONTROL DE ERRORES

– EL PROTOCOLO DE APLICACIÓN UTILIZA BROADCAST O MULTICASTLA APLICACIÓN NO PUEDE TOLERAR RETARDOS EN LA– LA APLICACIÓN NO PUEDE TOLERAR RETARDOS EN LA CREACIÓN DE CIRCUITOS VIRTUALES TCP

– SE UTILIZAN EN EL ENTORNO DE UNA RED DE ÁREA LOCAL

LUIS MENGUAL (c)

Page 21: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

CONCURRENCIACONCURRENCIACONCURRENCIACONCURRENCIA

UN SERVIDOR DEBE SER PROGRAMADO EXPLÍCITAMENTE PARA MANEJAR PETICIONES CONCURRENTESCONCURRENTES

UN PROCESO TIENE ASOCIADO – EL PROPIETARIO– UN PUNTERO DE INSTRUCCIONES– EL PROGRAMA OBJETO– LAS LOCALIZACIONES EN MEMORIA DE LAS ÁREAS DE TEXTO Y

DATOS

EL S.O. DEL SERVIDOR DEBE PERMITIR QUE VARIOS PROCESOS EJECUTEN CONCURRENTEMENTE UNA PARTE DEL CÓDIGO

CADA PROCESO TIENE SU PROPIA COPIA INDEPENDIENTE DE VARIABLES ASOCIADAS

LUIS MENGUAL (c)

DE VARIABLES ASOCIADAS

Page 22: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

CONCURRENCIACONCURRENCIAOSOSEJEMPLOSEJEMPLOS

#Iinclude <stdio.h>int sum;

#Iinclude <stdio.h>int sum;

main() ´{

int i;

main() ´{

int i;int i;sum=0for (i=1 ; i<5 ; i++) {

printf(“el valor de i es %d\n” i);

int i;sum=0fork(); /*crea un nuevo proceso */ for (i=1 ; i<5 ; i++) {printf( el valor de i es %d\n , i);

fflush(stdout);sum+= i;

}

( ; ; ) {printf(“el valor de i es %d\n”, i);fflush(stdout);sum+= i;}

printf(“la suma es %d\n”,sum);exit(0);

}

}printf(“la suma es %d\n”,sum);exit(0);

LUIS MENGUAL (c)

}}

Page 23: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

CONCURRENCIACONCURRENCIACONCURRENCIACONCURRENCIA

FORK System Call: INT FORK()INT FORK()

– LA LLAMADA AL SISTEMA FORK CREA UNA COPIA DEL PROCESO QUE SE ESTA EJECUTANDOEL PROCESO QUE EJECUTO EL FORK SE LLAMA– EL PROCESO QUE EJECUTO EL FORK SE LLAMA PROCESO PADRE Y EL NUEVO PROCESO CREADO SE LLAMA PROCESO HIJOLA LLAMADA AL SISTEMA SE HACE UNA VEZ (POR EL– LA LLAMADA AL SISTEMA SE HACE UNA VEZ (POR EL PROCESO PADRE) PERO RETORNA DOS VALORES DISTINTOS

– EL VALOR DE RETORNO EN EL PROCESO PADRE ESEL VALOR DE RETORNO EN EL PROCESO PADRE ES EL IDENTIFICADOR (ID) DEL PROCESO HIJO CREADO

– EL VALOR DE RETORNO EN EL PROCESO HIJO ES “0”SI LA LLAMADA AL SISTEMA NO TIENE ÉXITO SE

LUIS MENGUAL (c)

– SI LA LLAMADA AL SISTEMA NO TIENE ÉXITO SE RETORNA “-1”

Page 24: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

CONCURRENCIACONCURRENCIACONCURRENCIACONCURRENCIA

i ()main() {

int pid;if ( (pid=fork()) == -1) {

perror(“can´t fork”);exit(1);( )

} else if (pid==0) {/*child process*/printf(“child: child pid = %d, parent pid=%d\n”,getpid(),getppid());printf( child: child pid %d, parent pid %d\n ,getpid(),getppid());exit(0);

}else {/*parent process*// parent process /printf(“parent: child pid=%d,parent pid=%d\n”,pid,getpid());exit(0)

}

LUIS MENGUAL (c)

}

}

Page 25: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

CONCURRENCIACONCURRENCIACONCURRENCIACONCURRENCIA

EXECVE System Callint execve(char *pathname, char **argv,char **envp) ( p , g , p)

– LA LLAMADA EXCECVE TOMA TRES PARÁMETROS» EL NOMBRE DE UN FICHERO QUE TIENE UN PROGRAMA

OBJETO EJECUTABLEOBJETO EJECUTABLE» UN PUNTERO A UNA LISTA DE ARGUMENTOS PARA PASAR

AL PROGRAMA» UN PUNTERO A UNA LISTA DE ENTORNO» UN PUNTERO A UNA LISTA DE ENTORNO

– EXECVE REEMPLAZA EL CODIGO QUE EL PROCESO ACTUAL EJECUTA CON EL CÓDIGO DEL NUEVO PROGRAMAPARA CREAR UN NUEVO PROCESO QUE EJECUTE EL CÓDIGO– PARA CREAR UN NUEVO PROCESO QUE EJECUTE EL CÓDIGO OBJETO DE UN FICHERO UN PROCESO DEBE LLAMAR A FORK Y EXECVE.LA LLAMADA EXECVE NO CAMBIA EL IDENTIFICADOR DE

LUIS MENGUAL (c)

– LA LLAMADA EXECVE NO CAMBIA EL IDENTIFICADOR DE PROCESO

Page 26: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

CONCURRENCIACONCURRENCIACONCURRENCIACONCURRENCIA

main() {

int pid;int pid;if ( (pid=fork()) == -1) {

perror(“can´t fork”);exit(1);

} else if (pid==0) {/*child process*/

.execve(“newprogram”, ..., .....)exit(0);( );

}else {/*parent process*/

}

LUIS MENGUAL (c)

}

}

Page 27: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

E/S ASINCRONASE/S ASINCRONASE/S ASINCRONASE/S ASINCRONAS

SELECT System Call int select(int nfds, fd_set *readfds,fd_set *writefds, ( , _ , _ ,fd_set *exfds, struct timeval *timeout)

– LA LLAMADA AL SISTEMA SELECT PERMITE QUE UN PROCESO DE USUARIO ORDENE AL KERNEL QUE ESPERE QUE SE PRODUZCANUSUARIO ORDENE AL KERNEL QUE ESPERE QUE SE PRODUZCAN OPERACIONES DE E/S SOBRE UN COJUNTO DE DESCRIPTORES DE FICHEROS Y AVISE AL PROCESO CUANDO UNO DE ESTOS EVENTOS OCURRA.

– FD_SET ES UNA ESTRUCTURA DE BITS, O MÁSCARA QUE IDENTIFICA (MAPEA) UN CONJUTO DE DESCRIPTORES DE FICHEROS

– SELECT RETORNA EL DESCRIPTOR DE FICHERO EN EL QUE SE PRODUCEN OPERACIONES DE E/S; “0” SI SE SUPERA UN LÍMITE DE TIEMPO Y -1 SI SE PRODUCE UN ERROR

Á

LUIS MENGUAL (c)

– SI EL PARÁMETRO DE TIMEOUT ES NULO SE ESPERA INDEFINIDAMENTE HASTA QUE SE PRODUZCA UNA OPERACIÓN E/S

Page 28: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

E/S ASINCRONASE/S ASINCRONASE/S ASINCRONASE/S ASINCRONAS

LA ESTRUCTURA FD_SET SE MANEJA CON LAS MACROS:LAS MACROS:

– FD_ZERO(fd_set *fdset) INICIILIZA LA MASCARA fdsetFD SET(int fd fd set *fdset) :– FD_SET(int fd, fd_set *fdset) : AÑADE EL DESCRIPTOR fd AL CONJUNTO fdset

– FD_CLR(int fd, fd_set *fdset) : BORRA EL DESCRIPTOR fd DEL CONJUNTO fdsetBORRA EL DESCRIPTOR fd DEL CONJUNTO fdset

– FD_ISSET(int fd, fd_set *fdset) : TESTEA SI SOBRE EL DESCRIPTOR fd SE HA PRODUCIDO UNA OPERACION DE E/SPRODUCIDO UNA OPERACION DE E/S

LUIS MENGUAL (c)

Page 29: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

DESCRIPTORESDESCRIPTORESC OSC OSDE FICHEROSDE FICHEROS

EN UNIX CUANDO UNA APLICACIÓN NECESITA EJECUTAR UNA LLAMADA DE E/S LLAMA A LA FUNCION “CREAT” PARA CREAR UN DESCRIPTOR DE FICHERO

EL S.O. MANTIENE UNA TABLA DE DESCRIPTORES DE FICHERO (ARRAY DE PUNTEROS) PARA CADA PROCESO

TABLA DE DESCRIPTORES UNA POR PROCESO

ESTRUCTURA INTERNA PARA FICH 0

ESTRUCTURA INTERNA PARA FICH 1

ESTRUCTURA INTERNA PARA FICH 0

ESTRUCTURA INTERNA PARA FICH 2

LUIS MENGUAL (c)

Page 30: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

PIPESPIPESPIPESPIPES

PIPE System Callint pipe(int *filedes);

UNA PIPE PROPORCIONA UN FLUJO UNIDIRECCIONAL DE– UNA PIPE PROPORCIONA UN FLUJO UNIDIRECCIONAL DE DATOS

– LA LLAMADA AL SISTEMA “PIPE” RETORNA DOS DESCRIPTORES DE FICHERODESCRIPTORES DE FICHERO :

» “filedes[0]“ QUE ES ABIERTO PARA LECTURA Y » “filedes[1]” QUE ES ABIERTO PARA ESCRITURA

– UNA PIPE SE PUEDE UTILIZAR PARA LA COMUNICACIÓN ENTRE PROCESOS PADRE-HIJO

» EL PROCESO PADRE CREA UNA PIPE » EJECUTA UN FORK CREANDOSE UN PROCESO HIJO» EL PROCESO PADRE CIERRA EL DESCRIPTOR DE LECTURA» EL PROCESO HIJO CIERRA EL DESCRIPTOR DE ESCRITURA

LUIS MENGUAL (c)

» EL PROCESO HIJO CIERRA EL DESCRIPTOR DE ESCRITURA

Page 31: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

PIPESPIPESPIPESPIPES

main( ){

int pipefd[2]. n;h b ff[100]char buff[100];

if ( pipe (pipefd) < 0 ) {(“ ´t i ”)perror (“can t open pipe”);

}printf(“read fd= %d, write fd = %d\n”, pipefd[0], pipefd[1]);if (write(pipefd[1] “hello word\n” 12) != 12)if (write(pipefd[1], hello word\n , 12) != 12)

err_sys(“write error”);

if ( (n= read(pipefd[0] buff sizeof(buff) ) ) <= 0 )if ( (n= read(pipefd[0], buff, sizeof(buff) ) ) <= 0 )err_sys(“read error”);

write (1, buff, n); /* fd 1 = stdout */exit(0);

LUIS MENGUAL (c)

exit(0);}

Page 32: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

PIPESPIPESPIPESPIPES

PROCESO PADRE PROCESO HIJOPROCESO PADRE PROCESO HIJO

WRITE fdREAD fd WRITE fdREAD fd

KERNELKERNEL

PIPE

FLUJO DE DATOS

LUIS MENGUAL (c)

FLUJO DE DATOS

Page 33: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

PIPESPIPESPIPESPIPES

main( )main( ){

int pipefd[2]. child;

if ( pipe (pipefd) < 0 ) {err_sys (“can´t open pipe”);exit( );exit( );

}if ( (child = fork( ) ) == -1)

err sys “fork”);err_sys fork );else if (child) { // PROCESO PADRE

char buf [1024 ];close (pipefd[1]);(p p [ ]);if (read(pipefd[0], buf, 1024) < 0)

err_sys (“reading message”);printf(“--> %s\n”, buf);

LUIS MENGUAL (c)

close(pipefd[0]);

Page 34: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

PIPESPIPESPIPESPIPES

} else { // PROCESO HIJO} else { // PROCESO HIJO

l ( i fd[0])close (pipefd[0]);if (write(pipefd[1], DATA, sixeof(DATA) ) < 0)

err_sys (“writing message”);close(pipefd[1]);

}exit(0);( );

}

LUIS MENGUAL (c)

Page 35: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

PIPESPIPESPIPESPIPES

PROCESO PADRE PROCESO HIJO

WRITE 1 fd WRITE 2 fd

READ 2 fd READ 1 fd

KERNEL

PIPE 1FLUJO DE DATOS

PIPE 2

FLUJO DE DATOS

LUIS MENGUAL (c)

FLUJO DE DATOS

Page 36: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

PIPESPIPESPIPESPIPESmain( )( ){

int childpid, pipe1fd[2], pipe2fd[2];

if ( pipe (pipe1fd) < 0 || pipe(pipe2fd)<0 ) err_sys (“can´t open pipes”);

if ( (child pid= fork( ) ) < 0 ) {err_sys (“can´t fork”);

} l if ( hild i > 0) { /* t */} else if (childpi > 0) { /* parent */close (pipe1fd[0]);close (pipe2fd[1]);client (pipe1fd[1] pipe2fd[0] );client (pipe1fd[1], pipe2fd[0] );while (wait ( (int*) 0) != childpid )close (pipe1fd[1]);close (pipe2fd[0]);

LUIS MENGUAL (c)

close (pipe2fd[0]);exit (0);

Page 37: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

PIPESPIPESPIPESPIPES

{ else { /* child */close (pipe1fd[1]);close (pipe2fd[0);

server (pipe1fd[0], pipe2fd[1] );

close (pipe1fd[0]);close (pipe2fd[1]);

it (0)exit (0);}

}

LUIS MENGUAL (c)

Page 38: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

PIPESPIPESPIPESPIPES

PROCESO h PROCESO t PROCESO lPROCESO who

WRITE 2 fd

PROCESO sort PROCESO lpr

WRITE 1 fd READ 2 fdREAD 1 fd

KERNELKERNEL

PIPE 1 PIPE 2FLUJO DE DATOS FLUJO DE DATOS

LUIS MENGUAL (c)

who | sort | lpr

Page 39: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

PIPES PIPES CC O SCC O SBIDIRECCIONALESBIDIRECCIONALES

SOCKETPAIR System Callint socketpair(int family int type int protocolint socketpair(int family, int type, int protocol, int sockvec[2])

– ESTA LLAMADA AL SISTEMA RETORNA DOS DESCRIPTORES DE SOCKET : sockvec[0] y sockvec[1]

– LOS DESCRIPTORES DE SOCKETS SON BIDIRECCIONALES

– A ESTOS SOCKETS DEL DOMINIO UNIX ORIENTADOS A CONEXION SE LES DENOMINA STREM PIPES

LUIS MENGUAL (c)

Page 40: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

PIPES PIPES CC O SCC O SBIDIRECCIONALESBIDIRECCIONALES

main( ){

int sockets[2], child;char buf[1024]if (sockpair(AF_UNIX, SOCK_STREAM, 0, sockets) {

perror(“opening stream socket pair”);exit(1);exit(1);

}if ( (child = fork( )) ==-1)

perror(“fork”);perror( fork );else if (child) { /* parent */

close(sockets[0];if (read sockets[1] buf 1024 0 < 0)if (read sockets[1], buf,1024, 0 < 0)

perror(“reading stream message ”);printf(“-->%s\n, buf);if ( it ( k t [1] DATA2 i f(DATA2) ) 0)

LUIS MENGUAL (c)

if (write(sockets[1], DATA2, sizeof(DATA2) ) < 0)perror(“writing stream socket pair”);

close (sockets[1]);

Page 41: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

PIPES PIPES CC O SCC O SBIDIRECCIONALESBIDIRECCIONALES

} else { /* child */close(sockets[1];close(sockets[1];if (write sockets[0], DATA1, sizeof(DATA1 < 0)

perror(“writing stream message ”);if (read sockets[0] buf 1024 0 < 0)if (read sockets[0], buf,1024, 0 < 0)

perror(“reading stream message”);printf(“-->%s\n, buf);

l ( k t [0])close (sockets[0]);}exit(0);

}

LUIS MENGUAL (c)

Page 42: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACES DE INTERFACES DE OG C OOG C OPROGRAMACIONPROGRAMACION

LOS ESTÁNDARES TCP/IP NO ESPECIFICAN LOS DETALLES DE COMO APLICACIONESLOS DETALLES DE COMO APLICACIONES SOFTWARE INTERACTÚAN CON EL PROTOCOLO TCP/IP

SE PUEDEN IMPLEMENTAR APLICACIONES TCP/IP USANDO DISTINTOS S.OCADA S O PUEDE OFRECER INTERFACES CADA S.O. PUEDE OFRECER INTERFACES DISTINTOS

LOS PROGRAMAS DE APLICACION PUEDEN LOS PROGRAMAS DE APLICACION PUEDEN NO SER PORTABLES DE UNAS MÁQUINAS A OTRAS

LUIS MENGUAL (c)

Page 43: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACES DE INTERFACES DE OG C OOG C OPROGRAMACIONPROGRAMACION

EN LA PRÁCTICA SOLO EXISTEN POCOS INTERFACES PARA PROGRAMAS DE APLICACIÓN (APIs):

– INTERFACE SOCKETS : PARA S.O. UNIX DE BERKELEY 4.3BSD INTERFACE TLI : DEFINIDO POR AT&T COMO INTERFACE PARA EL UNIX SYSTEM V

– INTERFAZ WINDOWS SOCKETS: PARA S.O. WINDOWS– INTERFAZ SOCKETS EN JAVA: MULTIPLATAFORMA

FUNCIONALIDAD DE UN INTERFAZ:– RESERVAR RECURSOS PARA LA COMUNICACIÓN– ESPECIFICAR LOS PUNTOS DE COMUNICACIÓN LOCALES Y REMOTOS– INICIAR UNA CONEXIÓN (CLIENTE)– ESPERAR UNA CONEXIÓN ENTRANTE (SERVIDOR)– ENVIAR O RECIBIR DATOS– DETERMINAR CUANDO LLEGAN DATOS– TERMINAR UNA CONEXIÓN– ABORTAR LA COMUNICACIÓN

LUIS MENGUAL (c)

ABORTAR LA COMUNICACIÓN– MANEJAR CONDICIONES DE ERRORES– LIBERACIÓN DE RECURSOS CUANDO FINALIZA LA COMUNICACIÓN

Page 44: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACES DE INTERFACES DE OG C OOG C OPROGRAMACIONPROGRAMACION

APLICACIÓN

SESIÓN

PRESENTACIÓNAPLICACIONES

TRANSPORTE

S S ÓAPI

SOCKETS

RED

TRANSPORTETCP / IP

FISICO

ENLACEINTERFAZ

RED

LUIS MENGUAL (c)

FISICO RED

Page 45: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACES DE INTERFACES DE OG C OOG C OPROGRAMACIONPROGRAMACION

EN LA MAYORÍA DE LAS IMPLEMENTACIONES EL PROTOCOLO SOFTWARE TCP/IP RESIDE EN EL S OPROTOCOLO SOFTWARE TCP/IP RESIDE EN EL S.O.

LOS PROGRAMAS DE APLICACIÓN INTERACTÚAN CON TCP/IP CON LLAMADAS AL SISTEMA

SE UTILIZARAN LAS PRIMITIVAS CONVENCIONALES E/S DE UNIX Y SE INCLUIRÁN OTRAS NUEVAS

– SE EXTENDERÁ EL CONJUNTO DE DESCRIPTORES DE FICHEROS CREANDO FICHEROS PARA COMUNICACIONES DE RED

– SE EXTENDERÁ EL USO DE LAS LLAMADAS AL SISTEMA WRITE Y READ A LOS NUEVOS DESCRIPTORES DE COMUNICACIONES

LUIS MENGUAL (c)

Page 46: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACES DE INTERFACES DE OG C OOG C OPROGRAMACIONPROGRAMACION

APLICACIÓN 1 APLICACIÓN 2 APLICACIÓN N APLICACIONES

FUNCIONES DEL SISTEMA LLAMADAS POR LAS APLICACIONESINTERFAZ DE LLAMADAS AL

SISTEMA OPERATIVO CONTENIENDO

SISTEMA

PROTOCOLOSISTEMA OPERATIVO CONTENIENDO EL PROTOCOLO SOFTWARE TCP/IP

PROTOCOLOSOFTWARE

LUIS MENGUAL (c)

Page 47: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

EL INTERFACE SOCKETS DE BERKELEY PROPORCIONA UNA SERIE DE FUNCIONES EN CODIGO C QUE IMPLEMENTAN LAS COMUNICACIONES DE RED PUDIENDO USAR VARIOSCOMUNICACIONES DE RED PUDIENDO USAR VARIOS PROTOCOLOS

UN SOCKET COMO UN FICHERO ES IDENTIFICADO POR UN DESCRIPTORDESCRIPTOR

UNIX LOCALIZA LOS DESCRIPTORES DE SOCKETS EN LA MISMA TABLA DE DESCRIPTORES DE FICHEROS

– UNA APLICACIÓN NO PUEDE TENER UN DESCRIPTOR DE FICHERO Y DE SOCKETS CON EL MISMO VALOR

UNIX BSD CONTIENE LA FUNCIÓN “SOCKET” PARA CREAR UN ÓSOCKET SIMILAR A LA FUNCIÓN OPEN PARA CREAR UN

DESCRIPTORES DE FICHEROS

LUIS MENGUAL (c)

Page 48: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACEINTERFACESOC SSOC SSOCKETSSOCKETS

CUANDO UNA APLICACIÓN LLAMA A LA FUNCIÓN SOCKET EL S O CUANDO UNA APLICACIÓN LLAMA A LA FUNCIÓN SOCKET EL S.O. CREA UNA ESTRUCTURA DE DATOS CON PARTE DE LA INFORMACIÓN NECESARIA PARA LA COMUNICACIÓN Y CREA UN PUNTERO A ESA ESTRUCTURA DE DATOS EN LA TABLA DE DESCRIPTORESESTRUCTURA DE DATOS EN LA TABLA DE DESCRIPTORES

DESPUÉS DE CREAR EL SOCKET LA APLICACIÓN HACE MAS LLAMADAS AL SISTEMA PARA COMPLETAR LA INFORMACIÓN QUE NECESITA EL SOCKET PARA ESTABLECER UNA COMUNICACIÓN

TABLA DE DESCRIPTORES UNA POR PROCESO

ESTRUCTURA DATOS PARA SOCKETESTRUCTURA DATOS PARA SOCKET

FAMILIA : PF_INET

SERVICIO: SOCK STREAMSERVICIO: SOCK_STREAMLOCAL IP:

REMOTO IPPUERTO LOCAL:

LUIS MENGUAL (c)

REMOTO IP:PUERTO REMOTO :

Page 49: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACEINTERFACESOC SSOC SSOCKETSSOCKETS

PARA DEFINIR UN PUNTO EXTREMO DE CONEXIÓN TCP/IP USA LA SIGUIENTE ESTRUCTURA DEFINIDA EN <netinet/in.h>

struct sockaddr {short sin family; /* familia AF xxx*/

t t k dd i {

short sin_family; / familia AF_xxx /char sa_data[14]; /*14 bytes de diireccion

} especifica de protocolo*/struct sockaddr_in {

short sin_family; /*AF_INET*/u_short sin_port; /*16-bits port number*/

/*network byte ordered*/struct in_addr sin_addr; /*32-bits hostid*/

/*network byte ordered*/ychar sin_zero[8] /*unused*/

}; struct in addr {

LUIS MENGUAL (c)

struct in_addr {u_long s_addr;

} ;

Page 50: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

WINSOCK2.HWINSOCK2.HEstructura Estructura sockaddr_insockaddr_in

struct sockaddr_in {short sin_family;u short sin port;u_short sin_port;struct in_addr sin_addr;char sin zero[8];char sin_zero[8];

};

t t i dd {struct in_addr {union {

struct { u char s b1 s b2 s b3 s b4; } S un b;struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;struct { u_short s_w1,s_w2; } S_un_w;u_long S_addr;

LUIS MENGUAL (c)

} S_un;#define s_addr S_un.S_addr

Page 51: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACEINTERFACESOC SSOC SSOCKETSSOCKETS

SOCKET System Call:int socket(int family, int type, int protocol)

LA FAMILIA PUEDE SER:– LA FAMILIA PUEDE SER:» AF_UNIX : Protocolos Unix » AF_INET: Protocolos de Internet» AF_NS: Protocolos Xerox NS » AF_IMPLINK: IMP (Interface Message Processor)

– EL TIPO DE SOCKET PUEDE SER:EL TIPO DE SOCKET PUEDE SER:» SOCK_STREAM : Orientado a bytes» SOCK_DGRAM: Orientado a datagrama

SOCK RAW O i t d j» SOCK_RAW: Orientado a mensajes» SOCK_SEQPACKET: Orientado a paquetes secuenciados» SOCK_RDM: Orientado a paquetes no secuenciados

LUIS MENGUAL (c)

– EL ARGUMENTO PROTOCOLO ES DE VALOR “0” EN LA MAYORÍA DE LAS APLICACIONES

Page 52: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACEINTERFACESOC SSOC S

SOCKET System Call:

SOCKETSSOCKETS SOCKET System Call:

int socket(int family, int type, int protocol)– NO TODAS LAS COMBINACIONES DE FAMILIAS Y TIPOS SON

VALIDASVALIDAS

SOCK_STREAMAF_UNIX AF_ INET AF_NS

SS

TCPUDP

SPPIDPSOCK_DGRAM

SOCK_RAWSOCK_SEQPACKET

S UDPIP

IDPS

SPP

– LA LLAMADA AL SISTEMA SOCKET DEVUELVE UN ENTERO QUE ES EL DESCRIPTOR DE SOCKET. SI OCURRE UN ERROR DEVUELVE EL VALOR -1. LAS CAUSA DE EROR PUEDEN SER:

» TABLA DE DESCRIPTORES LLENA» PERMISO DENEGADO PARA CREAR UN SOCKET

LUIS MENGUAL (c)

» PERMISO DENEGADO PARA CREAR UN SOCKET» EL SISTEMA NO TIENE ESPACIO EN BUFFER DISPONIBLE» ERROR EN LOS PARÁMETROS

Page 53: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACEINTERFACESOCKETSSOCKETSSOCKETSSOCKETS

ASOCIACIÓN:

[Proto., Dir. IP Local, Pto. Local, Dir. IP Remota, Pto. Remoto]

MEDIA ASOCIACIÓN ( t t k dd i )MEDIA-ASOCIACIÓN (struct sockaddr_in):

LUIS MENGUAL (c)

Page 54: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACEINTERFACESOC SSOC SSOCKETSSOCKETS

protocoloprotocolo proc_localproc_local proc_remotoproc_remotodir_localdir_local dir_remotodir_remoto

idid socket()

k t()

bind() listen(), accept()

t()

servidor servidor orientado conexionorientado conexion

clientecliente socket()

socket()

connect()

bind() recvfrom()

cliente cliente orientado conexionorientado conexion

servidor servidor socket()

socket()

bind()

bind()

recvfrom()

sendto()

no orientado conexionno orientado conexion

cliente cliente no orientado conexionno orientado conexionno orientado conexionno orientado conexion

LUIS MENGUAL (c)

Page 55: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

CONNECT System Callint connect(int sockfd, struct sockaddr *servaddr, int addrlen);

– “Sockfd“ ES EL DESCRIPTOR DEL SOCKET DEVUELTO POR LA LLAMADA ALSockfd ES EL DESCRIPTOR DEL SOCKET DEVUELTO POR LA LLAMADA AL SISTEMA “SOCKET”

– “Servaddr” ES UN PUNTERO A UNA ESTRUCTURA “Sockaddr_in” QUE CONTIENE EL NÚMERO IP Y EL PUERTO DE LA MÁQUINA Y APLICACIÓN REMOTAS“Addrlen” ES LA LONGITUD DEL ARGUMENTO ANTERIOR– Addrlen ES LA LONGITUD DEL ARGUMENTO ANTERIOR

–– CONNECTCONNECT ELIGE UN NÚMERO IP Y DE PUERTO LOCAL PARA EL SOCKET–– CONNECTCONNECT RETORNA EL VALOR “0” SI HA TENIDO EXITO EN EL

ESTABLECIMIENTO DE LA CONEXIÓN CON LA APLICACIÓN REMOTA Y EL VALOR “-1” SI HA OCURRIDO UN ERROR. CAUSAS DE ERROR:

» EXPIRÓ UN TIMEOUT SIN ESTABLECER CONEXIÓN (TCP)» CONEXIÓN RECHAZADA POR MÁQUINA REMOTA (TCP)» PARÁMETROS INVÁLIDOS» PARÁMETROS INVÁLIDOS» APLICACIÓN REMOTA NO DISPONIBLE ............

LUIS MENGUAL (c)

Page 56: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

WRITE System Callint write(int sockfd, char *buff, unsigned int bufflen );

– “Sockfd” ES EL DESCRIPTOR DEL SOCKET AL CUAL SE DEBERÍAN MANDAR LOS DATOSLOS DATOS

– “Buff” ES UN PUNTERO QUE TIENE LA DIRECIÓN DONDE SE ENCUENTRAN LOS DATOS A ENVIAR

– “Bufflen” ES EL NÚMERO DE BYTES A ENVIAR EN “Buff”–– WRITE WRITE RETORNA EL NÚMERO DE BYTES ESCRITOS EN EL SOCKET

NORMALMENTE IGUAL A “Buflen”. SI FUERA INFERIOR A ESTE VALOR NO SERIA UN ERROR SINO SERÍA DEBIDO A UNA CONGESTIÓN EN LA RED

–– WRITEWRITE RETORNA EL VALOR “-1 “ SI SE PRODUCE UN ERROR:–– WRITE WRITE RETORNA EL VALOR -1 SI SE PRODUCE UN ERROR:» LOS DATOS ESCRITOS EXCEDEN LA CAPACIDAD DEL SISTEMA» INTENTO DE ESCRIBIR EN UN SOCKET STREAM NO CONECTADO» PARÁMETROS INVÁLIDOS» ERROR DE E/S

LUIS MENGUAL (c)

Page 57: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

READ System Callyint read(int sockfd, char *buff, unsigned int bufflen );

– “Sockfd” ES EL DESCRIPTOR DEL SOCKET DEL CUAL SE DEBERÍAN LEER LOS DATOS“B ff” ES UN PUNTERO QUE TIENE LA DIRECIÓN DONDE SE ALMACENARÁN– “Buff” ES UN PUNTERO QUE TIENE LA DIRECIÓN DONDE SE ALMACENARÁN LOS DATOS RECIBIDOS

– “Bufflen” ES EL NÚMERO DE BYTES EN “Buff”– SI NO LLEGAN DATOS AL SOCKET READ SE BLOQUEASI NO LLEGAN DATOS AL SOCKET READ SE BLOQUEA– SI LLEGAN MAS DATOS QU E EL TAMAÑO DEFINIDO EN EL BUFFER READ READ

SOLO EXTRAERÁ AQUELLOS HASTA LLENAR EL BUFFER– SI READ READ TIENE ÉXITO RETORNA EL NÚMERO DE BYTES LEÍDOS QUE PUEDE

SER MENOR QUE “bufflen” O EL VALOR “0” SI SE DETECTA EL CIERRE DELSER MENOR QUE bufflen O EL VALOR 0 SI SE DETECTA EL CIERRE DEL SOCKET

–– READ READ RETORNA EL VALOR “-1 “ SI SE PRODUCE UN ERROR:– PARÁMETROS INVÁLIDOS– ERROR DE E/S

LUIS MENGUAL (c)

Page 58: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

SEND System Callint send(int sockfd, char *buff, int buflen, int flags);

“Sockfd” ES EL DESCRIPTOR DEL SOCKET AL CUAL SE DEBERIAN– Sockfd ES EL DESCRIPTOR DEL SOCKET AL CUAL SE DEBERIAN MANDAR LOS DATOS

– “Buff” TIENE LA DIRECIÓN DONDE SE ENCUENTRAN LOS DATOS A ENVIARENVIAR

– “Bufflen” ES EL NÚMERO DE BYTES EN “Buff”– “flags” SON BITS DE CONTROL QUE ESPECIFICAN DATOS FUERA DE

BANDA O MENSAJESBANDA O MENSAJES– SEND RETORNA EL NÚMERO DE BYTES ENVIADOS O RETORNA EL

VALOR “-1 “ SI SE PRODUCE UN ERROR

LUIS MENGUAL (c)

Page 59: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

RECV System Callint recvf (int sockfd, char *buff, int buflen, int flags);

“Sockfd” ES EL DESCRIPTOR DEL SOCKET DEL CUAL SE DEBERÍAN– Sockfd ES EL DESCRIPTOR DEL SOCKET DEL CUAL SE DEBERÍAN LEER LOS DATOS

– “Buff” TIENE LA DIRECIÓN DONDE SE ALMACENARÁN LOS DATOS RECIBIDOSRECIBIDOS

– “Bufflen” ES EL NÚMERO DE BYTES EN “Buff”– “flags” SON BITS DE CONTROL QUE ESPECIFICAN DATOS FUERA DE

BANDA O MENSAJESBANDA O MENSAJES– “RECV” RETORNA EL NÚMERO DE BYTES RECIBIDOS O RETORNA EL

VALOR “-1 “ SI SE PRODUCE UN ERROR

LUIS MENGUAL (c)

Page 60: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

SENDTO System Callint sendto (int sockfd, char *buff, int buflen, int flags, struct sockaddr *to, int addrlen);, );

– “Sockfd” ES EL DESCRIPTOR DEL SOCKET AL CUAL SE DEBERIAN MANDAR LOS DATOS

– “Buff” TIENE LA DIRECIÓN DONDE SE ENCUENTRAN LOS DATOS A ENVIAR“B ffl ” ES EL NÍMERO DE BYTES EN “B ff”– “Bufflen” ES EL NÍMERO DE BYTES EN “Buff”

– “flags” SON BITS DE CONTROL QUE ESPECIFICAN DATOS FUERA DE BANDA O MENSAJES

– “TO” ES UN PUNTERO A LA ESTRUCTURA DE LA DIRECCIÓN DE LATO ES UN PUNTERO A LA ESTRUCTURA DE LA DIRECCIÓN DE LA MÁQUINA REMOTA

– “Addrlen” ES LA LONGITUD DE LA DIRECCIÓN “to” EN BYTES– SENTO RETORNA EL NÚMERO DE BYTES ENVIADOS O RETORNA EL VALOR

“ 1 “ SI SE PRODUCE UN ERROR-1 SI SE PRODUCE UN ERROR

LUIS MENGUAL (c)

Page 61: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

RECVFROM System Callint recvfrom (int sockfd, char *buff, int buflen, int flags, struct sockaddr *from, int *addrlen);

“Sockfd” ES EL DESCRIPTOR DEL SOCKET DEL CUAL SE DEBERÍAN LEER LOS– “Sockfd” ES EL DESCRIPTOR DEL SOCKET DEL CUAL SE DEBERÍAN LEER LOS DATOS

– “Buff” TIENE LA DIRECIÓN DONDE SE ALMACENARAN LOS DATOS RECIBIDOS– “Bufflen” ES EL NÚMERO DE BYTES EN “Buff”– “flags” SON BITS DE CONTROL QUE ESPECIFICAN DATOS FUERA DE BANDA O

MENSAJES– “From” ES UN PUNTERO EN EL QUE SE RETORNA LA DIRECCIÓN DE LA

MÁQUINA REMOTAMÁQUINA REMOTA– “Addrlen” ES UN PUNTERO A LA LONGITUD DEL CAMPO “from”– RECVFROM RETORNA “0” o el VALOR “-1 “ SI SE PRODUCE UN ERROR

LUIS MENGUAL (c)

Page 62: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

BIND System Callint bind(int sockfd, struct sockaddr *myaddr, int addrlen);addrlen);

– “Sockfd“ ES EL DESCRIPTOR DEL SOCKET DEVUELTO POR LA LLAMADA AL SISTEMA “SOCKET” “S k dd ” ES UN PUNTERO A UNA ESTRUCTURA “S k dd i ”– “Sockaddr” ES UN PUNTERO A UNA ESTRUCTURA “Sockaddr_in” . LA LLAMADA AL SISTEMA BIND BIND ASIGNA UN NÚMERO IP Y UN NÚMERO DE PUERTO LOCAL A ESTA ESTRUCTURA“Addrlen” ES LA LONGITUD DEL ARGUMENTO ANTERIOR– Addrlen” ES LA LONGITUD DEL ARGUMENTO ANTERIOR

–– BIND BIND RETORNA EL VALOR “0” SI HA TENIDO EXITO O EL VALOR “-1” SI HA OCURRIDO UN ERROR. CAUSAS DE ERROR:

EL SOCKET YA TIENE PUERTO Y NÚMERO IP ASIGNADO» EL SOCKET YA TIENE PUERTO Y NÚMERO IP ASIGNADO» EL NÚMERO IP DEFINIDO NO CORRESPONDE A UN INTERFAZ

LOCALÓ

LUIS MENGUAL (c)

» EL PROGRAMA DE APLICACIÓN NO TIENE PERMISO PARA UTILIZAR ESE NÚMERO DE PUERTO...............

Page 63: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

LISTEN System Callint listen(int sockfd, int backlog);

“Sockfd“ ES EL DESCRIPTOR DEL SOCKET DEVUELTO POR LA– Sockfd ES EL DESCRIPTOR DEL SOCKET DEVUELTO POR LA LLAMADA AL SISTEMA “SOCKET”

– “backlog” ESPECIFICA CUANTAS PETICIONES DE CONEXION PUEDEN SER ENCOLADAS POR EL SISTEMA ESTE VALOR SUELEPUEDEN SER ENCOLADAS POR EL SISTEMA. ESTE VALOR SUELE SER TÍPICAMNETE DE 5

–– LISTEN LISTEN SE EJECUTA EN UN SERVIDOR DESPUÉS DE LAS LLAMADAS SOCKET Y A BINDSOCKET Y A BINDSOCKET Y A BINDSOCKET Y A BIND

– LISTEN RETORNA EL VALOR “0” SI HA TENIDO ÉXITO O EL VALOR “-1” SI HA OCURRIDO UN ERROR. CAUSAS DE ERROR:

» PARÁMETRO INVÁLIDO» PARÁMETRO INVÁLIDO» EL TIPO DE SOCKET NO SOPORTA LISTEN

LUIS MENGUAL (c)

Page 64: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

ACCEPT System Callint accept(int sockfd, struct sockaddr *peer, int *addrlen);

– “Sockfd“ ES EL DESCRIPTOR DEL SOCKET DEVUELTO POR LA LLAMADA AL SISTEMA “SOCKET”

– “perr” ES UN PUNTERO A UNA ESTRUCTURA “Sockaddr_in” EN EL QUE SE RETORNA EL NÚMERO IP Y EL PUERTO DE LA MÁQUINA Y APLICACIÓN REMOTAS

– “Addrlen” ES UN PUNTERO A UN ENTEROQUE INICIALMENTE ESPECIFICA ELAddrlen ES UN PUNTERO A UN ENTEROQUE INICIALMENTE ESPECIFICA EL TAMAÑO DEL ARGUMENTO ANTERIOR. CUANDO RETORNA LA LLAMADA ESPECIFICA EL NÚMERO DE BYTES ALMACENADOS

– ACCEPT TOMA LA PRIMERA PETICIÓN EN LA COLA Y CREA OTRO SOCKET CON LAS MISMAS PROPIEDADES QUE “ kfd”CON LAS MISMAS PROPIEDADES QUE “sockfd”

– SI NO HAY PETICIONES DE CONEXIÓN PENDIENTES SE BLOQUEA– ACEPT RETORNA TRES VALORES : UN ENTERO QUE ES EL DESCRIPTOR DE

UN NUEVO SOCKET O UNA INDICACIÓN DE ERROR ( 1) LA DIRECCIÓN DELUN NUEVO SOCKET O UNA INDICACIÓN DE ERROR (-1), LA DIRECCIÓN DEL PROCESO CLIENTE Y LA LONGITUD DE ESTA DIRECCIÓN

– CUASA DE ERROR:» EL SOCKET NO ES DEL TIPO SOCK STREAM

LUIS MENGUAL (c)

» EL SOCKET NO ES DEL TIPO SOCK_STREAM» PARÁMETROS INVÁLIDOS

Page 65: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

int sockfd, newsockfd;if ( (sockfd=socket( ......)) < 0)

err_sys(“socket error”);if ( (bind(sockfd, ......) < 0)( ( ( ) )

err_sys(“bind error”);if ( (listen(sockfd, 5) < 0)

err sys(“socket error”);err_sys( socket error );for ( ; ; ) {

newsockfd = accept(sockfd, .....); /* se bloquea */if (newsockfd < 0)if (newsockfd < 0)

err_sys(“accept error”);if (fork( ) == 0) { /* hijo */

close (sockfd)close (sockfd) doit(newsockfd) /* procesa la peticion */ exit(0)

}

LUIS MENGUAL (c)

}close (newsockfd); /* padre */

}

Page 66: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

CLOSE System Calli t l (i t kfd)int close (int sockfd) ;

– “Sockfd“ ES EL DESCRIPTOR DEL SOCKEt– CLOSE CIERRA EL SOCKETCLOSE CIERRA EL SOCKET– SI EL SOCKET QUE SE VA A CERRAR ESTA ASOCIADO CON UN

PROTOCOLO ORIENTADO A CONEXIÓN (TCP,SPP) EL SISTEMA DEBE ASEGURARSE QUE CUALQUIER DATO DENTRO DEL KERNEL QUE Q Q QTODAVÍA NO HA SIDO TRANSMITIDO O RECONOCIDO ES ENVIADO

LUIS MENGUAL (c)

Page 67: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

LLAMADAS AL SISTEMA UTILIZANDO UN PROTOCOLO ORIENTADO A CONEXIÓN

socket( )SERVIDOR

socket( )

bind( )

listen( )

CLIENTE

socket( ) listen( )

connect( )ESTABLECIMIENTO CONEXIÓN accept( )

connect( )

write( ) DATOS (PETICIÓN)read( )

BLOQUEO HASTA RECIBIRCONEXION DE CLIENTE

DATOS (RESPUESTA) write( )read( )

read( )PROCESAMIENTO

PETICION

LUIS MENGUAL (c)close( ) close( )

Page 68: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

LLAMADAS AL SISTEMA UTILIZANDO UN PROTOCOLO NO ORIENTADO A CONEXIÓNSOCKETS NO CONECTADOSSOCKETS NO CONECTADOS

socket( )

SERVIDOR

socket( )

bind( )socket( )CLIENTE

bind( )

recvfrom( )bind( )

sendto( )DATOS (PETICION)

BLOQUEO

recvfrom( )

( )

DATOS (RESPUESTA) sendto( )

PROCESAMIENTOPETICION

BLOQUEO

LUIS MENGUAL (c)

recvfrom( ) ( )

Page 69: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

LLAMADAS AL SISTEMA UTILIZANDO UN PROTOCOLO NO ORIENTADO A CONEXIÓNSOCKETS CONECTADOS EN CLIENTE

socket( )SERVIDOR

socket( )

socket( )

bind( )CLIENTE

socket( )

connect( )

bind( )

recvfrom( )

DATOS (PETICION)

connect( )BLOQUEO

write()d()

DATOS (RESPUESTA)read( )

BLOQUEO

sendto( )

PROCESAMIENTOPETICION

send()

LUIS MENGUAL (c)

read( )recv()

( )

Page 70: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARE SOFTWARE CCCLIENTECLIENTE

UN CLIENTE DEBE ESPECIFICAR EL NÚMERO IP Y EL NÚMERO DE PUERTO DENÚMERO IP Y EL NÚMERO DE PUERTO DE UN SERVIDOR USANDO LA ESTRUCTURA sockaddr_in

– PARA ELLO UTILIZARA LAS LLAMADAS AL SISTEMA GETHOSTBYNAME Y GETSERVBYNAME

LOCALMENTE AL CLIENTE SE LE ASIGNALOCALMENTE AL CLIENTE SE LE ASIGNA UN NÚMERO IP Y UN NÚMERO DE PUERTO

LUIS MENGUAL (c)

Page 71: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARE SOFTWARE CCCLIENTECLIENTE

CLIENTE TCP CLIENTE TCP (ALGORITMO):):– BÚSQUEDA DE LA DIRECCIÓN IP Y DEL NÚMERO DE– BÚSQUEDA DE LA DIRECCIÓN IP Y DEL NÚMERO DE

PUERTO DEL SERVIDOR– ABRE UN SOCKET

ESPECIFICA QUE LA CONEXION NECESITA UN PUERTO– ESPECIFICA QUE LA CONEXION NECESITA UN PUERTO EN LA MÁQUINA LOCAL Y PERMITE QUE TCP ELIJA UNOCONECTA EL SOCKET AL SERVIDOR– CONECTA EL SOCKET AL SERVIDOR

– SE COMUNICA CON EL SERVIDOR USANDO EL PROTOCOLO TCP (QUE IMPLICA EL ENVIO DE PETICIONES Y LA ESPERA DE RECONOCIMIENTOS)PETICIONES Y LA ESPERA DE RECONOCIMIENTOS)

– HAY QUE HACER REPETIDAS LLAMADAS A READ– CIERRA LA CONEXIÓN

LUIS MENGUAL (c)

Page 72: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARE SOFTWARE CCCLIENTECLIENTE

CLIENTE UDP CLIENTE UDP (ALGORITMO)::– BÚQUEDA DE LA DIRECCION IP Y DEL NUMERO DE– BÚQUEDA DE LA DIRECCION IP Y DEL NUMERO DE

PUERTO DEL SERVIDOR– ABRE UN SOCKET

ESPECIFICA QUE LA CONEXION NECESITA UN PUERTO– ESPECIFICA QUE LA CONEXION NECESITA UN PUERTO EN LA MÁQUINA LOCAL Y PERMITE QUE UDP ELIJA UNOESPECIFICA EL SERVIDOR AL CUAL SE VAN A MANDAR– ESPECIFICA EL SERVIDOR AL CUAL SE VAN A MANDAR LOS MENSAJES

– SE COMUNICA CON EL SERVIDOR USANDO EL PROTOCOLO UDPPROTOCOLO UDP

– NO ES NECESARIO HACER REPETIDAS LLAMADAS A READ PARA OBTENER UN MENSAJECIERRA LA CONEXIÓN

LUIS MENGUAL (c)

– CIERRA LA CONEXIÓN

Page 73: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARE SOFTWARE CCCLIENTECLIENTE

CLIENTE UDPCLIENTE UDP– LAS APLIACIONES CLIENTES UDP PUEDEN UTILIZAR– LAS APLIACIONES CLIENTES UDP PUEDEN UTILIZAR

SOCKETS CONECTADOS O SOCKETS NO CONECTADOS» CUANDO SE UTILIZAN SOCKETS CONECTADOS

– LA LLAMADA ALSISTEMA CONNECT( ) LO ÚNICO QUE HACE ES– LA LLAMADA ALSISTEMA CONNECT( ) LO ÚNICO QUE HACE ES ALMACENAR LA DIRECCIÓN DE LA MÁQUIINA REMOTA

– CONNECT RETORNA INMEDIATAMENTE SIN INTERCAMBIAR NINGÚN MENSAJE CON LA MÁQUINA REMOTASOLO ES NECESARIO ESPECIFICAR UNA VEZ LA DIRECCIÓN DE LA– SOLO ES NECESARIO ESPECIFICAR UNA VEZ LA DIRECCIÓN DE LA MÁQUINA REMOTA

» CUANDO SE UTILIZAN SOCKETS NO CONECTADOS– ES NECESARIO ESPECIFICAR LA DIRECCIÓN DEL SERVIDOR CADAES NECESARIO ESPECIFICAR LA DIRECCIÓN DEL SERVIDOR CADA

VEZ QUE SE MANDA UN MENSAJE

LUIS MENGUAL (c)

Page 74: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARE SOFTWARE CC

GETHOSTBYNAME System Call

CLIENTECLIENTE GETHOSTBYNAME System Call

struct hostent *gethostbyname(char * hostname)– GETHOSTBYNAME RETORNA UN PUNTERO A UNA

ESTRUCTURA “hostent” O A UN PUNTERO NULO SI HA OCURRIDO UN ERROR

– GETHOSTBYNAME OBTIENE EL NUMERO IP A PARTIR DEL NOMBRE DE MAQUINANOMBRE DE MAQUINA

struct hostent {h *h /* b fi i l d h t */char *h_name; /* nombre oficial de host */

char **h_aliases; /* lista de alias */int h_addrtype; /* familia */int h_lenght; /* longitud de direccion */char **h_addr_list; /* lista de direcciones*/

};

LUIS MENGUAL (c)

}

# define h_addr h_addr_list[0]

Page 75: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARE SOFTWARE CCCLIENTECLIENTE

GETSERVBYNAME System Call struct servent *getservtbyname(char * servname, char *protname)char *protname)

– GETSERVBYNAME RETORNA UN PUNTERO A UNA ESTRUCTURA “servent” O A UN PUNTERO NULO SI HA OCURRIDO UN ERROROCURRIDO UN ERROR

– GETSERVBYNAME OBTIENE ELNUMERO DE PUERTO A PARTIR DEL SERVICIO Y EL PROTOCOLO

struct servent {char *s name; /* nombre oficial de servicio */char s_name; / nombre oficial de servicio /char **s_aliases; /* lista de alias */short s_port; /* numero de puerto, orden bytes red */char *s proto; /* protocolo */

LUIS MENGUAL (c)

char *s_proto; /* protocolo */};

Page 76: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARE SOFTWARE CCCLIENTECLIENTE

GETPROTOBYNAME System Call struct protoent *getprotobyname(char *protname)p g p y ( p )

– GETPROTOBYNAME RETORNA UN PUNTERO A UNA ESTRUCTURA “protent” O A UN PUNTERO NULO SI HA OCURRIDO UN ERROR

– GETPROTOBYNAME OBTIENE ELNUMERO DE PROTOCOLO A PARTIR DEL NOMBRE

struct protoent{char *p_name; /* nombre oficial del protocolo */char **p_aliases; /* lista de alias pra el protocolo*/int *p_proto; /* numero oficial del protocolo */

};

LUIS MENGUAL (c)

}

Page 77: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSO CSO CSOFTWARE CLIENTESOFTWARE CLIENTE

SE PUEDEN IMPLEMENTAR DOS PROCEDIMIENTOS SE PUEDEN IMPLEMENTAR DOS PROCEDIMIENTOS QUE MANEJEN LA CONEXION DE UN SOCKET:

socket = connectTCP (host, service)socket = connectUDP (host,service)

int connectTCP(host, service)char *host; /* nombre del servidor */char host; / nombre del servidor /char *service; /* nobre del servicio */

{return connectsock (host,service,”tcp”)return connectsock (host,service, tcp )

}

int connectUDP(host, service)( , )char *host; /* nombre del servidor */char *service; /* nobre del servicio */

{

LUIS MENGUAL (c)

return connectsock (host,service,”udp”)}

Page 78: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSO CSO C

EL PROCEDIMIENTO “connectsock” realiza la CONEXION SOFTWARE CLIENTESOFTWARE CLIENTE

DE UN SOCKET . LA LLAMADA A ESTE PROCEDIMIENTO ESPECIFICA SI ES UN SOCKET TCP O UDP

/* connectsock conecta un socket tcp o udp *//* connectsock - conecta un socket tcp o udp */

#include <sys/types.h>#i l d < / k t h>#include <sys/socket.h>#include <netinet/in.h>#include<netdb.h>extern int errno;extern char *sys_errlist[];u_short htons( );_ ( );int connectsock (host, service, protocol)char *host /* nombre del host servidor */

LUIS MENGUAL (c)

char host / nombre del host servidor /char *service /* nombre del servicio */char *protocol /* protocolo en uso: tcp oudp*/

Page 79: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSO CSO CSOFTWARE CLIENTESOFTWARE CLIENTE

/* connectsock - conecta un socket tcp o udp */{struct hostent *phe; /* puntero a estructura hostent */struct servent *pse; /* puntero a estructura servent */struct protoent *ppe; /* puntero a estructura protoent */struct sockaddr_in sin; /* estructura punto extremo conexion */int s, type; /* descriptor y tipo de socket */int s, type; / descriptor y tipo de socket /

bzero((char *)&sin, sizeof(sin));sin sin family=AF INET;sin.sin_family=AF_INET;

/* obtiene el nº de puerto a partir del nombre del servicio y lo almacena en la estructura */almacena en la estructura */if ( pse=getserverbyname(service, protocol) )

sin.sin_port = pse -->s_port;l if ( ( i i t ht ( ( h t) t i ( i ))) 0)

LUIS MENGUAL (c)

else if ( (sin.sin_port = htons( (u_short) atoi (service))) == 0)errexit(“can´t get \”%s\” service entry\n”, service);

Page 80: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSO CSO CSOFTWARE CLIENTESOFTWARE CLIENTE

/* mapea el nombre de la maquina a una direccion IP y la almacenaen la estructura */

if ( phe=gethostbyname(host) )( g y ( ) )bcopy(phe-->h_addr, (char *)&sin.sin_addr, phe-->h_length);

else if ( (sin.sin_addr.s_addr = inet_addr(host)) == INADDR_NONE)errexit(“can´t gat \”%s\” host entry\n”, host);errexit( can t gat \ %s\ host entry\n , host);

/* mapea el nombre de protocolo al numero oficiall */if ( (ppe= getprotobyname(protocol)) == 0)if ( (ppe= getprotobyname(protocol)) == 0)

errexit(“can´t gat \”%s\” protocol entry\n”, protocol);

/* se elige el tipo de socket *//* se elige el tipo de socket */if (strcmp(protocol, “udp”) == 0)

type = SOCK_DGRAM;l

LUIS MENGUAL (c)

elsetype = SOCK_STREAM;

Page 81: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSOFTWARE CLIENTESOFTWARE CLIENTE

/* abre el socket */s= socket(PF_INET, type, ppe-->p_proto);if (s<0)( )

errexit(“can´t create socket: %s\n”, sys_errlist[errno]);

/* conecta el socket *// conecta el socket /if ( connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0 )

errexit(“can´t connect to %s\ %s: %s\n”, host, service, sys errlist[errno]);sys_errlist[errno]);

return s;

LUIS MENGUAL (c)

Page 82: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSOFTWARE CLIENTESOFTWARE CLIENTE

IMPLEMENTACIÓN DE UN CLIENTE TCP PARA EL SERVICIO DAYTIME (Pto.13)IMPLEMENTACIÓN DE UN CLIENTE TCP PARA EL SERVICIO DAYTIME (Pto.13)( )( )/* cliente tcp para el servicio daytime */intmain(argc argv)main(argc, argv)int argc;char *argv[ ];{{

char *host = “localhost”;char *service = “daytime”;swich (argc) {( g ) {case 1:

host = “localhost”;break;

case 3:service = argv[2]

case 2:

LUIS MENGUAL (c)

host = argv[1];break;

default

Page 83: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSOFTWARE CLIENTESOFTWARE CLIENTE

IMPLEMENTACIÓN DE UN CLIENTE TCP PARA EL SERVICIO DAYTIMEIMPLEMENTACIÓN DE UN CLIENTE TCP PARA EL SERVICIO DAYTIME

fprint(stderr, “usage: TCPdaytime[host[port]]\n”);exit(1);

}}TCPdaytime(host, service);exit(0);

}}

TCPdaytime (host, service)char *host;;char *service;{

char buf[LINELEN+1];int s,n;s = connectTCP (host, service);while ( (n = read(s, buf, LINELEN ) ) > 0 {

LUIS MENGUAL (c)

buf[n] = “\0”;(void) fputs (buf, stdout);

} }

Page 84: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSOFTWARE CLIENTESOFTWARE CLIENTE

IMPLEMENTACIÓN DE UN CLIENTE TCP PARA EL SERVICIO ECHO IMPLEMENTACIÓN DE UN CLIENTE TCP PARA EL SERVICIO ECHO ((Pto.7)Pto.7)

/* cliente tcp para el servicio echo */intmain(argc argv)main(argc, argv)int argc;char *argv[ ];{{

char *host = “localhost”;char *service = “echo”;swich (argc) {( g ) {case 1:

host = “localhost”;break;

case 3:service = argv[2]

case 2:

LUIS MENGUAL (c)

host = argv[1];break;

default

Page 85: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSOFTWARE CLIENTESOFTWARE CLIENTE

IMPLEMENTACIÓN DE UN CLIENTE TCP PARA EL SERVICIO ECHOIMPLEMENTACIÓN DE UN CLIENTE TCP PARA EL SERVICIO ECHOfprint(stderr, “usage: TCPecho[host[port]]\n”);exit(1);

}}TCPecho(host, service);exit(0);

}intTCPecho (host, service)char *host;char *service;{ char buf[LINELEN+1];

int s,n;i t t h i hint outchars, inchars;s = connectTCP (host, service);while (fgets( buf, sizeof(buf), stdin ) ) {

buf[LINELEN] = “\0”;

LUIS MENGUAL (c)

buf[LINELEN] = “\0”;outchars = starlen(buf);(void) write (s, buf, outchars);

Page 86: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSOFTWARE CLIENTESOFTWARE CLIENTE

IMPLEMENTACIÓN DE UN CLIENTE TCP PARA EL SERVICIO ECHOIMPLEMENTACIÓN DE UN CLIENTE TCP PARA EL SERVICIO ECHOIMPLEMENTACIÓN DE UN CLIENTE TCP PARA EL SERVICIO ECHOIMPLEMENTACIÓN DE UN CLIENTE TCP PARA EL SERVICIO ECHO

for (inchars=0; inchars < outchars; inchars+=n ) {n = read (s, &buf[inchars], outchars - inchars);if (n < 0)

errexit (“socket read failed: %s\n”, sys_errlist[errno] );}}fputs (buf, stdout);}

}}

LUIS MENGUAL (c)

Page 87: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACION

IMPLEMENTACION DE UN CLIENTE UDP PARA EL SERVICIO ECHOIMPLEMENTACION DE UN CLIENTE UDP PARA EL SERVICIO ECHO

SOFTWARE CLIENTESOFTWARE CLIENTE

/* cliente udp para el servicio echo */intmain(argc argv)main(argc, argv)int argc;char *argv[ ];{{

char *host = “localhost”;char *service = “echo”;swich (argc) {( g ) {case 1:

host = “localhost”;break;

case 3:service = argv[2]

case 2:

LUIS MENGUAL (c)

host = argv[1];break;

default

Page 88: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSOFTWARE CLIENTESOFTWARE CLIENTE

IMPLEMENTACIÓN DE UN CLIENTE UDP PARA EL SERVICIO ECHOIMPLEMENTACIÓN DE UN CLIENTE UDP PARA EL SERVICIO ECHO

fprint(stderr, “usage: UDPecho[host[port]]\n”);exit(1);

}}UDPecho(host, service);exit(0);

}}intUDPecho (host, service)char *host;;int *service;{

char buf[LINELEN+1];int s, nchars;s = connectUDP (host, service);while (fgets( buf, sizeof(buf), stdin ) ) {

LUIS MENGUAL (c)

buf[LINELEN] = “\0”;nchars = starlen(buf);(void) write (s, buf, nchars);

Page 89: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSOFTWARE CLIENTESOFTWARE CLIENTE

IMPLEMENTACIÓN DE UN CLIENTE UDP PARA EL SERVICIO ECHOIMPLEMENTACIÓN DE UN CLIENTE UDP PARA EL SERVICIO ECHO

if (read(s buf nchars) < 0)if (read(s, buf, nchars) < 0)errexit (“socket read failed: %s\n”, sys_errlist[errno] );fputs (buf, stdout);

}}

}

LUIS MENGUAL (c)

Page 90: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSOFTWARE CLIENTESOFTWARE CLIENTE

IMPLEMENTACION DE UN CLIENTE UDP PARA EL SERVICIO TIME (Pto.37)IMPLEMENTACION DE UN CLIENTE UDP PARA EL SERVICIO TIME (Pto.37)

/* cliente udp para el servicio time */intmain(argc argv)main(argc, argv)int argc;char *argv[ ];{{

char *host = “localhost”;char *service = “time”;time t now;_ ;int s,n;

swich (argc) {case 1:

host = “localhost”;break;

LUIS MENGUAL (c)

case 3:service = argv[2]

Page 91: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSOFTWARE CLIENTESOFTWARE CLIENTE

IMPLEMENTACION DE UN CLIENTE UDP PARA EL SERVICIO TIMEIMPLEMENTACION DE UN CLIENTE UDP PARA EL SERVICIO TIME

case 2:host = argv[2];break;break;

defaul:fprint(stderr, “usage: UDPtime[host[port]]\n”);exit(1);exit(1);

}s = connectUDP (host, service);(void) write(s, MSG, strlen(MSG));( ) ( , , ( ));n = read(s, (char *)&now, sizeof(now) );if (n < 0)

errexit(“read fail: %s\n, sys_errlist[errno] );now = ntohl ( (u_long) now) ;now -= UNIXEPOCH;printf (“ %s, ctime (&now));

LUIS MENGUAL (c)

}exit(0);

Page 92: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

TIPOS DE SERVIDORES:– SERVIDOR ITERATIVO:– SERVIDOR ITERATIVO:

» SERVIDOR QUE EN UN INSTANTE DADO SOLO MANEJA UNA PETICIÓN

SERVIDOR CONCURRENTE:– SERVIDOR CONCURRENTE:» SERVIDOR QUE MANEJA MÚLTIPLES PETICIONES

EN UN INSTANTE DADOSERVIDOR ORIENTADO A CONEXIÓN– SERVIDOR ORIENTADO A CONEXIÓN:

» SERVIDOR QUE USA EL PROTOCOLO TCP– SERVIDOR NO ORIENTADO A CONEXIÓN:

» SERVIDOR QUE USA EL PROTOCOLO UDP (EN EL SERVIDOR NO HAY SOCkETS CONECTADOS UDP)

LUIS MENGUAL (c)

Page 93: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDORES ORIENTADOS A CONEXIÓN– EL SERVIDOR ACEPTA Y ATIENDE PETICIONES DEL

CLIENTE SIN OCUPARSE DE LA FIABILIDADCLIENTE SIN OCUPARSE DE LA FIABILIDAD– EL NIVEL DE TRANSPORTE TCP:

» RETRASMITE LOS PAQUETES PERDIDOS» COMPRUEBA ERRORES EN LOS DATOS» REORDENA PAQUETES ENTRANTES» INFORMA AL CLIENTE QUE SE HA ROTO UNA» INFORMA AL CLIENTE QUE SE HA ROTO UNA

COMUNICACIÓN– EL SERVIDOR RESERVA RECURSOS PARA CADA

PETICION DE UN CLIENTEPETICION DE UN CLIENTE» SI REPETIDAMENTE VARIOS CLIENTES SE

CONECTAN A UNA MÁQUINA Y LUEGO SE CAEN PUEDEN DEJAR BLOQUEADO A UN SERVIDOR

LUIS MENGUAL (c)

PUEDEN DEJAR BLOQUEADO A UN SERVIDOR

Page 94: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDORES NO ORIENTADOS A CONEXIÓN SERVIDORES NO ORIENTADOS A CONEXIÓN– EL SERVIDOR ES RESPONSABLE DE LA FIABILIDAD

(RETRANSMISIÓN ADAPTATIVA)CUALQUIER SERVIDOR QUE ACEPTA O RESPONDE A– CUALQUIER SERVIDOR QUE ACEPTA O RESPONDE A COMUNICACIÓN MULTICAST DEBE SER NO ORIENTADO A CONEXIÓNUN SERVIDOR NO ORIENTADO A CONEXIÓN SIEMPRE– UN SERVIDOR NO ORIENTADO A CONEXIÓN SIEMPRE USA SOCKETS NO CONECTADOS

LUIS MENGUAL (c)

Page 95: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSO S OSO S OSOFTWARE SERVIDORSOFTWARE SERVIDOR

SE PUEDEN IMPLEMENTAR DOS PROCEDIMIENTOS SE PUEDEN IMPLEMENTAR DOS PROCEDIMIENTOS QUE MANEJEN LA CONEXIÓN DE UN SOCKET:

socket = passivetTCP (service, qlen)p ( q )socket = passiveUDP (service)

int passiveUDP( service )char *service; /* servicio asociado */char service; / servicio asociado /

{return passivesock (service, “UDP”, 0);

}}

int passiveTCP( service, qlen )char *service; /* servicio asociado */int qlen;

{t i k ( i “TCP” l )

LUIS MENGUAL (c)

return passivesock (service, “TCP”, qlen);}

Page 96: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSO S OSO S O

EL PROCEDURE “passivesock” CREA EL SOFTWARE SERVIDORSOFTWARE SERVIDOR

pSOCKET DEL SERVIDOR

/* passive sock- crea un socket en el servidor*/

intpassivesock (service, protocol, qlen)h * ichar *service;

char *protocol;int qlen;{

struct servent *pse;struct protoent *ppe;p pp ;struct sockaddr_in sin;int s,type;bzero ( (char *)&sin sinzeof(sin));

LUIS MENGUAL (c)

bzero ( (char )&sin, sinzeof(sin));sin.sin_family = AF_INET;sin.sin_addr.s_addr = INADDR_ANY

Page 97: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSOFTWARE SERVIDORSOFTWARE SERVIDOR

/* passive sock- crea un socket en el servidor*/

if ( pse= getservbyname (service, protocol) )sin.sin port = pse->s port;_p p _p ;

else if ( (sin.sin_port = htons( (u_short) atoi (service) ) ) == 0errexit (“can´t get \”%s\” service entry\n”, service);

if ( (ppe= getprotobyname ( protocol ) ) == 0)errexit (“can´t get \”%s\” protocol entry\n”, protocol ) ;

if ( strcmp (protocol, “udp”) == 0 )type = SOCK_DGRAM;

lelsetype = SOCK_STREAM;

LUIS MENGUAL (c)

s= socket (PF_INET, type, ppe->p_proto) ;if ( s<0 )

errexit (can´t create sock: %s\n”, sys_errlist[errno];

Page 98: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACIONIMPLEMENTACIONSOFTWARE SERVIDORSOFTWARE SERVIDOR

/* i k k t l id *//* passive sock- crea un socket en el servidor*/

if ( bind (s, (struct sockaddr *)&sin, sizeof(sin) ) < 0)errexit (“can´t bind to %s port: %s\n”, service, sys_errlist[errno] );

if ( type == SOCK_STREAM && listen(s,qlen) <0 )( yp _ ( ,q ) )errexit(“can´t listen on %s port: %s\n”,service, sys_errlist[errno] );

return s;return s;

}

LUIS MENGUAL (c)

Page 99: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDOR NO ORIENTADO A CONEXIÓN SERVIDOR NO ORIENTADO A CONEXIÓN ITERATIVOITERATIVO (ALGORITMO)(ALGORITMO)ITERATIVO ITERATIVO (ALGORITMO):(ALGORITMO):

– CREA UN SOCKET Y LE ASOCIA (”BIND”) UN NÚMERO DE PUERTO Y UN NÚMERO IP LOCAL

– REPETIDAMENTE LEE UNA PETICON DEL CLIENTE Y FORMULA UNA RESPUESTA

» PARA ACEPTAR UNA PETICION SE UTILIZA LA LLAMADA AL SISTEMA “RECVFROM”A PARTIR DE LA CUAL SE OBTIENE LA DIRECCIÓN DE LA MÁQUINA REMOTA

Ó» PARA RESPONDER A UNA PETICIÓN SE UTILIZA “SENDTO”

LUIS MENGUAL (c)

Page 100: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDOR NO ORIENTADO A CONEXIÓN ITERATIVOSERVIDOR NO ORIENTADO A CONEXIÓN ITERATIVOSERVIDOR NO ORIENTADO A CONEXIÓN ITERATIVOSERVIDOR NO ORIENTADO A CONEXIÓN ITERATIVO

SERVIDOR

PROCESO DE APLICACIÓN

SISTEMA OPERATIVO

LUIS MENGUAL (c)

SOCKET EN PUERTO CONOCIDO PARA TODAS LAS COMUNICACIONES

Page 101: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SO S OSO S OSOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACIÓN DE UN SERVIDOR NO ORIENTADO A CONEXIÓN IMPLEMENTACIÓN DE UN SERVIDOR NO ORIENTADO A CONEXIÓN ITERATIVO PARA EL SERVICIO TIMEITERATIVO PARA EL SERVICIO TIME

intmain(argc, argv)main(argc, argv)int argc;char *argv[ ]{{

struct sockaddr_in fsin;char *service = “time” ;char buf[1];int sock;time_t now;int alen;swich (argc) {case 1:

break;2

LUIS MENGUAL (c)

case 2:service= argv[1 ]break;

Page 102: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SO S OSO S OSOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACIÓN DE UN SERVIDOR NO ORIENTADO A CONEXIÓN IMPLEMENTACIÓN DE UN SERVIDOR NO ORIENTADO A CONEXIÓN

defaul :it(“ UDPti d[ t]\ ”)

ITERATIVO PARA EL SERVICIO TIMEITERATIVO PARA EL SERVICIO TIME

errexit(“ usage: UDPtimed[port]\n”);}

k i UDP( i )sock = pasiveUDP(service);

while (1) {alen = sizeof (fsin);alen = sizeof (fsin);

if recvfrom ( sock, buf, sizeof(buf) , 0 , ( struct sockaddr *)&fsin, &alen)<0 ) ;

(void) time (&now);(void) time (&now);now = htonl ( (u_long) (now + UNIXEPOCH) );(void) sendto (sock, (char *)&now, sizeof(now), 0, (struct sockaddr*)&fsin, sizeof(fsin) );

LUIS MENGUAL (c)

(struct sockaddr )&fsin, sizeof(fsin) );}

}

Page 103: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDOR ORIENTADO A CONEXIÓN ITERATIVO SERVIDOR ORIENTADO A CONEXIÓN ITERATIVO (ALGORITMO):(ALGORITMO):( )( )

– CREA UN SOCKET Y LE ASOCIA (”BIND”) UN NÚMERO DE PUERTO Y UN NÚMERO IP LOCAL

» LA CONSTANTE “INADDR ANY” ESPECIFICA QUE EL» LA CONSTANTE INADDR_ANY ESPECIFICA QUE EL SERVIDOR GATEWAY PUEDE ACEPTAR DATOS EN CUALQUIERA DE SUS NUMEROS IP.

– EL SOCKET QUEDA EN MODO PASIVO ESPERANDO PETICIONES SOC QU O O S O S O C O S(“LISTEN”)

– ACEPTA UNA CONEXIÓN Y OBTIENE UN NUEVO SOCKET PARA ATENDER ESA PETICIÓN

– REPETIDAMENTE LEE UNA PETICIÓN DEL CLIENTE FORMULA UNA RESPUESTA ENVIANDÓLA DE ACUERDO AL PROTOCOLO

– CUANDO FINALIZA CON UN CLIENTE PARTICULAR CIERRA LA

LUIS MENGUAL (c)

CUANDO FINALIZA CON UN CLIENTE PARTICULAR CIERRA LA CONEXION Y VUELVE A ACCEPTAR UNA NUEVA CONEXIÓN

Page 104: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDOR ORIENTADO A CONEXIÓN ITERATIVOSERVIDOR ORIENTADO A CONEXIÓN ITERATIVOSERVIDOR ORIENTADO A CONEXIÓN ITERATIVOSERVIDOR ORIENTADO A CONEXIÓN ITERATIVO

SERVIDOR

PROCESO DE APLICACIÓN

SISTEMA OPERATIVOSOCKET PARA SOCKET PARA

LUIS MENGUAL (c)

SOCKET PARA PETICIÓN DE CONEXIONES

SOCKET PARA UNA CONEXIÓN INDIVIDUAL

Page 105: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SO S OSO S OSOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓN IMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓN ITERATIVO PARA EL SERVICIO DAYTIMEITERATIVO PARA EL SERVICIO DAYTIME

intmain(argc, argv)int argc;char *argv[ ]{

struct sockaddr_in fsin;char *service = “daytime” ;int ssock, msock;i t lint alen;swich (argc) {case 1:

break;break;case 2:

service= argv[1]break;

LUIS MENGUAL (c)

break;default:

errexit(“usage: TCPdaytimed [port]\n”);}

Page 106: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SO S OSO S OSOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓN IMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓN ITERATIVO PARA EL SERVICIO DAYTIMEITERATIVO PARA EL SERVICIO DAYTIME

msock = passiveTCP (service, QLEN);while (1) {

k t ( k ( t t k dd *)&f i & l )

ITERATIVO PARA EL SERVICIO DAYTIMEITERATIVO PARA EL SERVICIO DAYTIME

ssock = accept (msock, (struct sockaddr *)&fsin, &alen);if (ssock < 0)

errexit(“accept failed: %s\n”, sys_errlist[errno]);TCPdaytimed(ssock);TCPdaytimed(ssock);close (ssock);

} }intintTCPdaytimed(fd)int fd;{ char *pts;{ char pts;

time_t now;char *ctime(&now);(void) time(&now);

LUIS MENGUAL (c)

( ) ( );pts = ctime(&now);(void) write(fd, pts, strlen(pts));return 0; }

Page 107: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDOR ORIENTADO A CONEXIÓN CONCURRENTE SERVIDOR ORIENTADO A CONEXIÓN CONCURRENTE (ALGORITMO):(ALGORITMO):

CREA UN SOCKET Y LE ASOCIA (”BIND”) UN NUMERO DE PUERTO– CREA UN SOCKET Y LE ASOCIA (”BIND”) UN NUMERO DE PUERTO Y UN NUMERO IP LOCAL

– EL SOCKET QUEDA EN MODO PASIVO ESPERANDO PETICIONES (“LISTEN”)(“LISTEN”)

– REPETIDAMENTE LLAMA A “ACEPT” PARA RECIBIR PETICIONES DE CLIENTES Y CREAR UN PROCESO HIJO PARA PROCESAR CADA PETICIONPETICION

» EL PROCESO HIJO RECIBE LA PETICION» INTERACTÚA CON EL CLIENTE A TRAVES DE LA CONEXIÓN

(“READ” “WRITE”)(“READ”, “WRITE”)» EL PROCESO HIJO CIERRA FINALMENTE LA CONEXIÓN

LUIS MENGUAL (c)

Page 108: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDOR ORIENTADO A CONEXIÓN CONCURRENTESERVIDOR ORIENTADO A CONEXIÓN CONCURRENTESERVIDOR ORIENTADO A CONEXIÓN CONCURRENTESERVIDOR ORIENTADO A CONEXIÓN CONCURRENTE

PADRE

HIJO1 HIJO2 HIJOn

PROCESO DE APLICACIÓN. . .

SISTEMA OPERATIVOSOCKET PARA SOCKET PARA

LUIS MENGUAL (c)

SOCKET PARA PETICIÓN DE CONEXIONES

SOCKET PARA CONEXIONES INDIVIDUALES

Page 109: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SO S OSO S OSOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓNIMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓNCONCURRENTE PARA EL SERVICIO ECHOCONCURRENTE PARA EL SERVICIO ECHOCONCURRENTE PARA EL SERVICIO ECHOCONCURRENTE PARA EL SERVICIO ECHO

intmain(argc, argv)i tint argc;char *argv[ ]{

struct sockaddr in fsin;struct sockaddr_in fsin;char *service = “daytime” ;int ssock, msock;int alen;int alen;swich (argc) {case 1:

break;break;case 2:

service= argv[1]break;

LUIS MENGUAL (c)

break;default:

errexit(“usage: TCPdaytimed [port]\n”);}

Page 110: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SO S OSO S OSOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓNIMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓNCONCURRENTE PARA EL SERVICIO ECHOCONCURRENTE PARA EL SERVICIO ECHO

msock = passiveTCP(service, QLEN);(void) signal(SIGCHILD, reaper);

CONCURRENTE PARA EL SERVICIO ECHOCONCURRENTE PARA EL SERVICIO ECHO

while (1) {alen = sixeof(fsin);ssock = accept(msock, (struct sockaddr *)&fsin, &alen);if (ssock < 0) {

if (errno == EINTR)continue;it(“ t % \ ” li t[ ] )errexit(“accept: %s\n”, sys_errlist[errno] );

}swich (fork( )) {case 0: // PROCESO HIJOcase 0: // PROCESO HIJO

(void) close(msock);exit(TCPechod(ssock));

default:

LUIS MENGUAL (c)

default:(void) close(ssock);break;

Page 111: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SO S OSO S OSOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓNIMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓNCONCURRENTE PARA EL SERVICIO ECHOCONCURRENTE PARA EL SERVICIO ECHO

case -1:errexit(“fork: %s\n”, sys_errlist[errno]);

CONCURRENTE PARA EL SERVICIO ECHOCONCURRENTE PARA EL SERVICIO ECHO

}}

}intTCPecho(fd)int fd;{{

char buf[BUFSIZ];int cc;while (cc = read(fd buf sizeof(buf) {while (cc = read(fd, buf, sizeof(buf) {

if (cc < 0) errxit(“echo read: %s\n”, sys_errlist[errno]);if (write(fd, buf, cc) < 0)

errxit(“echo write: %s\n” sys errlist[errno]);

LUIS MENGUAL (c)

errxit( echo write: %s\n , sys_errlist[errno]); }return 0;

}

Page 112: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDOR NO ORIENTADO A CONEXIÓN SERVIDOR NO ORIENTADO A CONEXIÓN CONCURRENTECONCURRENTE (ALGORITMO)(ALGORITMO)CONCURRENTE CONCURRENTE (ALGORITMO):(ALGORITMO):

– CREA UN SOCKET Y LE ASOCIA (”BIND”) UN NÚMERO DE PUERTO Y UN NÚMERO IP LOCAL

– REPETIDAMENTE LLAMA A “RECVFROM” PARA RECIBIR UNA CONEXIÓN DE UN CLIENTE Y CREA UN PROCESO HIJO PARA ATENDER LA CONEXIÓN

» EL PROCESO HIJO RECIBE LA PETICIÓN DEL PADRE» RESPONDE A LA PETICIÓN CON “SENDTO”» EL PROCESO HIJO TERMINA DESPUÉS DE MANEJAR LA» EL PROCESO HIJO TERMINA DESPUÉS DE MANEJAR LA

CONEXIÓN

LUIS MENGUAL (c)

Page 113: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDOR UDP CONCURRENTE PTO SECUNDARIOSERVIDOR UDP CONCURRENTE PTO SECUNDARIO

SERVIDOR PRINCIPALCLIENTE

Pto serviciosp=Socket principalRecvfrom(...,&Cli)

Pto servicios=Socket sendto(s,...., &SPrin,...))

1er datagrama del clienteRecvfrom(...,&Cli)( , , , ))

Recvfrom(s,.. &SSec,... )FORK(Hijo/hilo)

Crea Pto efimerosendto(s,...., &SSec,...))Recvfrom(s,.. &SSec,... )

SERVIDOR SECUNDARIO

ss=Socket secundario()Bind(ss)sendto(ss,..&Cli,...)

LUIS MENGUAL (c)

Recvfrom(ss, ....)sendto(ss,...)

Page 114: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDOR ORIENTADO A CONEXIÓN. SIMULACION SERVIDOR ORIENTADO A CONEXIÓN. SIMULACION CONCURRENCIA USANDO UN SOLO PROCESO. CONCURRENCIA USANDO UN SOLO PROCESO. (ALGORITMO):(ALGORITMO):(ALGORITMO):(ALGORITMO):

– CREA UN SOCKET Y LE ASOCIA (”BIND”) UN NÚMERO DE PUERTO Y UN NÚMERO IP LOCAL

– USO DE “SELECT” PARA ESPERAR OPERACIONES E/S EN LOS SOCKETS EXISTENTES

– SI SE DETECTA UNA CONEXIÓN EN EL SOCKET ORIGINAL SE HACE UNA LLAMADA A “ACCEPT”, SE CREA UN NUEVO SOCKET Y SE AÑADE ESTE A LA LISTA DE SOCKETS QUE TESTEA “SELECT”

– SI SE DETECTAN PETICIONES EN LOS SOCKETS DISTINTOS DEL ORIGINAL SE UTILIZARÁN LAS LLAMADAS “READ” PARA LEER LAORIGINAL SE UTILIZARÁN LAS LLAMADAS “READ” PARA LEER LA PETICIÓN Y “WRITE” PARA ENVIAR LA RESPUESTA

LUIS MENGUAL (c)

Page 115: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDOR ORIENTADO A CONEXIÓNSERVIDOR ORIENTADO A CONEXIÓN--UN SOLO PROCESOUN SOLO PROCESOSERVIDOR ORIENTADO A CONEXIÓNSERVIDOR ORIENTADO A CONEXIÓN UN SOLO PROCESOUN SOLO PROCESO

SERVIDOR

PROCESO DE APLICACIÓN

. . .

SISTEMA OPERATIVOSOCKET PARASOCKET PARA

LUIS MENGUAL (c)

SOCKET PARA CONEXIONES INDIVIDUALES

SOCKET PARA PETICIÓN DE CONEXIONES

Page 116: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

E/S ASINCRONASE/S ASINCRONASE/S ASINCRONASE/S ASINCRONAS

SELECT System Call int select(int nfds, fd_set *readfds,fd_set *writefds, fd_set *exfds, t t ti l *ti t)struct timeval *timeout)– LA LLAMADA AL SISTEMA SELECT PERMITE QUE UN PROCESO DE

USUARIO ORDENE AL KERNEL QUE ESPERE QUE SE PRODUZCAN OPERACIONES DE E/S SOBRE UN COJUNTO DE DESCRIPTORES DEOPERACIONES DE E/S SOBRE UN COJUNTO DE DESCRIPTORES DE FICHEROS Y AVISE AL PROCESO CUANDO UNO DE ESTOS EVENTOS OCURRA.

– FD_SET ES UNA ESTRUCTURA DE BITS, O MÁSCARA QUE IDENTIFICA (MAPEA) UN CONJUTO DE DESCRIPTORES DE FICHEROS(MAPEA) UN CONJUTO DE DESCRIPTORES DE FICHEROS

– SELECT RETORNA EL DESCRIPTOR DE FICHERO EN EL QUE SE PRODUCEN OPERACIONES DE E/S; “0” SI SE SUPERA UN LÍMITE DE TIEMPO Y -1 SI SE PRODUCE UN ERROR

– SI EL PARÁMETRO DE TIMEOUT ES NULO SE ESPERA INDEFINIDAMENTE HASTA QUE SE PRODUZCA UNA OPERACIÓN E/S

LUIS MENGUAL (c)

Page 117: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

E/S ASINCRONASE/S ASINCRONASE/S ASINCRONASE/S ASINCRONAS

LA ESTRUCTURA FD_SET SE MANEJA CON LAS MACROS:LAS MACROS:

– FD_ZERO(fd_set *fdset) INICIILIZA LA MASCARA fdsetFD SET(int fd fd set *fdset) :– FD_SET(int fd, fd_set *fdset) : AÑADE EL DESCRIPTOR fd AL CONJUNTO fdset

– FD_CLR(int fd, fd_set *fdset) : BORRA EL DESCRIPTOR fd DEL CONJUNTO fdsetBORRA EL DESCRIPTOR fd DEL CONJUNTO fdset

– FD_ISSET(int fd, fd_set *fdset) : TESTEA SI SOBRE EL DESCRIPTOR fd SE HA PRODUCIDO UNA OPERACION DE E/SPRODUCIDO UNA OPERACION DE E/S

LUIS MENGUAL (c)

Page 118: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓN IMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓN ----UN SOLO PROCESO PARA ELSERVICIO ECHOUN SOLO PROCESO PARA ELSERVICIO ECHO

intmain(argc, argv)main(argc, argv)int argc;char *argv[ ]{{

struct sockaddr_in fsin;char *service = “echo” ;int msock;time_t now;int alen, fd, nfds;fd_set rfds, afds; * conjunto descriptores lectura y activos */swich (argc) {case 1:

break;2

LUIS MENGUAL (c)

case 2:service= argv[1 ]break;

Page 119: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓN IMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓN ----UN SOLO PROCESO PARA ELSERVICIO ECHOUN SOLO PROCESO PARA ELSERVICIO ECHO

default:errexit(“usage: TCPmechod [port]\n”);

}msock = passiveTCP(service. QLEN);nfds = msock+1;FD ZERO(& fd )FD_ZERO(&afds);FD_SET(msock, &afds);while (1) {

bcopy( (char *)&afds (char *)&rfds sizeof(rfds) );bcopy( (char *)&afds, (char *)&rfds, sizeof(rfds) );if (select (nfds, &rfds, (fd_set *)0, (fd_set *)0, (struct tiemval *)0 < 0

errexit(“select: %s\n”, sys_errlist[errno]);if (FD ISSET(msock &rfds)) {if (FD_ISSET(msock, &rfds)) {

int ssock;alen=sizeof(fsin);ssock=accept(msock (struct sockaddr *)&fin &alen);

LUIS MENGUAL (c)

ssock accept(msock, (struct sockaddr )&fin, &alen);if (ssock < 0 )

errexit(“accept: %s\n”, sys_errlist[errno]);

Page 120: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓN IMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓN ----UN SOLO PROCESO PARA ELSERVICIO ECHOUN SOLO PROCESO PARA ELSERVICIO ECHO

FD_SET(ssock, &afds);fd_client=ssock;nfds = MAX(nfds, fd_client)+ 1 ;

}}for (fd=0; fd<nfds; ++fd)

if (fd != msock &&FD_ISSET(fd, &rfds) )if (echo(fd) == 0) {if (echo(fd) == 0) {

(void) close(fd);FD_CLR(fd, &afds);

}}

} //while

LUIS MENGUAL (c)

Page 121: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓN IMPLEMENTACIÓN DE UN SERVIDOR ORIENTADO A CONEXIÓN ----UN SOLO PROCESO PARA ELSERVICIO ECHOUN SOLO PROCESO PARA ELSERVICIO ECHO

intecho(fd)echo(fd)int fd;{char buf[BUFSIZ]char buf[BUFSIZ]int cc;cc = read(fd, buf, sizeof(buf));if ( 0)if (cc < 0)

errexit(“echo read: %s\n”, sys_errlist[errno]); if (cc && write (fd, buf, cc) < 0)

errexit(“echo write: %s\n”, sys_errlist[errno]); return cc;

}

LUIS MENGUAL (c)

}

Page 122: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDOR ITERATIVO MULTIPROTOCOLO SERVIDOR ITERATIVO MULTIPROTOCOLO (ALGORITMO):(ALGORITMO):( )( )

– EL SERVIDOR INICIALMENTE ABRE DOS SOCKETS UNO PARA TCP Y EL OTRO PARA UDP

– SE USA “SELECT” PARA ESPERAR PETICIONES EN LOS SOCKETSSE USA SELECT PARA ESPERAR PETICIONES EN LOS SOCKETS ABIERTOS

– SI SE RECIBE UNA PETICION TCP SE CREA CON “ACCEPT” UN NUEVO SOCKET PARA ATENDER LA PETICIÓNU O SOC C Ó

– SI SE RECIBE UNA PETICION UDP SE USA “RECVFROM” PARA LEER LOS DATOS Y OBTENER LA DIRECCION DEL REMITENTE. CON “SENDTO” SE DEVUELVE LA RESPUESTA

LUIS MENGUAL (c)

Page 123: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDOR ITERATIVO MULTIPROTOCOLOSERVIDOR ITERATIVO MULTIPROTOCOLOSERVIDOR ITERATIVO MULTIPROTOCOLOSERVIDOR ITERATIVO MULTIPROTOCOLO

SERVIDOR

PROCESO DE APLICACION

SISTEMA OPERATIVOSOCKET PARASOCKET PARA SOCKET PARA

LUIS MENGUAL (c)

SOCKET PARA CONEXION TCP

SOCKET PARA PETICION UDP

SOCKET PARA PETICION TCP

Page 124: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACIÓN DE UN SERVIDOR ITERATIVO MULTIPROTOCOLO IMPLEMENTACIÓN DE UN SERVIDOR ITERATIVO MULTIPROTOCOLO PARA EL SERVICIO DAYTIMEDPARA EL SERVICIO DAYTIMEDPARA EL SERVICIO DAYTIMEDPARA EL SERVICIO DAYTIMED

intmain(argc, argv)main(argc, argv)int argc;char *argv[ ]{{

struct sockaddr_in fsin;char *service = “daytimed” ;int tsock, usock, nfds, alen;fdset rfds /*descriptor de ficheros de lectura */swich (argc) {case 1:

break;case 2:

service= argv[1 ]b k

LUIS MENGUAL (c)

break;default:

errexit(“usage: daytimed [port]\n”

Page 125: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACION DE UN SERVIDOR ITERATIVO MULTIPROTOCOLO IMPLEMENTACION DE UN SERVIDOR ITERATIVO MULTIPROTOCOLO PARA EL SERVICIO DAYTIMEDPARA EL SERVICIO DAYTIMEDPARA EL SERVICIO DAYTIMEDPARA EL SERVICIO DAYTIMED

tsock = passiveTCP(service, QLEN);usock = passiveUDP (service);nfds = MAX(tsock usock) +1nfds = MAX(tsock, usock) +1FD_ZERO(&rfds);while (1) {

FD SET(tsock &rfds);FD_SET(tsock, &rfds);FD_SET(usock, &rfds);if (select(nfds, &rfds, (fd_set *) 0, (fd_set *) 0, (struct timeval *)0 < 0)

errexit(“select error: %s\n”, sys errlist[errno];e e t( se ect e o %s\ , sys_e st[e o];if (FD_ISSET(tsock, &rfds) ) {

int ssock;alen = sizeof(fsin);( )ssock = accept(tsock, (struct sockaddr *)¬fsin, &alen);if (ssock < 0)errexit(“acept failed: %s\n”, sys_errlist[errno];

LUIS MENGUAL (c)

daytimed(buf);(void) write(ssock, buf, strlen(buf) );(void) close(ssock); }

Page 126: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACION DE UN SERVIDOR ITERATIVO MULTIPROTOCOLO IMPLEMENTACION DE UN SERVIDOR ITERATIVO MULTIPROTOCOLO PARA EL SERVICIO DAYTIMEDPARA EL SERVICIO DAYTIMED

SOFTWARE SERVIDORSOFTWARE SERVIDORPARA EL SERVICIO DAYTIMEDPARA EL SERVICIO DAYTIMED

if (FD_ISSET(usock, &rfds) ) {alen = sizeof(fsin);if (recvfrom(usock, buf, sizeof(buf), 0,

(struct sockaddr *) &fsin, &alen) < 0)errexit(“recvfrom: %s\n”, sys_errlist[errno];

d ti d(b f)daytimed(buf);(void) sendto (usock, buf, strlen(buf), 0,

(struct sockaddr *)&fsin, sizeof(fsin) );}}

}intdaytime(buf)daytime(buf)char buf[];char *ctime();time t time() now;

LUIS MENGUAL (c)

time_t time(), now;(void) time(&now);sprintf (buf, “%s”, ctime(&now); }

Page 127: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDOR MULTISERVICIO ITERATIVO SERVIDOR MULTISERVICIO ITERATIVO ORIENTADO A CONEXION ORIENTADO A CONEXION

SERVIDOR

PROCESO DE APLICACION. .

SISTEMA OPERATIVO

PROCESO DE APLICACION

LUIS MENGUAL (c)

SISTEMA OPERATIVO

UN SOCKET PARA CADA SERVICIO OFRECIDO

UN SOCKET PARA UNA CONEXION INDIVIDUAL

Page 128: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDOR MULTISERVICIO ITERATIVOSERVIDOR MULTISERVICIO ITERATIVOSERVIDOR MULTISERVICIO ITERATIVOSERVIDOR MULTISERVICIO ITERATIVONO ORIENTADO A CONEXIONNO ORIENTADO A CONEXION

SERVIDOR

OC SO C C O

. . .

SISTEMA OPERATIVO

PROCESO DE APLICACION

LUIS MENGUAL (c)

SISTEMA OPERATIVO

UN SOCKET PARA CADA SERVICIO OFRECIDO

Page 129: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDOR MULTISERVICIO CONCURRENTESERVIDOR MULTISERVICIO CONCURRENTEORIENTADO A CONEXIONORIENTADO A CONEXION

PADRE

HIJO 1 HIJO

PROCESO DE APLICACION

HIJO 1 HIJO n

SISTEMA OPERATIVO

. . .. .

LUIS MENGUAL (c)

UN SOCKET PARA CADA SERVICIO OFRECIDO

SOCKET PARA CONEXIONES INDIVIDUALES

Page 130: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

SERVIDOR MULTISERVICIO CONCURRENTESERVIDOR MULTISERVICIO CONCURRENTEORIENTADO A CONEXION ORIENTADO A CONEXION

PADRE

HIJO1 HIJOn

EXECVE

PROCESO DE APLICACION

PROG1 PROGn

SISTEMA OPERATIVO

. . .. .

LUIS MENGUAL (c)

UN SOCKET PARA CADA SERVICIO OFRECIDO

SOCKET PARA CONEXIONES INDIVIDUALES

Page 131: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACION DE UN SERVIDOR MULTISERVICIO IMPLEMENTACION DE UN SERVIDOR MULTISERVICIO

struct service {struct service {char *sv_name;char sv_useTCP;i t kint sv_sock;int (*sv_func) ( );

}svent[ ] = { { “echo”, TCP_SERV, NOSOCK, TCPechod },

{ “chargen”, TCP_SERV, NOSOCK, TCPchargen },{ “daytime”, TCP SERV, NOSOCK, TCPdaytimed },{ y , _ , , y },{ “time”, TCP_SERV, NOSOCK, TCPtimed },{0 , 0 , 0 , 0 , 0 },

}

LUIS MENGUAL (c)

}

Page 132: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACION DE UN SERVIDOR MULTISERVICIO IMPLEMENTACION DE UN SERVIDOR MULTISERVICIO

intmain(argc, argv)int argc;int argc;char *argv[ ]{

struct service *psv *fd2sv[NOFILE];struct service psv, fd2sv[NOFILE];int fd, nfds;fd_set afds, rfds;swich (argc) {s c (a gc) {case 1:

break;case 2:

portbase= (u_short) atoi( argv[1] ) ;break;

default:

LUIS MENGUAL (c)

errexit(“usage: superd [portbase]\n”);}

Page 133: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACION DE UN SERVIDOR MULTISERVICIO IMPLEMENTACION DE UN SERVIDOR MULTISERVICIO fd 0nfds = 0;

FD_ZERO(&afds);for (psv = &svent [0]; psv->sv_name; ++psv) {

if (psv >sv useTCP)if (psv ->sv_useTCP)psv->sv_sock = passiveTCP(psv->sv_name, QLEN);

elsepsv >sv sock = passiveUDP(psv >sv name);psv->sv_sock = passiveUDP(psv->sv_name);

fd2sv [psv->sv_sock] = psv;nfds = MAX (psv->sv_sock+1, nfds);FD SET(psv->sv sock &afds);FD_SET(psv >sv_sock, &afds);

}(void) signal (SIGCHILD, reaper);while (1)while (1)

bcopy( (char *)&afds, (char *)&rfds, sizeof(rfds) );if (select(nfds, &rfds, (fd_set *)0, (fd_set *)0, (struct timeval *)0) <0) {

if (errno = EINTR)

LUIS MENGUAL (c)

( )continue;errexit(“select error: %s\n”, syserrlist[errno] );

}

Page 134: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACION DE UN SERVIDOR MULTISERVICIO IMPLEMENTACION DE UN SERVIDOR MULTISERVICIO

for (fd=0; fd<nfds; ++fd)if (FD_ISSET(fd, &rfds) ) {

psv = fd2sv[fd];psv fd2sv[fd];if (psv->sv_useTCP)

doTCP(psv);else

psv->sv_func(psv->sv_sock);}

}}}

intdoTCP(psv)struct service *psv;{

t t k dd i f i

LUIS MENGUAL (c)

struct sockaddr_in fsin;int alen;int fd, ssock;

Page 135: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

IMPLEMENTACION IMPLEMENTACION SOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDOR

IMPLEMENTACION DE UN SERVIDOR MULTISERVICIO IMPLEMENTACION DE UN SERVIDOR MULTISERVICIO

falen = sizeof(fsin);ssock = accept(psv->sv_sock, (struct sockaddr *)&fsin, &alen);if (ssock < 0)if (ssock < 0)

errexit(“accept: %s\n”, sys_errlist[errno]);switch (fork( ) ) {case 0:

break;case -1

errexit(“fork %s\n”, sys_errlist[errno]);( y )default:

(void) close(ssock); // Padrereturn;

}for (fd = nofile; fd>=0, --fd) // Hijo

if (fd != ssock)( id) l (fd)

LUIS MENGUAL (c)

(void) close(fd);exit(psv->sv_func(ssock));

}

Page 136: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

EFICIENCIA Y GESTIÓN DEL EFICIENCIA Y GESTIÓN DEL SOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDOR

Elección entre un modelo iterativo y concurrenteNivel de concurrencia Nivel de concurrencia

Coste de la concurrenciaC i f ió d l d d Concurrencia en función de la demanda

LUIS MENGUAL (c)

Page 137: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

EFICIENCIA Y GESTIÓN DEL EFICIENCIA Y GESTIÓN DEL SOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDOR

4 elementos a considerar:– Longitud de los Buffer emisión/recepción– Estimación velocidad de llegada de peticiones – Tiempo de proceso de una petición– Tiempo de creación de procesos hijos– Tiempo de creación de procesos hijos

LUIS MENGUAL (c)

Page 138: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

EFICIENCIA Y GESTIÓN DEL EFICIENCIA Y GESTIÓN DEL SOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDOR

procesopetición 1

procesopetición 2

CP

creacion hijo 1 creacion hijo 2

petición 1 petición 2

32

C P unidades de tiempopor petición

0 C 2C 2C+P

j j

(C+P)+(2C+P)

3

(C+P)+(2C+P)

0 P 2P

procesopetición 1

procesopetición 2

32

Punidades de tiempo

por petición

LUIS MENGUAL (c)

0 P 2P

P+(2P)

Page 139: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

EFICIENCIA Y GESTIÓN DEL EFICIENCIA Y GESTIÓN DEL SOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDOR

CREACION INICIAL DE “N” PROCESOS HIJOS

El servidor crea N procesos hijos Cuando llega una petición un proceso hijo

gestiona la peticiónC d fi li l d ti ió l Cuando finaliza el proceso de una petición el el proceso hijo se queda a la espera de recibir otras peticionesot as pet c o es

LUIS MENGUAL (c)

Page 140: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

EFICIENCIA Y GESTIÓN DEL EFICIENCIA Y GESTIÓN DEL SOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDOR

CREACION INICIAL DE “N” PROCESOS HIJOSEN UN SERVIDOR ORIENTADO A CONEXIÓN

* Los Hijos/ Hilos esperan en la llamada bloqueante “accept()”

PADRE

Los Hijos/ Hilos esperan en la llamada bloqueante accept()

HIJO1 HIJO2 HIJOn

PROCESO DE APLICACION. . .

SISTEMA OPERATIVO

PROCESO DE APLICACION

LUIS MENGUAL (c)

SISTEMA OPERATIVOSOCKET PARA

PETICION DE CONEXIONESSOCKET PARA

CONEXIONES INDIIVIDUALES(CREADAS POR ACCEPT)

Page 141: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

EFICIENCIA Y GESTIÓN DEL EFICIENCIA Y GESTIÓN DEL SOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDOR

CREACION INICIAL DE “N” PROCESOS HIJOSEN UN SERVIDOR NO ORIENTADO A CONEXIÓN

*Los Hijos/ Hilos esperan en la llamada bloqueante “recvfrom()”

PADRE

Los Hijos/ Hilos esperan en la llamada bloqueante recvfrom()

HIJO1 HIJO2 HIJOn

PROCESO DE APLICACION. . .

SISTEMA OPERATIVO

PROCESO DE APLICACION

LUIS MENGUAL (c)

SOCKET EN ELPUERTO DE SERVICIO

Page 142: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

EFICIENCIA Y GESTIÓN DEL EFICIENCIA Y GESTIÓN DEL SOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDORSOFTWARE SERVIDOR

CREACION DINÁMICA DE PROCESOS HIJOSCREACION DINÁMICA DE PROCESOS HIJOS

El d l ibi ti ió i i i El proceso padre al recibir una petición inicia un temporizador y empieza a procesar la petición de manera iterativap

Si el proceso padre finaliza el proceso de la petición antes de vencer un tiempo

d fi id l l t i dpredefinido cancela el temporizador Si el temporizador vence antes de atender la

petición el proceso padre crea un hijo parapetición el proceso padre crea un hijo para gestionar dicha petición

LUIS MENGUAL (c)

Page 143: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

EFICIENCIA Y GESTIÓN DEL EFICIENCIA Y GESTIÓN DEL SOFTWARE SERVIDORSOFTWARE SERVIDOR

COMPARACIÓN DE TÉCNICAS

SOFTWARE SERVIDORSOFTWARE SERVIDOR

COMPARACIÓN DE TÉCNICAS

L ió i i i l d hij útil La creación inicial de procesos hijos es útil en servidores concurrentes no orientados a conexión (P<C)( )

La creción dinámica de procesos hijos es util cuando el tiempo de proceso varía en función d l ti ióde la petición

Un servidor puede crear un hijo dinámicamente y luego dejarlo creado paradinámicamente y luego dejarlo creado para atender nuevas peticiones

LUIS MENGUAL (c)

Page 144: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

¿ CUÁNDO USAR CADA TIPO DE SERVIDOR ?¿ CUÁNDO USAR CADA TIPO DE SERVIDOR ?::– SERVIDOR ITERATIVO:

» SI EL TIEMPO DE PROCESO DE UNA PETICION ES CORTO Y UNA SOLUCION ITERATIVA PRODUCE TIEMPO DE RESPUESTA SUFICIENTEMENTE RÁPIDOS PARA LA APLICACIÓN.

– SERVIDORES QUE SIMULAN CONCURRENCIA USANDO UN SOLO PROCESO:

» USAR UN SOLO PROCESO SI EL SERVIDOR DEBE COMPARTIR O» USAR UN SOLO PROCESO SI EL SERVIDOR DEBE COMPARTIR O INTERCAMBIAR DATOS ENTRE CONEXIONES

» EL TIEMPO DE PROCESO DE CADA PETICIÓN DEBE SER CORTO

LUIS MENGUAL (c)

Page 145: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

SOFTWARESOFTWARES OS OSERVIDORSERVIDOR

¿ CUANDO USAR CADA TIPO DE SERVIDOR ?¿ CUANDO USAR CADA TIPO DE SERVIDOR ?::– SERVIDORES CONCURRENTES:

» SI LOS PROCESOS HIJOS OPERAN INDEPENDIENTEMENTE» SI LOS PROCESOS HIJOS OPERAN INDEPENDIENTEMENTE» SI EL TIEMPO REQUERIDO PARA CREAR UN PROCESO HIJO ES

MUCHO MAS PEQUEÑO QUE EL TIEMPO REQUERIDO PARA PROCESAR UNA PETICIÓN

– SERVIDORES NO ORIENTADOS A CONEXION:» SI LA APLICACION MANEJA LA FIABLILIDAD» SI EL CLIENTE Y EL SERVIDOR ESTÁN EN UNA RED DE ÁREA» SI EL CLIENTE Y EL SERVIDOR ESTÁN EN UNA RED DE ÁREA

LOCAL– SERVIDORES ORIENTADOS A CONEXION

SI EL CLIENTE Y EL SERVIDOR ESTAN SEPARADOS POR UNA– SI EL CLIENTE Y EL SERVIDOR ESTAN SEPARADOS POR UNA RED DE ÁREA EXTENDIDA

LUIS MENGUAL (c)

Page 146: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

WINDOWS SOCKETSWINDOWS SOCKETS

Winsock 1– API para Microsoft Windows basado en el BSD (Berkeley

Software Distribution) – Funciones equivalentes a BSD para TCP/IP

» socket(), accept(), bind(), closesocket(), connect(), recv(), send(),select(),sendto() .....

– Funciones adaptadas al S O Windows– Funciones adaptadas al S.O Windows» WSAStartup(), WSACleanup(), WSAAsynSelect(),......

Winsock 2E t ió d i k1– Extensión de winsock1

» Soporte multiprotocolo, Multicast, Calidad de servicio, Aceptación condicional, Comparticion socket

– Nuevas funciones:– Nuevas funciones:» WSASocket(), WSAAccept, WSAConnect(), WSARecv(),

WSASend(), WSASendto(),WSARecvfrom(), WSADuplicateSocket()

LUIS MENGUAL (c)

Page 147: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

WINDOWS SOCKETSWINDOWS SOCKETSCabeceras LibreríasCabeceras LibreríasCabeceras y LibreríasCabeceras y Librerías

Wi k 1 Winsock 1– <Winsock.h> (librería Wsock32.lib)– Windows CE

Winsock 2– <Winsock2.h> (librería Ws2_32.lib)– Windows 98, Me, NT, 2000, XP– Extensiones:

» Ws2tcpip.h (Utilizada en multicast con Winsock2)» Debe ser utilizada con las librerías

– Wsock32.lib y Ws2_32.lib

LUIS MENGUAL (c)

Page 148: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

WINDOWS SOCKETSWINDOWS SOCKETSComparación BerkeleComparación Berkele socketssocketsComparación BerkeleyComparación Berkeley--socketssockets

Windows Sockets Berleley SocketsWSAStartup( )/WSAcleanup

(Inicializacion Windows Sockets dll) ---------------

int socket(); SOCKET socket(); (Inicializacion Windows Sockets dll)

send() / recv() read() / write()send() / recv()

closesocket() close()closesocket()errnoWSAGetLastError()()ioctl()ioctlsockets()

bzero()memset()memset()

fork()-------arpa/inet.h, sys/socket.h

ti t/i h tdb hwinsock.hwinsock2 h

LUIS MENGUAL (c)

netinet/in.h, netdb.hwinsock2.h

Page 149: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

WINDOWS SOCKETSWINDOWS SOCKETSWINDOWS SOCKETS WINDOWS SOCKETS

CÓDIGO CONNECT // Llamadas para la inicialización de// las librería Windows Sockets por un proceso

#include <winsock2.h> (librería ws2_32.lib)

wVersionRequested = MAKEWORD( 2 2 );wVersionRequested MAKEWORD( 2, 2 ); error = WSAStartup( wVersionRequested, &wsaData );if ( error != 0 ) return(INVALID_SOCKET);

if ( LOBYTE( wsaData.wVersion ) != 2 ||HIBYTE( wsaData.wVersion ) != 2 )

{{WSACleanup( );return(INVALID_SOCKET);

}

LUIS MENGUAL (c)

Page 150: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

WINDOWS CE SOCKETSWINDOWS CE SOCKETSWINDOWS CE SOCKETS WINDOWS CE SOCKETS

// Llamadas para la inicialización de las librería Windows CE Sockets// Llamadas para la inicialización de las librería Windows CE Sockets

#include <winsock.h> (librería wsock32.lib)

int CMY_SERVIDORDlg::InitSocket(){

//variablesWSADATA wsaData;

if(WSAStartup(MAKEWORD(1,1), &wsaData) != 0){

AfxMessageBox(TEXT("error inicializando\nwinsock dll"), MB_OK | MB_ICONEXCLAMATION);

t 1return 1;}

else return 0;

LUIS MENGUAL (c)

}//init socket

Page 151: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

WINDOWS SOCKETSWINDOWS SOCKETSWINDOWS SOCKETS WINDOWS SOCKETS

CÓDIGO CONNECT SOCKET s;// Abrimos un socket TCP en el clientes = socket(AF INET, type, 0);s soc et( _ , type, 0);if (s == INVALID_SOCKET){

printf("ERROR AL LLAMAR A SOCKET: %d\n",WSAGetLastError());return(s ); }( ) }

// Cargamos en la estructura sinserv el Nº de Puerto y dir IPdel Servidormemset((void*)&sinserv,0,sizeof(sinserv));sinserv.sin_family = AF_INET; sinserv.sin_port=htons((u_short)atoi(pto_service));sinserv.sin_addr.s_addr = inet_addr(host);

// Asociamos a socket s creado la estructura sinserv que contiene la// Direccion IP y el número de puerto del Servidor

if ( t( ( t t k dd *)& i i f( i )) SOCKET ERROR)

LUIS MENGUAL (c)

if (connect(s, (struct sockaddr *)&sinserv, sizeof(sinserv)) == SOCKET_ERROR){ ................ return(INVALID_SOCKET); }return (s); }

Page 152: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

WINDOWS SOCKETSWINDOWS SOCKETSWINDOWS SOCKETS WINDOWS SOCKETS

CÓDIGO CLIENTE TCP

SOCKET sockCL;

CÓDIGO CLIENTE TCP

SOCKET sockCL;sockCL=connectTCP(host,pto_service);if (sockCL= INVALID_SOCKET) ...exit (0);

nDatosFichCL= send(sockCL,(char *)&OneFDA,sizeof(OneFDA),0); if (nDatosFichCL == SOCKET_ERROR) .........

while (condición){

(nDatosFichSR=recv(sockCL (char *)&SrFDA sizeof(SrFDA) 0);(nDatosFichSR=recv(sockCL,(char )&SrFDA,sizeof(SrFDA),0);if (nDatosFichSR== SOCKET_ERROR) ...........

}

LUIS MENGUAL (c)

}

Page 153: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

WINDOWS SOCKETSWINDOWS SOCKETSWINDOWS SOCKETS WINDOWS SOCKETS

CÓDIGO PASSIVE if ((s = socket(AF_INET, type, 0))==INVALID_SOCKET){ .........}

// Cargamos en la estructura sinserv el Número de Puerto del Servidor// Cargamos en la estructura sinserv el Número de Puerto del Servidor// y direccion IP del servidor. Esta será cualquiera de sus direcciones IP

memset((void*)&sinserv,0,sizeof(sinserv));sinserv.sin family = AF INET;sinserv.sin_family AF_INET;sinserv.sin_port=htons((u_short)atoi(pto_service));sinserv.sin_addr.s_addr = INADDR_ANY;

// Asociamos al socket pasivo creado la estructura sinservif (bind(s,(struct sockaddr *)&sinserv, sizeof(sinserv))==SOCKET_ERROR){ .......... return(INVALID_SOCKET);}

// Si el socket pasivo abierto es TCP lo dejamos a la escuchaif ((type == SOCK_STREAM) && (listen(s,qlen)==SOCKET_ERROR)){ return(INVALID SOCKET); }

LUIS MENGUAL (c)

{ ........... return(INVALID_SOCKET); }

return (s);

Page 154: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

WINDOWS SOCKETSWINDOWS SOCKETSWINDOWS SOCKETS WINDOWS SOCKETS

CÓDIGO SERVIDOR TCPSOCKET sockSR;sockSR=passiveTCP(pto_service,5);while (1)

CÓDIGO SERVIDOR TCP

while (1){

alen = sizeof(fsin);ssockSR=accept(sockSR (struct sockaddr *)&fsin (int*)&alen);ssockSR accept(sockSR,(struct sockaddr )&fsin,(int )&alen);if (ssockSR== INVALID_SOCKET) { ........... );

// Intercambio previo con el cliente // te ca b o p e o co e c e tewhile (condición) {nDatosFichCL=recv(ssockSR,(char *)&ClFDA,sizeof(ClFDA),0);if (nDatosFichCL== SOCKET_ERROR) { .........}( _ ) { }

// PROCESADO DEL SERVICIO .....................................

LUIS MENGUAL (c)

nDatosFichSR= send(ssockSR,(char *)&ClFDA,sizeof(ClFDA),0); if (nDatosFichSR == SOCKET_ERROR) { .........}

}

Page 155: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

WINDOWS SOCKETSWINDOWS SOCKETSWINDOWS SOCKETS WINDOWS SOCKETS

CÓDIGO CLIENTE UDPCÓDIGO CLIENTE UDP

SOCKET SockCL;SockCL =connectUDP(host,service);

if ( send(SockCL,(char *FAR) buf1,sizeof(buf1),0) == SOCKET_ERROR ){sCadena.Format("Error : %d\n",WSAGetLastError()).........};

if ( (n=recv(SockCL,buf2,sizeof(buf2),0)) == SOCKET_ERROR ){sCadena.Format("Error : %d\n",WSAGetLastError());........}

LUIS MENGUAL (c)

Page 156: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

WINDOWS SOCKETSWINDOWS SOCKETSWINDOWS SOCKETS WINDOWS SOCKETS

CÓDIGO SERVIDOR UDPCÓDIGO SERVIDOR UDP

SockSR = passiveUDP(service);alen = sizeof(fsin);if (nbytes=recvfrom(SockSR ,(char *FAR) buffer_UDP, sizeof(buffer_UDP), 0,

(struct sockaddr *)&fsin, &alen) == SOCKET_ERROR ) {sCadena.Format("Error : %d\n",WSAGetLastError());........}

n = sendto(SockSR , msg, sizeof(msg), 0,(struct sockaddr *)&fsin, sizeof(fsin));

If (n== SOCKET_ERROR ){ C d F t("E %d\ " WSAG tL tE ()) }{sCadena.Format("Error : %d\n",WSAGetLastError());........}

LUIS MENGUAL (c)

Page 157: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

IOCTLSOCKET System Callint ioctlsocket (SOCKET sockfd, long cmd, u_long *argp) ;argp) ;

SOCKET s;u long nobloqueante=1;u_long nobloqueante=1;void main(){

s=connectTCP(host,pto_service);

if (ioctlsocket(s, FIONBIO, &nobloqueante)== SOCKET ERROR)if (ioctlsocket(s, FIONBIO, &nobloqueante) SOCKET_ERROR) {

printf("Error : %d\n",WSAGetLastError());exit(1);

LUIS MENGUAL (c)

( );}

Page 158: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

SETSOCKOPT System Callyint setsockopt (SOCKET s, int level, int optname, const char * optval, int optlen) ;

SOCKET sock,ssock;int duracion=10000;int longitud = sizeof(duracion);sock = passiveTCP(pto_servicio,PETICIONES_ENCOLADAS);

while (1){{alen = sizeof(fsin);ssock=accept(sock,(struct sockaddr FAR*)&fsin,(int FAR*)&alen);if (ssock== INVALID SOCKET)if (ssock== INVALID_SOCKET) ..............

if setsockopt (sock, SOL_SOCKET, SO_RCVTIMEO, (char FAR *)&duracion longitud)==SOCKET ERROR)

LUIS MENGUAL (c)

(char FAR )&duracion, longitud)==SOCKET_ERROR) ...}

Page 159: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

GETSOCKOPT System Callyint setsockopt (SOCKET s, int level, int optname, const char * optval, int optlen) ;

// Con esta opción variamos la longitud del buffer de recepción

if (setsockopt(sock SOL SOCKET SO RCVBUF (char*) &buffer recv sizeof(int))<0)if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char ) &buffer_recv, sizeof(int))<0)

printf("Error al llamar a setsockopt: %d\n",WSAGetLastError());

// Con esta opción obtenemos la longitud del buffer de recepción actual

optlen=sizeof(buffer_actual);

if (getsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char*)&buffer_actual, &optlen)<0)

printf("Error al llamar a setsockopt: %d\n",WSAGetLastError());

printf("BUFFER ACTUAL %d\n" buffer actual);

LUIS MENGUAL (c)

printf( BUFFER ACTUAL %d\n , buffer_actual);

Page 160: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC S

if (multicast)

SOCKETSSOCKETSif (multicast)

{

mreq imr multiaddr s addr=inet addr(multicast ip);mreq.imr_multiaddr.s_addr=inet_addr(multicast_ip); //direccion Multicastmreq.imr_interface.s_addr = htonl(INADDR_ANY); // interfaz asociado a la direccion multicast// interfaz asociado a la direccion multicast

if (setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP, (const char *) &mreq, sizeof(mreq)) == SOCKET ERROR) (co st c a ) & eq, s eo ( eq)) SOC _ O )

{printf("Error : %d\n",WSAGetLastError());exit(0);( );

}

LUIS MENGUAL (c)

}

Page 161: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

INET_ADDR System Call Unsigned long inet_addr (char * host )

Convierte una dirección en notacion “x y z k ” en formato– Convierte una dirección en notacion “x .y .z .k .” en formato in_addr

– Retorna la representación binaria de la dirección a incorporar en la estructura sockaddr ine a est uctu a soc add _

– Si ocurre un error retorna INADDR_NONE

struct sockaddr_in sinserv;

sinserv sin addr s addr = inet addr(“138 100 10 9”);sinserv.sin_addr.s_addr = inet_addr( 138.100.10.9 );

LUIS MENGUAL (c)

Page 162: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

INET_NTOA System Call char * inet_addr (struct in_addr in )

– Convierte una dirección formato in_addr en notacion i t t “ k ”internet “x .y .z .k .”

– Si ocurre un error retorna NULL

alen = sizeof(fsin);ssock=accept(sock,(struct sockaddr FAR*)&fsin,(int FAR*)&alen);if (ssock== INVALID SOCKET)if (ssock== INVALID_SOCKET) ............

printf("IP DEL CLIENTE %s..... \n",inet_ntoa(fsin.sin_addr));printf("Pto DEL CLIENTE %d \n" ntohs(fsin sin port));printf( Pto DEL CLIENTE %d..... \n ,ntohs(fsin.sin_port));

LUIS MENGUAL (c)

Page 163: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

NT0HS System Call char * ntohs (u_short port )

C i t l t d 16 bit f t d– Convierte el puerto de 16 bits en formato de red a formato host

alen = sizeof(fsin);ssock=accept(sock,(struct sockaddr FAR*)&fsin,(int FAR*)&alen);if (ssock== INVALID SOCKET)if (ssock== INVALID_SOCKET) ............

printf("IP DEL CLIENTE %s..... \n",inet_ntoa(fsin.sin_addr));printf("Pto DEL CLIENTE %d..... \n",ntohs(fsin.sin_port));

LUIS MENGUAL (c)

Page 164: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

INTERFACE INTERFACE SOC SSOC SSOCKETSSOCKETS

HTONS System Call char * htons (u_short port )

C i t l t d 16 bit f t d– Convierte el puerto de 16 bits en formato de host a formato de red

.................................................memset((void*)&sin,0,sizeof(sin));sin.sin_family = AF_INET;sin.sin_addr.s_addr = INADDR_ANY;

i i t ht (10001)sin.sin_port = htons(10001);//printf("SERVIDOR ITERATIVO");

LUIS MENGUAL (c)

Page 165: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

Códigos Error WinsockCódigos Error WinsockCódigos Error WinsockCódigos Error Winsock

10060: Vencimiento temporizador actividad SocketSocket

10061: conexión tcp rechazada por la entidad parp

10048: Pto en uso 10054: Cierre de conexión por la entidad parp p 10035: Sin datos en operaciones no

Bloqueantes .......................................

LUIS MENGUAL (c)

Page 166: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

WINSOCK2.HWINSOCK2.HEstructura Estructura sockaddr_insockaddr_in

struct sockaddr_in {short sin_family;u short sin port;u_short sin_port;struct in_addr sin_addr;char sin zero[8];char sin_zero[8];

};

t t i dd {struct in_addr {union {

struct { u char s b1 s b2 s b3 s b4; } S un b;struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;struct { u_short s_w1,s_w2; } S_un_w;u_long S_addr;

LUIS MENGUAL (c)

} S_un;#define s_addr S_un.S_addr

Page 167: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

WINSOCK2.HWINSOCK2.Hf óf óDefinición ProtocolosDefinición Protocolos

/*/** Protocols*/#d fi IPPROTO IP 0 /* d f IP */#define IPPROTO_IP 0 /* dummy for IP */#define IPPROTO_ICMP 1 /* control message protocol */#define IPPROTO_IGMP 2 /* internet group management protocol */#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */#define IPPROTO_TCP 6 /* tcp */#define IPPROTO_PUP 12 /* pup */_ p p#define IPPROTO_UDP 17 /* user datagram protocol */#define IPPROTO_IDP 22 /* xns idp */#define IPPROTO ND 77 /* UNOFFICIAL net disk proto */#define IPPROTO_ND 77 / UNOFFICIAL net disk proto /

#define IPPROTO_RAW 255 /* raw IP packet */#define IPPROTO MAX 256

LUIS MENGUAL (c)

#define IPPROTO_MAX 256

Page 168: INGENIERÍA DE PROTOCOLOSINGENIERÍA DE PROTOCOLOS DE ...lmengual/documentacion/IP/modulo2.pdf · 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Teeoogarminología

INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS

WINSOCK2.HWINSOCK2.HPuertos ReservadosPuertos Reservados

/*/* Port/socket numbers: network standard functions*/#define IPPORT ECHO 7#define IPPORT_ECHO 7#define IPPORT_DISCARD 9#define IPPORT_SYSTAT 11#define IPPORT_DAYTIME 13#define IPPORT_NETSTAT 15#define IPPORT_FTP 21#define IPPORT_TELNET 23#define IPPORT_SMTP 25#define IPPORT TIMESERVER 37#de e O _ S 3#define IPPORT_NAMESERVER 42#define IPPORT_WHOIS 43#define IPPORT MTP 57

LUIS MENGUAL (c)

#define IPPORT_MTP 57