Publicado el 31 de Agosto del 2019
546 visualizaciones desde el 31 de Agosto del 2019
472,3 KB
40 paginas
Creado hace 18a (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
Comentarios de: Capítulo 2: Capa Aplicación - IV (0)
No hay comentarios