Publicado el 6 de Junio del 2017
621 visualizaciones desde el 6 de Junio del 2017
800,5 KB
23 paginas
Creado hace 15a (07/05/2009)
ARQUITECTURA DE REDES, SISTEMAS Y SERVICIOS
Área de Ingeniería Telemática
Servicios de Internet
Area de Ingeniería Telemática
http://www.tlm.unavarra.es
Arquitectura de Redes, Sistemas y Servicios
3º Ingeniería de Telecomunicación
a
c
i
t
,
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
I
I
I
S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S
I
á
m
e
e
T
a
l
i
í
r
e
n
e
g
n
I
e
d
a
e
r
Á
Temario
Introducción
1.
2. Arquitecturas, protocolos y estándares
3. Conmutación de paquetes
4. Conmutación de circuitos
5. Tecnologías
6. Control de acceso al medio en redes de área local
7. Servicios de Internet
1
a
c
i
t
,
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
I
I
I
S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S
I
á
m
e
e
T
a
l
i
í
r
e
n
e
g
n
I
e
d
a
e
r
Á
Temario
Introducción
Arquitecturas, protocolos y estándares
1.
2.
3. Conmutación de paquetes
4. Conmutación de circuitos
5.
6. Control de acceso al medio en redes de área local
7.
Servicios de Internet
Tecnologías
La Web
E-Mail.
FTP. Telnet
•
•
•
• Otros
•
Desarrollo de clientes y servidores
2
a
c
i
t
,
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
I
I
I
S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S
I
á
m
e
e
T
a
l
i
í
r
e
n
e
g
n
I
e
d
a
e
r
Á
Material
Del Capitulo 2 de
Kurose & Ross,
“Computer Networking a top-down approach
Addison Wesley
featuring the Internet”
3
a
c
i
t
,
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
I
I
I
S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S
I
á
m
e
e
T
a
l
i
í
r
e
n
e
g
n
I
e
d
a
e
r
Á
Las aplicaciones
• Son software
• Diferentes máquinas y
Sistemas Operativos
• Quienes se comunican
son procesos
AS 2
AS 1
AS 3
Aplicación
Transporte
UDP
Red
Enlace
Físico
TCP
IP
ICMP
ARP
•
Intercambian mensajes
• Emplean Protocolos de
nivel de aplicación
4
Sockets
a
c
i
t
,
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
I
I
I
S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S
I
á
m
e
e
T
a
l
i
í
r
e
n
e
g
n
I
e
d
a
e
r
Á
• Los procesos envían y reciben
mensajes a través de un
socket
• Delega en el nivel de
transporte para que haga
llegar los mensajes al otro
socket
• Acceso a través de un API
• Puede escoger el protocolo de
transporte
• Puede configurar algunos
parámetros del mismo
• No controla cómo se comporta
host
host
proceso
socket
TCP
controlado
por el
desarrollador
Internet
proceso
socket
TCP
Controlado por el SO
5
a
c
i
t
,
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
I
I
I
S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S
I
á
m
e
e
T
a
l
i
í
r
e
n
e
g
n
I
e
d
a
e
r
Á
Programación con Sockets
API de Sockets
•
Introducida en el UNIX BSD4.2
en 1983
• Centrada en el paradigma
orientado a conexión
– DGRAM: datagramas
cliente/servidor
• Ofrece dos tipos de servicios de
transporte:
– STREAM: flujo de datos fiable
Socket
• Creado por la aplicación
• Controlado por el S.O.
• A través suya la aplicación
envía y recibe mensajes
Socket
App 1
Transporte
Red
Enlace
Físico
Controlado por el
programador de la
aplicación
Controlado por el
Sistema Operativo
6
a
c
i
t
,
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
I
I
I
S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S
I
á
m
e
e
T
a
l
i
í
r
e
n
e
g
n
I
e
d
a
e
r
Á
Sockets y UDP
UDP: no hay “conexión”
entre cliente y servidor
• No hay handshaking
• El emisor debe indicar
explícitamente la dirección IP y
el puerto del destino para cada
paquete
• El servidor debe extraer la
dirección IP y el puerto del
emisor del paquete
• UDP ofrece transferencia no
fiable de grupos de bytes
(“datagramas”) entre el
cliente y el servidor
7
Ejemplo en pseudo-código
Servidor
Cliente
• Crear el socket UDP
(Dgram)
a
c
i
t
,
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
I
I
I
S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S
I
á
m
e
e
T
a
l
i
í
r
e
n
e
g
n
I
e
d
a
e
r
Á
• Crear el socket UDP
(Dgram)
• Solicitar al S.O. que se
envíen ciertos datos a un
destino (IP+puerto)
concreto (…)
• Asignarle el puerto en el
que esperar
• Esperar un datagrama
Datos
• Datagrama recibido (o no)
8
Ejemplo en C (I)
Servidor
Cliente
struct sockaddr_in dirsock, emisor;
int sockservidor, ret,
frlen=sizeof(emisor);
char
*buf[2000];
a
c
i
t
,
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
I
I
I
S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S
I
á
m
e
e
T
a
l
i
í
r
e
n
e
g
n
I
e
d
a
e
r
Á
sockservidor=socket(PF_INET,SOCK_DGRA
M,0);
if (sockservidor==-1) ERROR();
dirsock.sin_family=AF_INET;
Cliente
Transporte
Red
Enlace
Físico
Servidor
Transporte
Red
Enlace
Físico
C
r
e
a
r
e
l
s
o
c
k
e
t
U
D
P
(
…
)
9
a
c
i
t
,
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
I
I
I
S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S
I
á
m
e
e
T
a
l
i
í
r
e
n
e
g
n
I
e
d
a
e
r
Á
Cliente
Ejemplo en C (II)
Servidor
dirsock.sin_addr.s_addr=INADDR_ANY;
dirsock.sin_port=htons(99);
ret= bind(sockservidor, (struct
sockaddr*)&dirsock, sizeof(dirsock));
if (ret==-1) ERROR();
ret=recvfrom(sockservidor, buf, 2000, 0,
(struct sockaddr*)&emisor, &frlen);
A
s
i
g
n
a
r
P
u
e
r
t
o
(
…
)
a
r
e
c
i
b
i
r
E
s
p
e
r
a
r
Cliente
Transporte
Red
Enlace
Físico
Servidor
Transporte
Red
Enlace
Físico
Recibe
datagramas
al puerto 99
10
a
c
i
t
l
,
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
I
i
I
I
I
I
í
r
e
n
e
g
n
á
m
e
e
T
a
S
O
C
V
R
E
S
Y
)
S
…
A
M
e
(
d
E
T
a
P
S
e
D
r
S
Á
U
t
e
k
c
o
s
l
e
r
a
e
r
C
Ejemplo en C (III)
Cliente
Servidor
• Esperando a recibir
int sockcliente, ret;
struct sockaddr_in dirsock;
struct hostent *resolvhost;
sockcliente=socket(PF_INET,SOCK_DGRAM,
0);
if (sockcliente==-1) ERROR();
Cliente
Transporte
Red
Enlace
Físico
Recibe
datagramas
al puerto 99
Servidor
Transporte
Red
Enlace
Físico
11
a
c
i
t
,
I
I
S
E
D
S
E
O
R
C
E
V
D
R
A
E
R
S
U
S
Y
T
C
S
N
E
A
T
M
D
U
E
T
Q
S
R
A
S
I
I
á
m
e
e
T
a
l
i
í
r
e
n
e
g
n
I
e
d
a
e
r
Á
)
…
(
a
m
a
r
g
a
t
a
D
r
a
i
v
n
E
Ejemplo en C (y IV)
Cliente
dirsock.sin_family=AF_INET;
resolvhost=gethostbyname(“servidor.tlm.unavar
Servidor
• Esperando a recibir
ra.es”);
if (resolvhost==NULL) ERROR();
dirsock.sin_addr.s_addr=*(u_long*)resolvhost-
>h_addr_list[0];
dirsock.sin_port=htons(99);
ret=sendto(sockcliente, buf, max, 0,
(struct sockaddr*)dirsock,
sizeof(dirsock));
if (ret==-1) ERROR();
Cliente
Transporte
Red
Enlace
Físico
Recibe
datagramas
al puerto 99
Servidor
Transporte
Red
Enlace
Físico
12
Cliente y Servidor TCP
Servidor al ser
contactado
El servidor
• Ejecutándose primero
• Debe haber creado un socket
,
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
I
I
I
S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S
I
a
c
i
t
á
m
e
e
T
a
l
i
í
r
e
n
e
g
n
I
e
d
a
e
r
Á
por el que espera que el cliente
contacte con él
Indica el puerto asociado
•
El cliente
• Crea su propio socket
• Contacta con el servidor
• Especifica la dirección IP del
servidor y el puerto de la
aplicación
• Se establece la conexión TCP
con el servidor
• Crea un nuevo socket TCP
para la comunicación con
el cliente
• Permite que el servidor se
comunique con varios
clientes simultáneamente
13
Ejemplo en pseudo-código
Servidor
• Crear el socket TCP
Cliente
(Stream)
a
c
i
t
,
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
I
I
I
S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S
I
á
m
e
e
T
a
l
i
í
r
e
n
e
g
n
I
e
d
a
e
r
Á
•
•
•
•
•
Crear el socket TCP (Stream)
Solicitar al S.O. que lo conecte
con un destino (IP+puerto)
concreto (…)
Conexión establecida
Escribir/Leer del socket (…)
Cerrar el socket/conexión (…)
• Asignarle el puerto en el
que esperar
• Solicitar al S.O. que
escuche y acepte esas
conexiones
• Esperar una conexión
Three-way
handshake
s
o
t
a
D
Finalización
• Nueva conexión. Socket
nuevo. El original sigue
aceptando conexiones
• Escribir/Leer del socket
• Cierre de la conexión
14
Cliente en C (I)
Cliente
Servidor
• Crear el socket TCP
(Stream)
,
a
c
i
t
á
m
e
e
T
a
l
i
í
r
e
n
e
g
n
I
e
d
a
e
r
Á
I
I
I
I
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
S
O
C
V
R
E
S
Y
S
A
M
E
T
S
S
)
…
(
P
C
T
t
e
k
c
o
s
l
e
r
a
e
r
C
int sockcliente, ret;
struct sockaddr_in dirsock;
struct hostent *resolvhost;
• Asignarle el puerto en el
que esperar
• Solicitar al S.O. que
escuche y acepte esas
conexiones
• Esperar una conexión
sockcliente=socket(PF_INET,SOCK_STREAM,0);
if (sockcliente==-1) ERROR();
Cliente
Transporte
Red
Enlace
Físico
Acepta conexiones
al puerto 80
Servidor
Transporte
Red
Enlace
Físico
15
Cliente en C (II)
Cliente
Servidor
• Esperar una conexión
a
c
i
t
,
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
I
l
i
I
I
I
í
r
e
n
e
g
n
á
m
e
e
T
a
S
O
C
V
R
E
S
Y
S
A
M
e
d
E
T
a
S
e
r
S
Á
)
…
(
S
N
D
I
dirsock.sin_family=AF_INET;
resolvhost=gethostbyname(“servidor.tlm.u
navarra.es”);
if (resolvhost==NULL) ERROR();
dirsock.sin_addr.s_addr=*(u_long*)resolv
host->h_addr_list[0];
dirsock.sin_port=htons(80);
Petición al
servidor de DNS
Cliente
Transporte
Red
Enlace
Físico
Acepta conexiones
al puerto 80
Servidor
Transporte
Red
Enlace
Físico
16
Cliente en C (III)
Cliente
Servidor
• Esperar una conexión
ret=connect(sockcliente, (struct
sockaddr*)&dirsock, sizeof(dirsock));
if (ret==-1) ERROR();
• Nueva conexión
,
a
c
i
t
á
m
e
e
T
a
l
i
í
r
e
n
e
g
n
I
e
d
a
e
r
Á
Comentarios de: Servicios de Internet (0)
No hay comentarios