PDF de programación - Sockets (UDP) - Tema 2.- Nivel de aplicación en Internet

Imágen de pdf Sockets (UDP) - Tema 2.- Nivel de aplicación en Internet

Sockets (UDP) - Tema 2.- Nivel de aplicación en Internetgráfica de visualizaciones

Publicado el 10 de Junio del 2021
223 visualizaciones desde el 10 de Junio del 2021
1,3 MB
7 paginas
Creado hace 19a (17/10/2004)
Sockets (UDP)

Tema 2.- Nivel de aplicación en Internet

Dr. Daniel Morató
Redes de Computadores
Ingeniero Técnico en Informática de
Gestión, 2º curso

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:

los datos pueden
recibirse desordenados o
incluso perderse

Para la aplicacación

UDP ofrece transferencia no fiable
de grupos de bytes (“datagramas”)

entre el cliente y el servidor

3 Nov

Sockets UDP

1/12

1

Creación de un Socket

int socket(int domain, int type, int protocol)
» int domain

 Hay diferentes

tipos de

sockets para

diferentes familias de protocolos

» int type

 SOCK_STREAM, SOCK_DGRAM, (otros)

» int protocol

 En caso de que haya varios protocolos en la

misma categoría

3 Nov

Sockets UDP

2/12

Enviar datagrama

int sendto(int s, void* msg, int len, int flags,

struct sockaddr *to, int tolen)

» int s

 Socket

» void* msg

 Puntero a la zona de memoria con los bytes a enviar

» int len

 Número de bytes de esa zona de memoria a enviar

» int flags
 Opciones

» struct sockaddr *to

 Puntero a estructura con dirección IP y puerto del receptor

» int tolen

 Tamaño de la estructura anterior

3 Nov

Sockets UDP

3/12

2

Recibir datagrama

» int recvfrom(int s, void* buf, int len, int

»

flags, struct sockaddr *from, int *fromlen)
int s
 Socket
» void *buf

 Zona de memoria donde guardar lo recibido (debe estar

reservada!)

int len
 Espacio máximo a emplear en esa zona de memoria
int flags
 Opciones
struct sockaddr *from
 Puntero a zona de memoria que la función rellena con una

estructura que incluye la dirección y puerto del emisor

int *fromlen
 Al llamar a la función debe ser el tamaño de la zona de
memoria anterior. Al salir contiene el tamaño de la estructura
4/12

Sockets UDP

»

»

»

»

3 Nov

Ejemplo en pseudo-código

» Cliente

1.

2.

3.
4.

TCP

socket

Crear el
(Stream)
Solicitar al S.O. que lo
conecte con un destino
(IP+puerto) concreto
Conexión establecida
Escribir/Leer del socket...

5.

Cerrar el socket/conexión

3 Nov

»
1.
2.

3.

4.

5.

6.
7.

Servidor
Crear el socket TCP (Stream)
Asignarle el puerto en el que
esperar
Solicitar al S.O. que escuche
y acepte esas conexiones
Esperar una conexión...

Nueva conexión. Un socket
nuevo hace referencia a la
conexión, el original sigue
aceptando conexiones
Escribir/Leer del socket...
Cierre de la conexión

5/12

Three-way
handshake

s
o
t
a
D

Finalización

Sockets UDP

3

Ejemplo en pseudo-código

» Cliente

1.

2.

socket UDP

Crear el
(Dgram)
Solicitar al S.O. que se
envíen ciertos datos a un
destino
(IP+puerto)
concreto

Datos

»
1.

2.

3.

4.

socket UDP

Servidor
Crear el
(Dgram)
Asignarle el puerto en el
que esperar
Esperar un datagrama...

Datagrama
no)

recibido (o

3 Nov

Sockets UDP

6/12

Ejemplo en C (1)

» Cliente

» Servidor

struct sockaddr_in dirsock, emisor;
int sockservidor, ret, frlen=sizeof(emisor);
char

*buf[2000];

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

dirsock.sin_addr.s_addr=INADDR_ANY;
dirsock.sin_port=htons(53);
ret= bind(sockservidor, (struct

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

if (ret==-1) ERROR();

s
o
c
k
e
t

U
D
P

.
.
.

C
r
e
a
r

e
l


p
u
e
r
t
o

.
.
.

A
s
i
g
n
a
r

Cliente

Transporte

Red
Enlace
Físico

Servidor Recibe datagramas
Transporte

al puerto 53

Red
Enlace
Físico

3 Nov

Sockets UDP

7/12

4

l

e

r
a
e
r
C

.
.
.

P
D
U

t
e
k
c
o
s

r
a
i
v
n
E

.
.
.

a
m
a
r
g
a
t
a
D

Ejemplo en C (y 2)

» Cliente

int sockcliente, ret;
struct sockaddr_in dirsock;
struct hostent *resolvhost;

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

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];

dirsock.sin_port=htons(53);

ret=sendto(sockcliente, buf, max, 0, (struct

sockaddr*)dirsock, sizeof(dirsock));

Cliente

Transporte

Red
Enlace
Físico

» Servidor

ret=recvfrom(sockservidor, buf,

2000, 0, (struct
sockaddr*)&emisor, &frlen);

a

r
e
c
i
b
i
r

E
s
p
e
r
a
r

if (ret==-1) ERROR();

Servidor Recibe datagramas
Transporte

al puerto 53

Red
Enlace
Físico

3 Nov

Sockets UDP

8/12

Conectar
¡Completamente prescindible!

int connect(int s, struct sockaddr *name, int len)

» La misma función que con sockets TCP

pero:
 No conlleva una conexión ni el envío de

ningún paquete

 Lo único que hace es que el socket memorice

un destinatario (IP y puerto)

 De esa forma podemos emplear write()

3 Nov

Sockets UDP

9/12

5

Resumen del tema

» El mundo de las aplicaciones de Internet
se divide en tres grupos: clientes y
servidores :-)

» El protocolo de nivel de aplicación
que

mensajes

determina
intercambian

los

» API de sockets para programarlas
» Encarnaciones similares en distintos S.O. y

lenguajes

» En UNIX lo sockets son descriptores de

fichero

3 Nov

Sockets UDP

10/12

Temario

0.- Presentación de la asignatura
1.- Introducción y revisión de conceptos
2.- Nivel de aplicación en Internet





Principios
Funcionamiento de servicios
Diseño y programación de servicios

3.- Nivel de transporte en Internet
4.- Nivel de red en Internet
5.- Nivel de enlace

3 Nov

Sockets UDP

11/12

6

Próximo Tema
» Nivel de Transporte en Internet

 Principios
 Protocolos UDP y TCP

Próxima clase

Principios

Protocolo UDP

» Lecturas recomendadas:

 [1] 3.1-3.3

3 Nov

Sockets UDP

12/12

7
  • Links de descarga
http://lwp-l.com/pdf19289

Comentarios de: Sockets (UDP) - Tema 2.- Nivel de aplicación en Internet (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