Vous êtes sur la page 1sur 22

ARQUITECTURA DE REDES, SISTEMAS Y SERVICIOS

Área de Ingeniería Telemática

Desarrollo de clientes y servidores

Area de Ingeniería Telemática


http://www.tlm.unavarra.es

Arquitectura de Redes, Sistemas y Servicios


3º Ingeniería de Telecomunicación
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


SISTEMAS Y SERVICIOS
Temario
1. Introducción
2. Protocolos y arquitectura
3. Redes de área local
4. Protocolos de Internet
5. Conmutación de circuitos
6. Conmutación de paquetes
7. Gestión de recursos en conmutadores
8. Protocolos de control de acceso al medio

1
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


Temario
1. Introducción
SISTEMAS Y SERVICIOS

2. Protocolos y arquitectura
3. Redes de área local
4. Protocolos de Internet
• Nivel de red
• Nivel de transporte
• Servicios
• La Web
• E-Mail. FTP. Telnet
• Otros
• Desarrollo de clientes y servidores
5. Conmutación de circuitos
6. Conmutación de paquetes
7. Gestión de recursos en conmutadores
8. Protocolos de control de acceso al medio
2
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


SISTEMAS Y SERVICIOS
Las aplicaciones
• Son software
• Diferentes máquinas y
Sistemas Operativos AS 2
• Quienes se comunican
son procesos

AS 1 AS 3

Aplicación

Transporte UDP TCP • Intercambian mensajes


Red IP ICMP • Emplean Protocolos de
nivel de aplicación
Enlace ARP
Físico
3
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


SISTEMAS Y SERVICIOS
Sockets
• Los procesos envían y reciben
mensajes a través de un
socket host host
• Delega en el nivel de
transporte para que haga controlado
llegar los mensajes al otro por el
proceso desarrollador proceso
socket
socket socket
• Acceso a través de un API
TCP TCP
• Puede escoger el protocolo de Internet
transporte
• Puede configurar algunos
parámetros del mismo Controlado por el SO
• No controla cómo se comporta

4
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


SISTEMAS Y SERVICIOS
Programación con Sockets
Socket
• Creado por la aplicación
• Controlado por el S.O.
API de Sockets • A través suya la aplicación
• Introducida en el UNIX envía y recibe mensajes
BSD4.2 en 1983
• Centrada en el paradigma
cliente/servidor
• Ofrece dos tipos de servicios
de transporte:
Socket Controlado por el
App 1 programador de la
– STREAM: flujo de datos aplicación
fiable orientado a conexión Transporte
– DGRAM: datagramas Red Controlado por el
Enlace Sistema Operativo
Físico

5
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


SISTEMAS Y SERVICIOS
Sockets y UDP
UDP: no hay “conexión” • UDP ofrece transferencia no
entre cliente y servidor fiable de grupos de bytes
• No hay handshaking (“datagramas”) entre el
• El emisor debe indicar cliente y el servidor
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

6
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


Ejemplo en pseudo-código
Cliente Servidor
SISTEMAS Y SERVICIOS

• Crear el socket UDP


(Dgram)
• Asignarle el puerto en el
• Crear el socket UDP que esperar
(Dgram) • Esperar un datagrama
• Solicitar al S.O. que se
envíen ciertos datos a un
destino (IP+puerto) Datos
concreto (…) • Datagrama recibido (o
no)

7
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


Ejemplo en C (I)
Cliente Servidor
SISTEMAS Y SERVICIOS

struct sockaddr_in dirsock, emisor;


int sockservidor, ret,
frlen=sizeof(emisor);

Crear el socket UDP (…)


char *buf[2000];

sockservidor=socket(PF_INET,SOCK_DGRA
M,0);
if (sockservidor==-1) ERROR();
dirsock.sin_family=AF_INET;

Cliente Servidor

Transporte Transporte
Red Red
Enlace Enlace
Físico Físico
8
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


Ejemplo en C (II)
Cliente Servidor
SISTEMAS Y SERVICIOS

Asignar Puerto (…)


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 recibir
Esperar
Recibe
datagramas
Cliente Servidor al puerto 99

Transporte Transporte
Red Red
Enlace Enlace
Físico Físico
9
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


Ejemplo en C (III)
Cliente Servidor
SISTEMAS Y SERVICIOS

int sockcliente, ret; • Esperando a recibir


struct sockaddr_in dirsock;
Crear el socket UDP (…)

struct hostent *resolvhost;

sockcliente=socket(PF_INET,SOCK_DGRAM,0
);
if (sockcliente==-1) ERROR();

Recibe
datagramas
Cliente Servidor al puerto 99

Transporte Transporte
Red Red
Enlace Enlace
Físico Físico
10
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


Ejemplo en C (y IV)
Cliente Servidor
SISTEMAS Y SERVICIOS

dirsock.sin_family=AF_INET;
• Esperando a recibir
DNS

resolvhost=gethostbyname(“servidor.tlm.unavar
ra.es”);
if (resolvhost==NULL) ERROR();
dirsock.sin_addr.s_addr=*(u_long*)resolvhost-
>h_addr_list[0];
dirsock.sin_port=htons(99);
EnviarDatagrama (…)

ret=sendto(sockcliente, buf, max, 0, if (ret==-1) ERROR();


(struct sockaddr*)dirsock,
sizeof(dirsock));

Recibe
datagramas
Cliente Servidor al puerto 99

Transporte Transporte
Red Red
Enlace Enlace
Físico Físico
11
ARQUITECTURA DE REDES, Cliente y Servidor TCP
Área de Ingeniería Telemática
SISTEMAS Y SERVICIOS

El servidor Servidor al ser


• Ejecutándose primero contactado
• Debe haber creado un • Crea un nuevo socket TCP
socket por el que espera que para la comunicación con
el cliente contacte con él el cliente
• Indica el puerto asociado • Permite que el servidor se
El cliente comunique con varios
clientes simultáneamente
• 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
12
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


Ejemplo en pseudo-código
Servidor
SISTEMAS Y SERVICIOS

Cliente
• Crear el socket TCP
(Stream)
• Asignarle el puerto en el
que esperar
• Solicitar al S.O. que
escuche y acepte esas
conexiones
• Crear el socket TCP • Esperar una conexión
(Stream)
• Solicitar al S.O. que lo
conecte con un destino Three-way
handshake • Nueva conexión. Socket
(IP+puerto) concreto (…)
nuevo. El original sigue
aceptando conexiones
• Conexión establecida Datos
• Escribir/Leer del socket
• Escribir/Leer del socket (…)
• Cierre de la conexión

Finalización
• Cerrar el socket/conexión
(…)
13
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


Cliente en C (I)
Cliente Servidor
Crear el socket TCP (…) SISTEMAS Y SERVICIOS

• Crear el socket TCP


(Stream)
• Asignarle el puerto en el
que esperar
• Solicitar al S.O. que
int sockcliente, ret; escuche y acepte esas
struct sockaddr_in dirsock; conexiones
struct hostent *resolvhost; • Esperar una conexión

sockcliente=socket(PF_INET,SOCK_STREAM,0);
if (sockcliente==-1) ERROR();
Acepta conexiones
al puerto 80
Cliente Servidor

Transporte Transporte
Red Red
Enlace Enlace
Físico Físico
14
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


Cliente en C (II)
Cliente Servidor
SISTEMAS Y SERVICIOS

• Esperar una conexión


dirsock.sin_family=AF_INET;
resolvhost=gethostbyname(“servidor.tlm.u
navarra.es”);
DNS (…)

if (resolvhost==NULL) ERROR();
dirsock.sin_addr.s_addr=*(u_long*)resolv
host->h_addr_list[0];

dirsock.sin_port=htons(80);

Acepta conexiones
Petición al al puerto 80
servidor de DNS Cliente Servidor
192
.16
8.1 Transporte Transporte
7.1
4 Red Red
Enlace Enlace
Físico Físico
15
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


Cliente en C (III)
Cliente Servidor
(…) Y SERVICIOS

• Esperar una conexión


ret=connect(sockcliente, (struct
ConectarSISTEMAS

sockaddr*)&dirsock, sizeof(dirsock));
if (ret==-1) ERROR();
• Nueva conexión

Acepta conexiones
Conecta con la aplicación al puerto 80
Cliente en 192.168.17.14, puerto 80 Servidor

Transporte Transporte
Red Red
Enlace Enlace
Físico Físico
16
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


Cliente en C (y IV)
Cliente Servidor
SISTEMAS Y SERVICIOS

write(sockcliente,...); • Escribir/Leer del socket


read(sockcliente,...);
Enviar/recibir

.
.
.
.
close(sockcliente); • Cierre de la conexión
Cierre (…)

Acepta conexiones
al puerto 80
Cliente Servidor

Transporte Transporte
Red Red
Enlace Enlace
Físico Físico
17
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


Servidor en C (I)
Cliente Servidor
SISTEMAS Y SERVICIOS

int sockservidor, sockconectado;


int ret, dirlen=sizeof(dirsock);

Crear el socket TCP (…)


struct sockaddr_in dirsock;

sockservidor=socket(PF_INET,SOCK_STREAM,0);
if (sockservidor==-1) ERROR();

• Crear el socket TCP


(Stream)

Cliente Servidor

Transporte Transporte
Red Red
Enlace Enlace
Físico Físico
18
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


Servidor en C (II)
Cliente Servidor
SISTEMAS Y SERVICIOS

dirsock.sin_family=AF_INET;
dirsock.sin_addr.s_addr=INADDR_ANY;

“bind” (…)
dirsock.sin_port=htons(80);

ret= bind(sockservidor, (struct


sockaddr*)&dirsock, sizeof(dirsock));
if (ret==-1) ERROR();

• Crear el socket TCP


(Stream)

Cliente Servidor
Puerto 80
Transporte Transporte
Red Red
Enlace Enlace
Físico Físico
19
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


Servidor en C (III)
Cliente Servidor
SISTEMAS Y SERVICIOS

“listen” (…)
ret=listen(sockservidor,5);
if (ret==-1) ERROR();

sockconectado=accept(sockservidor, (struct
sockaddr*)&dirsock, &dirlen);

Entregar
conexión
• Solicitar al S.O. que lo
conecte con un destino
(IP+puerto) concreto (…)

Completa
conexiones al
Cliente Servidor
Puerto 80
Transporte Transporte
Red Red
Enlace Enlace
Físico Físico
20
ARQUITECTURA DE REDES,

Área de Ingeniería Telemática


Servidor en C (y IV)
Cliente Servidor
SISTEMAS Y SERVICIOS

Enviar/Recibir
• Escribir/Leer del socket write(sockconectado,...);
read(sockconectado,...);
.
.
.
.

Conexión (…)
close(sockconectado);

Cerrar
• Cierre de la conexión

Completa
conexiones al
Cliente Servidor
Puerto 80
Transporte Transporte
Red Red
Enlace Enlace
Físico Físico
21

Vous aimerez peut-être aussi