CARNERO SOBRINO, JOSÉ LUIS
Unidad 1
Procesos ................................................... 1
1.1 Introducción y fundamentos ....................... 2
1.2 Concurrencia y distribución ......................... 3
1.3 Estados de un proceso ................................. 5
1.4 Gestión de procesos ..................................... 6
1.4.1 Dispatcher ............................................... 7
1.4.2 Scheduler ................................................. 8
1.5 Operaciones con procesos ....................... 11
1.5.1 Creación y ejecución .......................... 11
1.5.2 Acceso ................................................... 13
1.5.3 Propiedades .......................................... 14
1.5.4 Eliminación y espera ............................ 14
1.6 Comunicación entre procesos ................. 15
Unidad 2
Threads ................................................... 19
2.1 Introducción y fundamentos ..................... 20
2.2 Creación y puesta en ejecución .............. 23
2.3 Paralelismo ................................................... 24
2.3.1 Variables compartidas ......................... 25
2.3.2 Paso de parámetros ............................. 26
2.4 Propiedades ................................................ 27
2.5 Sincronismo .................................................. 29
2.5.1 Join() ....................................................... 29
2.5.2 lock() ...................................................... 29
2.5.3 Monitores ............................................... 32
2.5.4 Aborto y excepciones .......................... 36
2.6 Interacción con un formulario ................... 37
Unidad 3
Networking & Sockets ........................... 43
3.1 Conceptos fundamentales
de redes ....................................................... 44
3.1.1 Componentes básicos ......................... 44
3.2 Protocolo TCP/IP .......................................... 45
3.2.1 Funcionamiento .................................... 46
3.2.2 Capa Ethernet ...................................... 47
3.2.3 Capa IP .................................................. 48
3.2.4 Capa TCP/UDP ...................................... 50
3.2.5 Sockets ................................................... 53
3.2.6 Capa de aplicación ............................ 55
3.3 Programación mediante sockets .............. 57
3.3.1 Direccionamiento ................................. 57
3.3.2 DNS ......................................................... 59
3.3.3 Socket servidor orientado
a conexión ........................................... 60
3.3.4 Socket cliente orientado
a conexión ........................................... 62
3.3.5 Servidor TCP
(transmisión de datos) .......................... 63
3.3.6 Cliente TCP
(transmisión de datos) .......................... 64
3.3.7 Servidor UDP .......................................... 65
3.3.8 Cliente UDP ............................................ 66
Unidad 4
Servicios ................................................. 71
4.1 Componentes ............................................. 72
4.1.1 Servidor .................................................. 72
4.1.2 Cliente .................................................... 74
4.1.3 Protocolo ............................................... 75
4.1.4 Arquitectura .......................................... 76
4.2 Clases del modelo TCP ............................... 77
4.2.1 NetworkStream ..................................... 77
4.2.2 TcpListener ............................................. 80
4.2.3 TcpClient ................................................ 84
4.3 Servidores con atención concurrente ...... 86
4.3.1 Adivina número
(un solo cliente) .................................... 87
4.3.2 Adivina número
(múltiples clientes) ................................ 90
4.4 Juego piedra, papel, tijera ........................ 92
4.4.1 PPT con respuesta síncrona ................. 93
4.4.2 PPT cliente asíncrono ......................... 100
4.4.3 PPT con sondeo .................................. 102
4.4.4 PPT full-duplex ...................................... 109
4.5 Estándares de protocolos
a nivel aplicación ..................................... 117
4.5.1 FTP ......................................................... 117
4.5.2 SMTP ..................................................... 119
4.5.3 HTTP ....................................................... 122
4.6 Servicios web ............................................ 126
4.6.1 Clasificación ........................................ 126
4.6.2 Consumo de API REST ........................ 128
4.6.3 Prueba de métodos en API REST ....... 132
4.6.4 Microservicios ...................................... 134
Unidad 5
Seguridad ............................................. 139
5.1 Introducción .............................................. 140
5.2 Breve historia .............................................. 141
5.3 Técnicas de seguridad en la fase
de desarrollo de software ........................ 142
5.3.1 Excepciones ........................................ 142
5.3.2 Mensajes de error ............................... 143
5.3.3 Validaciones ....................................... 143
5.3.4 Autenticación y roles ......................... 143
5.3.5 Políticas preventivas ........................... 143
5.3.6 Logs ...................................................... 144
5.4 Funciones hash aplicadas a ficheros ..... 144
5.5 Cifrado simétrico ....................................... 145
5.5.1 Cifrado por sustitución ....................... 146
5.5.2 Algoritmo DES ...................................... 148
5.5.3 Algoritmo AES ...................................... 151
5.6 Cifrado asimétrico .................................... 153
5.6.1 Algoritmo RSA ...................................... 154
5.6.2 Firma digital ......................................... 156
5.6.3 SSL ......................................................... 157
Este libro desarrolla los contenidos del módulo de Programación de Servicios y Procesos, vinculado al título de Técnico Superior en Desarrollo de Aplicaciones Multiplataforma (Real Decreto 450/2010 de 16 de abril, publicado en el BOE con fecha 20 de mayo de 2010). El manual se presenta como una guía de aprendizaje compuesta por cinco unidades: Procesos, Threads, Networking & Sockets, Servicios y Seguridad. En cada una se abordan conocimientos teóricos básicos, tratados desde cero, para introducir al lector en la programación con ejemplos funcionales e ilustrativos que permitan avanzar en el desarrollo y el consumo de servicios bajo el paradigma cliente-servidor. A lo largo de las unidades se presentan los conceptos de proceso, para profundizar en la descomposición de un proceso en hilos o threads con todas sus implicaciones de concurrencia, paralelismo y distribución. Asimismo, se introducen los conceptos necesarios de redes y comunicación mediante sockets, para programar la transmisión de datos a través de la red. Los objetivos de este libro se clasifican en: 1.Conseguir la destreza de crear un servicio con su protocolo propio a nivel aplicación, en una arquitectura cliente servidor. 2.Conocer el uso de librerías que permitan usar los principales estándares en los servicios de red. 3.Adquirir la capacidad de analizar la documentación de una API Rest para consumir un servicio existente en Internet. Todo ello bajo la perspectiva de la seguridad y los estándares de encriptación actuales. En la parte inferior de la primera página del libro se encuentra el código de acceso que permite descargar el material adicional desde www.marcombo.info. Además, el libro se complementa con una guía exclusiva para docentes que incluye la solución de los ejercicios propuestos en cada unidad y el desarrollo de los contenidos específicos del módulo. José Luis Carnero Sobrino: Ingeniero superior de Informática con especialidad en Sistemas.