PDF de programación - Capítulo 2: Capa Aplicación - IV

Imágen de pdf Capítulo 2: Capa Aplicación - IV

Capítulo 2: Capa Aplicación - IVgráfica de visualizaciones

Publicado el 31 de Agosto del 2019
468 visualizaciones desde el 31 de Agosto del 2019
472,3 KB
40 paginas
Creado hace 17a (04/09/2006)
Capítulo 2: Capa Aplicación - IV

ELO322: Redes de Computadores

Tomás Arredondo Vidal

Este material está basado en:

r material de apoyo al texto ComputerNetworking: A TopDownApproach
FeaturingtheInternet 3rd edition. Jim Kurose, Keith Ross Addison-Wesley,
2004.

r material del curso anterior ELO322 del Prof. Agustín Gonzales

2: Capa Aplicación

1

Capítulo 2: Capa Aplicación

r 2.1 Principios de la
aplicaciones de red

r 2.2 Web y HTTP
r 2.3 FTP
r 2.4 Correo Electrónico
m SMTP, POP3, IMAP

r 2.5 DNS

r 2.6 P2P Compartición de

archivos

r 2.7 Programación de

sockets con TCP

r 2.8 Programación de

sockets con UDP

r 2.9 Construcción de un

servidor WEB

2: Capa Aplicación

2

P2P file sharing

Ejemplo
r Alice ejecuta una aplicación

cliente en su notebook
Intermitentemente se
conecta al Internet; recibe
una nueva dirección IP para
cada conexión
Pide canción “Hey Jude”

r Aplicacion muestra otros

pares que tienen una copia
de “Hey Jude”.

r Alice elige a uno de los

pares, Bob

r Archivo es copiado del PC de

Pedro al PC de Alice
notebook: HTTP

r Mientras que Alice lo baja,
otros usuarios bajan musica
del PC de Alice.

r El PC par de Alice’s es un

cliente Web y tambien
temporalmente un servidor
Web.

r Todos los pares puedes ser

servidores = altamente
escalable!
2: Capa Aplicación

3

r
r
P2P: directorio centralizado

Diseño original de “Napster”
1) Duando un terminal par se

centralized

directory server

conecta, el informa a un
servidor central:
• dirección IP
• música que tiene

2) Alice pregunta por “Hey

Jude”

3) Alice pide el archivo de

Bob directamente

2

1

Bob

peers

1

1

1

3

Alice

2: Capa Aplicación

4

P2P: problems with centralized directory

• Punto individual de

falla

• Cuello de botella a

la capacidad
(performance)

• Problemas legales

con música
(Copyright
infringement)

la transferencia de
archivos es
descentralizada pero
localizar contenido
(archivos) es
altamente centralizado

2: Capa Aplicación

5

Inundación de preguntas (Query
flooding): Gnutella
• Completamente distribuido

– sin servidor central
• Protocolo en dominio

publico

• Muchos clientes Gnutella
implementan el protocolo

Red sobrepuesta: grafo
• Borde (edge) entre pares X
e Y si hay una conexión TCP

• Todos los pares activos y

los bordes entre ellos es la
red sobrepuesta (overlay
net)

• Borde (y red sobrepuesta)
no es un enlace físico si no
conceptual

• Un par típicamente va a
estar conectado a < 10
vecinos en su red
sobrepuesta

2: Capa Aplicación

6

Gnutella: protocolo

r Mensaje de pregunta
(Query) mandado sobre
conexiones existentes TCP
Pares reenvían mensaje

de pregunta (Query
message)
r Resultado positivo
(QueryHit) se manda
por ruta reversa

Escalable:
inundación de
mensajes limitada

Q u ery
Q u ery Hit

Query
QueryHit

Q

u
ery

File transfer:
HTTP

Query
QueryHit

Query

2: Capa Aplicación

7

r
Gnutella: Conectarse a Pares

1.

Par X debe encontrar otro par en la red Gnutella:
usa lista de pares candidatos

2. X trata secuencialmente a conectarse vía TCP con

pares en su lista hasta hacer una conexión con Y

3. X manda mensaje Ping a Y; Y reenvía mensaje

Ping

4. Todos los pares que reciben el mensaje Ping

responden con mensaje Pong

5. X recibe muchos mensajes Pong. El ahora puede

establecer conexiones TCP adicionales

Desconectarse de Pares: tarea!

2: Capa Aplicación

8

Explotando heterogeneidad: KaZaA

• Protocolo no publico
• Cada par es un líder de

grupo o asignado a un
líder de grupo
– Conexión TCP entre
par y líder de grupo

– Conexiones TCP
entre pares de
lideres de grupo

• Líder de grupo sabe

los contenidos
(archivos) de todos sus
hijos

ordinary peer

group-leader peer

neighoring relationships

in overlay network

2: Capa Aplicación

9

KaZaA: Búsquedas

r Cada archivo tiene un hash y un descriptor (incluye el
nombre del archivo y descripción en texto del objeto)
r Cliente manda una pregunta usando palabras claves a

su líder de grupo (el busca en el descriptor)
Líder de grupo responde con aciertos:
m Para cada acierto: metadatos, hash, direccion IP

r Si un lider de grupo reenvía la búsqueda a otros

lideres de grupo, esos lideres contestan con aciertos
(usando ruta inversa red sobrepuesta)
r Cliente selecciona archivos para bajar

m Mensajes HTTP usando hash como identificador son

mandados a pares que contienen archivo deseado

2: Capa Aplicación

10

r
Trucos Kazaa

r Limitación para subidas (uploads) (y

downloads?) simultaneas

r Encolamiento de peticiones
r Prioridades basadas en incentivos a
mejores usuarios (los que suben mas
archivos a la red)

r Bajada de datos para un archivo en paralelo

(puede usar múltiples conexiones HTTP a
diferentes pares para el mismo archivo)

2: Capa Aplicación

11

Capítulo 2: Capa Aplicación

r 2.1 Principios de la
aplicaciones de red

r 2.2 Web y HTTP
r 2.3 FTP
r 2.4 Correo Electrónico
m SMTP, POP3, IMAP

r 2.5 DNS

r 2.6 P2P Compartición de

archivos

r 2.7 Programación de

sockets con TCP

r 2.8 Programación de

sockets con UDP

r 2.9 Construcción de un

servidor WEB

2: Capa Aplicación

12

Programación de Sockets

Objetivo: aprender cómo construir aplicaciones cliente

servidor que se comunican usando sockets

API para sockets

Fue introducida en BSD4.1
UNIX, 1981
El socket es explícitamente
creado, usado, y liberado por las
aplicaciones

r Sigue el modelo cliente/servidor
r Hay dos tipos de servicios de

transporte vía el API de socket:
m Datagramas no confiables
m Orientado a un flujo de bytes

y confiable

sockets

Son locales al host,

Creados por la aplicación,

Es una interfaz

controlada por el OS(una
“puerta”) a través de la
cual el proceso aplicación
puede tanto enviar como
recibir mensajes a/desde

el otro proceso de la

aplicación

2: Capa Aplicación

13

r
r
Programación de Sockets con TCP

Socket: una puerta entre el proceso aplicación y el
protocolo de transporte de extremo a extremo
(UCP o TCP)

Servicio TCP: transferencia confiable de bytes

desde un proceso a otro

Controlado por
El desarrollador
De la aplicación

Controlado por el
sistema
operativo

proceso

socket
TCP con
buffers,
variables

cliente o
servidor

Internet

Controlado por
El desarrollador
De la aplicación

Controlado por el
sistema
operativo

proceso

socket
TCP con
buffers,
variables

servidor o

cliente

2: Capa Aplicación

14

Programación de Sockets con TCP

El cliente debe contactar al servidor

Proceso servidor debe estar
corriendo primero

r Servidor debe tener creado el

socket (puerta) que acoge al
cliente

El cliente contacta al servidor por:

La creación de un socket TCP local
para el cliente
Especifica la dirección IP, número
de puerto del proceso servidor
r Una vez que el cliente crea el

socket: el socket establece
una conexión TCP al servidor

Cuando el servidor es
contactado por el cliente, el
servidor TCP crea otro socket
para que el procese servidor
se comunique con el cliente
m Permite que un servidor

hable con múltiples clientes

m IP y Número de puerto

fuente distingue a los
clientes (más adelante más
sobre esto)

Punto de vista de la aplicación

TCP provee transferencias de
bytesconfiables y en orden. Es
un pipeline(o “tubería”) de datos

entre el cliente y servidor

2: Capa Aplicación

15

r
r
r
r
Sockets creados en relación
cliente/servidor usando TCP

2: Capa Aplicación

16

Jerga de flujos (Stream)

r Un stream (flujo) es una secuencia de caracteres

que fluyen hacia o desde un proceso.

r Un input stream (flujo de entrada) esta ligado a

alguna fuente de entrada para el proceso, eg,
teclado o socket.

r Un output stream (flujo de salida) está ligado a una

salida del proceso, eg, pantalla o socket.

2: Capa Aplicación

17

Programación de sockets con TCP

Ejemplo aplicación cliente-

servidor:

1) Cliente lee líneas desde la

entrada estándar (flujo
inFromUser) , las envía al
servidor vía un socket (flujo
outToServer)

2) El servidor lee líneas desde el

socket

3) El servidor las convierte a
mayúsculas, y las envía de
vuelta al clientes

4) cliente lee y muestra la línea

modificada desde el socket
(flujo inFromServer)

Client
process

2: Capa Aplicación

18

Interacción Cliente/servidor vía socket
TCP

Servidor (corriendo en dirección hosname) Cliente

create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket(6789)

TCP

connection setup

wait for incoming
connection request
connectionSocket =
welcomeSocket.accept()

read request from
connectionSocket

write reply to
connectionSocket

close
connectionSocket

create socket,
connect to hostid, port=x

clientSocket =
Socket(“hostname”, 6789)

send request using
clientSocket

read reply from
clientSocket

close
clientSocket

2: Capa Aplicación

19

Ejemplo: Cliente Java (TCP)

import java.io.*;
import java.net.*;
class TCPClient {

public static void main(String argv[]) throws Exception
{

String sentence;
String modifiedSentence;

Traduce
hostname a IP
usando DNS

BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));

Socket clientSocket = new Socket("hostname", 6789);

DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());

2: Capa Aplicación

20

Crea
Flujo entrante

Crea
cliente socket,
conecta al servidor
Crea
Flujo de salida
Unido al socket

Ejemplo: Cliente Java (TCP), cont.

Crea
Flujo de entrada
Unido al socket

BufferedReader inFromServer =
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));

Envía línea
Al servidor

Lee línea
Desde el servidor

sentence = inFromUser.readLine();

outToServer.writeBytes(sentence + '\n');

modifiedSentence = inFromServer.readLine();

System.out.println("FROM SERVER: " + modifiedSentence);

clientSocket.close();

}

}

2: Capa Aplicación

21

Ejemplo: Servidor Java (TCP)

import java.io.*;
import java.net.*;

class TCPServer {

Crea
Socket de
  • Links de descarga
http://lwp-l.com/pdf16517

Comentarios de: Capítulo 2: Capa Aplicación - IV (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad