Actualizado el 30 de Junio del 2017 (Publicado el 19 de Junio del 2017)
682 visualizaciones desde el 19 de Junio del 2017
814,2 KB
23 paginas
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
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
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
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
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
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
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
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
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
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
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
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
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
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
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
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
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
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
sockservidor=socket
(PF_INET,SOCK_DGRAM,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
Cliente
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
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
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
i
,
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
I
I
I
I
I
e
d
á
m
e
e
T
a
í
r
e
n
e
g
n
S
O
C
V
R
E
S
Y
)
S
…
A
M
(
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
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
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
• Esperando a recibir
(“servidor.tlm.unavarra.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
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
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
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
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
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
,
I
I
I
I
S
E
D
S
E
O
R
C
E
V
D
R
A
E
R
S
U
Y
T
C
S
E
A
T
M
U
E
T
Q
S
R
A
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
dirsock.sin_family=AF_INET;!
resolvhost=gethostbyname
(“servidor.tlm.unavarra.es”);!
if (resolvhost==NULL) ERROR();!
dirsock.sin_addr.s_addr=*(u_long*)
resolvhost->h_addr_list[0];!
,
S
E
D
E
R
E
D
A
R
U
T
C
E
T
U
Q
R
A
I
i
a
c
i
t
I
l
I
I
e
d
á
m
e
e
T
a
í
r
e
n
e
g
n
S
O
C
V
R
E
S
Y
S
A
M
E
T
a
S
e
r
S
Á
)
…
(
S
N
D
I
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
l
á
m
e
e
T
a
í
r
e
n
e
g
n
i
I
e
d
a
e
r
Á
,
Comentarios de: Servicios de Internet (0)
No hay comentarios