33
Curso de Java “Java – Redes” Rogelio Ferreira Escutia

Curso de Java Java – Redes Rogelio Ferreira Escutia

Embed Size (px)

Citation preview

Page 1: Curso de Java Java – Redes Rogelio Ferreira Escutia

Curso de Java

“Java – Redes”

Rogelio Ferreira Escutia

Page 2: Curso de Java Java – Redes Rogelio Ferreira Escutia

Conceptos de Redes

Page 3: Curso de Java Java – Redes Rogelio Ferreira Escutia

3

• Java Network Programming and Distributed Computing, David Reilly y Michael Reilly, Addison Wesley 2002

JavaRedes Modelo OSI

Page 4: Curso de Java Java – Redes Rogelio Ferreira Escutia

4

• Java Network Programming and Distributed Computing, David Reilly y Michael Reilly, Addison Wesley 2002

Capas TCP/IPJavaRedes

Page 5: Curso de Java Java – Redes Rogelio Ferreira Escutia

5

• Java Network Programming and Distributed Computing, David Reilly y Michael Reilly, Addison Wesley 2002

Encapsulación de CapasJavaRedes

Page 6: Curso de Java Java – Redes Rogelio Ferreira Escutia

6

• Java Network Programming and Distributed Computing, David Reilly y Michael Reilly, Addison Wesley 2002

Clases de RedesJavaRedes

Page 7: Curso de Java Java – Redes Rogelio Ferreira Escutia

7

• Java Network Programming, Editorial O'Reilly

Capas de RedJavaRedes

Page 8: Curso de Java Java – Redes Rogelio Ferreira Escutia

8

• Java Network Programming, Editorial O'Reilly

Datagrama IPV4JavaRedes

Page 9: Curso de Java Java – Redes Rogelio Ferreira Escutia

9

• Java Network Programming, Editorial O'Reilly

Cliente ServidorJavaRedes

Page 10: Curso de Java Java – Redes Rogelio Ferreira Escutia

Entrada / Salida

Page 11: Curso de Java Java – Redes Rogelio Ferreira Escutia

11

• Java Network Programming and Distributed Computing, David Reilly y Michael Reilly, Addison Wesley 2002

StreamJavaRedes

Page 12: Curso de Java Java – Redes Rogelio Ferreira Escutia

12

• Advanced Java Networking, Dick Sterlik y Frashant Bridharan

StreamJavaRedes

Page 13: Curso de Java Java – Redes Rogelio Ferreira Escutia

13

• Advanced Java Networking, Dick Sterlik y Frashant Bridharan

Entrada / SalidaJavaRedes

Page 14: Curso de Java Java – Redes Rogelio Ferreira Escutia

Sockets

Page 15: Curso de Java Java – Redes Rogelio Ferreira Escutia

15

Sockets

Sockets, http://es.wikipedia.org/wiki/Socket_de_Internet, febrero 2010

Socket designa un concepto abstracto por el cual dos programas (posiblemente situados en computadoras distintas) pueden intercambiar cualquier flujo de datos, generalmente de manera fiable y ordenada.

JavaRedes

Page 16: Curso de Java Java – Redes Rogelio Ferreira Escutia

16

Sockets

Sockets, http://es.wikipedia.org/wiki/Socket_de_Internet, febrero 2010

Para que dos programas puedan comunicarse entre sí es necesario que se cumplan ciertos requisitos:

– Que un programa sea capaz de localizar al otro.– Que ambos programas sean capaces de intercambiarse cualquier

secuencia de octetos, es decir, datos relevantes a su finalidad.

Para ello son necesarios los tres recursos que originan el concepto de socket:

– Un protocolo de comunicaciones, que permite el intercambio de octetos.

– Una dirección del Protocolo de Red (Dirección IP, si se utiliza el Protocolo TCP/IP), que identifica una computadora.

– Un número de puerto, que identifica a un programa dentro de una computadora.

JavaRedes

Page 17: Curso de Java Java – Redes Rogelio Ferreira Escutia

17

Puertos

“Puerto de red”, http://es.wikipedia.org/wiki/Puerto_de_red, febrero 2010

Un puerto de red es una interfaz para comunicarse con un programa a través de una red.

Un puerto suele estar numerado.

La implementación del protocolo en el destino utilizará ese número para decidir a qué programa entregará los datos recibidos.

Esta asignación de puertos permite a una máquina establecer simultáneamente diversas conexiones con máquinas distintas, ya que todos los paquetes que se reciben tienen la misma dirección, pero van dirigidos a puertos diferentes.

JavaRedes

Page 18: Curso de Java Java – Redes Rogelio Ferreira Escutia

18

Direcciones de puertos

“Puerto de red”, http://es.wikipedia.org/wiki/Puerto_de_red, febrero 2010

Los números de puerto se indican mediante una palabra, 2 bytes (16 bits), por lo que existen 65535. Aunque podemos usar cualquiera de ellos para cualquier protocolo, existe una entidad, la IANA, encargada de su asignación, la cual creó tres categorías:

– 1. Los puertos inferiores al 1024 son puertos reservados para el sistema operativo y usados por "protocolos bien conocidos". Si queremos usar uno de estos puertos tendremos que arrancar el servicio que los use teniendo permisos de administrador.

JavaRedes

Page 19: Curso de Java Java – Redes Rogelio Ferreira Escutia

19

Direcciones de puertos

“Puerto de red”, http://es.wikipedia.org/wiki/Puerto_de_red, febrero 2010

– 2. Los comprendidos entre 1024 (0400 en hexadecimal) y 49151 (BFFF en hexadecimal) son denominados "registrados" y pueden ser usados por cualquier aplicación. Existe una lista publica en la web del IANA donde se puede ver qué protocolo usa cada uno de ellos.

– 3. Los comprendidos entre los números 49152 (C000 en hexadecimal) y 65535 (FFFF en hexadecimal) son denominados dinámicos o privados, porque son los usados por el sistema operativo cuando una aplicación tiene que conectarse a un servidor y por tanto necesita un puerto por donde salir.

JavaRedes

Page 20: Curso de Java Java – Redes Rogelio Ferreira Escutia

20

Direcciones de puertos

“Puerto de red”, http://es.wikipedia.org/wiki/Puerto_de_red, febrero 2010

JavaRedes

Page 21: Curso de Java Java – Redes Rogelio Ferreira Escutia

21

Sockets

Sockets, http://es.wikipedia.org/wiki/Socket_de_Internet, febrero 2010

Los sockets permiten implementar una arquitectura cliente-servidor. La comunicación ha de ser iniciada por uno de los programas que se denomina programa cliente. El segundo programa espera a que otro inicie la comunicación, por este motivo se denomina programa servidor.

Un socket es un fichero existente en la máquina cliente y en la máquina servidora, que sirve en última instancia para que el programa servidor y el cliente lean y escriban la información. Esta información será la transmitida por las diferentes capas de red.

JavaRedes

Page 22: Curso de Java Java – Redes Rogelio Ferreira Escutia

22

Propiedades de sockets

Sockets, http://es.wikipedia.org/wiki/Socket_de_Internet, febrero 2010

Las propiedades de un socket dependen de las características del protocolo en el que se implementan. El protocolo más utilizado es TCP, aunque también es posible utilizar UDP o IPX. Gracias al protocolo TCP, los sockets tienen las siguientes propiedades:

– Orientado a conexión.– Se garantiza la transmisión de todos los octetos sin errores ni

omisiones.– Se garantiza que todo octeto llegará a su destino en el mismo

orden en que se ha transmitido.

Estas propiedades son muy importantes para garantizar la corrección de los programas que tratan la información.

El protocolo UDP es un protocolo no orientado a la conexión. Sólo se garantiza que si un mensaje llega, llegue bien. En ningún caso se garantiza que llegue o que lleguen todos los mensajes en el mismo orden que se mandaron. Esto lo hace adecuado para el envío de mensajes frecuentes pero no demasiado importantes, como por ejemplo, mensajes para los refrescos (actualizaciones) de un gráfico.

JavaRedes

Page 23: Curso de Java Java – Redes Rogelio Ferreira Escutia

23

Cliente Servidor

“Sockets en Java”, http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/V_2.htm, febrero 2010

JavaRedes

Page 24: Curso de Java Java – Redes Rogelio Ferreira Escutia

UDP

Page 25: Curso de Java Java – Redes Rogelio Ferreira Escutia

25

Aplicación UDP

• Java Network Programming and Distributed Computing, David Reilly y Michael Reilly, Addison Wesley 2002

JavaRedes

Page 26: Curso de Java Java – Redes Rogelio Ferreira Escutia

26

• Java Network Programming and Distributed Computing, David Reilly y Michael Reilly, Addison Wesley 2002

Paquete UDPJavaRedes

Page 27: Curso de Java Java – Redes Rogelio Ferreira Escutia

27

• Java Network Programming and Distributed Computing, David Reilly y Michael Reilly, Addison Wesley 2002

Escuchar UDPJavaRedes

Page 28: Curso de Java Java – Redes Rogelio Ferreira Escutia

28

• Java Network Programming and Distributed Computing, David Reilly y Michael Reilly, Addison Wesley 2002

Leer UDPJavaRedes

Page 29: Curso de Java Java – Redes Rogelio Ferreira Escutia

29

• Java Network Programming and Distributed Computing, David Reilly y Michael Reilly, Addison Wesley 2002

Enviar UDPJavaRedes

Page 30: Curso de Java Java – Redes Rogelio Ferreira Escutia

TCP

Page 31: Curso de Java Java – Redes Rogelio Ferreira Escutia

31

• Java Network Programming and Distributed Computing, David Reilly y Michael Reilly, Addison Wesley 2002

Conexión TCPJavaRedes

Page 32: Curso de Java Java – Redes Rogelio Ferreira Escutia

32

• Java Network Programming and Distributed Computing, David Reilly y Michael Reilly, Addison Wesley 2002

Conexión TCPJavaRedes

Page 33: Curso de Java Java – Redes Rogelio Ferreira Escutia

33

• Java Network Programming and Distributed Computing, David Reilly y Michael Reilly, Addison Wesley 2002

Conexión TCPJavaRedes