0% encontró este documento útil (0 votos)
56 vistas17 páginas

Programacion de Sockets

Este documento describe la programación de sockets para construir aplicaciones cliente-servidor que se comunican a través de redes. Explica que los sockets son puertas creadas por aplicaciones para comunicarse con procesos remotos utilizando protocolos de transporte como UDP o TCP. También proporciona ejemplos de código de aplicaciones cliente y servidor simples que intercambian mensajes de texto a través de sockets UDP y TCP.

Cargado por

Saul Cruz
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
56 vistas17 páginas

Programacion de Sockets

Este documento describe la programación de sockets para construir aplicaciones cliente-servidor que se comunican a través de redes. Explica que los sockets son puertas creadas por aplicaciones para comunicarse con procesos remotos utilizando protocolos de transporte como UDP o TCP. También proporciona ejemplos de código de aplicaciones cliente y servidor simples que intercambian mensajes de texto a través de sockets UDP y TCP.

Cargado por

Saul Cruz
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 17

Capa Aplicación: Programación de

sockets

ELO322: Redes de Computadores


Agustín J. González
Este material está basado en:
 Material de apoyo al texto Computer Networking: A Top Down
Approach Featuring the Internet. Jim Kurose, Keith Ross.

2: Capa Aplicación 1
Capítulo 2: Capa Aplicación
 2.1 Principios de la  2.5 P2P para archivos
compartidos
aplicaciones de red
 2.6 Video streaming y
 2.2 Web y HTTP
redes de distribución de
 2.3 Correo contenidos (Redes II)
Electrónico  2.7 Programación de
 SMTP, POP3, IMAP sockets con UDP y TCP
 2.4 DNS

2: Capa Aplicación 2
Programación de Sockets (1)
Objetivo: adquirir familiaridad sobre cómo construir
aplicaciones cliente servidor que se comunican
usando sockets
sockets
API para sockets
 Fue introducida en BSD4.1 UNIX, Son locales al host,
1981 creados por la
 El socket es explícitamente creado, aplicación,
usado, y cerrado por las aplicaciones Es una interfaz
 Sigue el modelo cliente/servidor controlada por el OS
 Hay dos tipos de servicios de (una “puerta”) a través
transporte vía el API de socket: de la cual el proceso
 Datagramas no confiables (UDP) aplicación puede enviar
 Orientado a un flujo de bytes, éste y recibir mensajes
es confiable (TCP) a/desde otro proceso
remoto de la aplicación

2: Capa Aplicación 3
Programación de Sockets (2)
objetivo: aprender cómo construir aplicaciones cliente/servidor
que se comunican usando sockets.
socket: puerta entre el proceso aplicación y el protocolo de
transporte extremo a extremo (protocolo de capa de transporte)

application application
process socket process
Definido por el
desarrollador de la
aplicación.
transport transport
network network Controlado por el
link link Sistema Operativo
Internet
physical physical

2: Capa Aplicación 4
Programación de Socket (3)
Dos tipos de sockets para dos servicios de transporte:
 UDP: datagrama (grupo de bytes) no confiable

 TCP: Confiable, flujo de bytes

Ejemplo de aplicación:
1. Cliente lee una línea de
caracteres (datos) desde su
teclado y envía el texto al
servidor.
2. El servidor recibe el texto y lleva
sus letras a mayúscula.

3. El servidor envía el texto


modificado al cliente.

4. El cliente recibe el texto


modificado y muestra la línea en
pantalla.
2: Capa Aplicación 5

Cliente

Flujos de ida y vuelva


2° Internet 4° Podemos usar protocolo UDP o TCP
UDP: sin conexión
TCP: con conexión

Servidor

2: Capa Aplicación 6
Programación de Socket con UDP
User Datagram Protocol
UDP: no hay “conexión” entre
cliente y servidor
 No hay handshaking
(establecimiento de
conexión) Punto de vista de la aplicación
 Tx explícitamente adjunta
dirección IP y puerto de UDP provee transferencia no
destino en cada paquete. confiable de grupos de bytes
(“datagramas”)
 Para responder se debe
extraer dirección IP y puerto entre cliente y servidor
del Tx desde el paquete
recibido
Distintos caminos al destino
UDP: datos transmitidos
pueden llegar fuera de orden
o perderse.
Congestión
2: Capa Aplicación 7
Interacción Client/server vía socket UDP

client server (running on serverIP)


create socket:
clientSocket = create socket, port= x:
socket(AF_INET,SOCK_DGRAM) serverSocket =
socket(AF_INET,SOCK_DGRAM)

Create datagram with server IP and


port=x; send datagram via clientSocket
read datagram from serverSocket

write reply to serverSocket


read datagram from clientSocket
specifying client address,
port number
Close clientSocket

2: Capa Aplicación 8
Ejemplo aplicación: Cliente UDP
Python UDPClient
Incluir biblioteca
socket de Python from socket import *
serverName = ‘hostname’
serverPort = 12000
Crea socket UDP para
cliente clientSocket = socket(AF_INET, SOCK_DGRAM)
Obtiene entrada desde
teclado message = raw_input(’Input lowercase sentence:’)
Agregar nombre de servidor y
puerto al mensaje; y lo envía clientSocket.sendto(message,(serverName, serverPort))
usando socket
modifiedMessage, serverAddress =
Lee en string la respuesta
desde socket clientSocket.recvfrom(2048)
Muestra string recibido y print modifiedMessage
cierra el socket
clientSocket.close()

2: Capa Aplicación 9
Ejemplo de aplicación: servidor UDP
Python UDPServer
from socket import *
serverPort = 12000
Crea socket UDP serverSocket = socket(AF_INET, SOCK_DGRAM)
Vincula socket al número de
puerto local 12000 serverSocket.bind(('', serverPort))
print “The server is ready to receive”
Lazo infinito
while 1:
Lee desde socket UDP el
mensaje y dirección de cliente
message, clientAddress = serverSocket.recvfrom(2048)
(IP y puerto) modifiedMessage = message.upper()
Envía al cliente mensaje en serverSocket.sendto(modifiedMessage, clientAddress)
mayúscula.

2: Capa Aplicación 10
Programación de Sockets con TCP
 Cuando el servidor es contactado
El cliente debe contactar al servidor por el cliente, el servidor TCP crea
 Proceso servidor debe estar corriendo otro socket para que el proceso
primero servidor se comunique con ese
 Servidor debe tener creado el socket cliente, hay un socket por cliente
(puerta) que acoge al cliente  Permite que un servidor hable

El cliente contacta al servidor a través de: con múltiples clientes


 La creación de un socket TCP local  IP y Número de puerto fuente
para el cliente (del cliente) distingue a cada
 Especifica la dirección IP, número de cliente (más adelante más sobre
puerto del proceso servidor esto)
 Una vez que el cliente crea el socket:
el socket establece una conexión TCP
al servidor
Punto de vista de la aplicación
TCP provee transferencias de
bytes confiables y en orden. Es
un pipeline (o “tubería”) de datos
entre el cliente y servidor
2: Capa Aplicación 11
Sockets creados en conexión
cliente/servidor usando TCP

1° Paso:
Mensajes para Socket de
establecer la “Bienvenida”
conexión.

Al aceptar una
conexión se crea
un socket
distinto para
2° Paso: cada cliente
Intercambio de
datos.

2: Capa Aplicación 12
Interacción Client/server entre sockets
TCP
client server (running on hostid)
create socket,
port=x, for incoming
request:
serverSocket = socket()

create socket, wait for incoming


connect to hostid, port=x connection request
clientSocket = socket() TCP connectionSocket =
connection setup serverSocket.accept()

send request using


clientSocket read request from
connectionSocket

write reply to
read reply from connectionSocket
clientSocket
close
Close clientSocket connectionSocket

2: Capa Aplicación 13
Ejemplo aplicación: cliente TCP
Python TCPClient
from socket import *
serverName = ’servername’
Crea socket para cliente serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
Conecta socket al nombre y
puerto del servidor remoto clientSocket.connect((serverName,serverPort))
12000
sentence = raw_input(‘Input lowercase sentence:’)
No se requiere agregar
nombre y puerto del servidor clientSocket.send(sentence)
modifiedSentence = clientSocket.recv(1024)
print ‘From Server:’, modifiedSentence
clientSocket.close()

2: Capa Aplicación 14
Ejemplo aplicación: servidor TCP
Python TCPServer
from socket import *
Crea socket TCP de bienvenida serverPort = 12000
TCP serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind((‘’,serverPort))
Servidor comienza a
escuchar requerimientos de serverSocket.listen(1)
conexión
print ‘The server is ready to receive’
Lazo infinito
while 1:
Servidor espera en accept()
por requerimientos de conexión,
connectionSocket, addr = serverSocket.accept()
un nuevo socket es retornado
para atender a ese cliente
Lee bytes desde el socket (no
sentence = connectionSocket.recv(1024)
nos preocupamos por capitalizedSentence = sentence.upper()
dirección como en UDP)
Cierra conexión para este connectionSocket.send(capitalizedSentence)
cliente (pero no socket de
bienvenida) connectionSocket.close()
2: Capa Aplicación 15
Resumen de Capa aplicación
Hemos cubierto varias aplicaciones de red
 Arquitectura de la
aplicaciones  Protocolos específicos:
 cliente-servidor ●
HTTP
 P2P ●
SMTP, POP, IMAP
 híbridos ●
DNS
 Servicios requeridos por
aplicaciones:  Aplicaciones P2P
 confiabilidad, ancho de  Programación de
banda, retardo
 Modelo de servicio de
sockets
transporte en Internet
 Confiable y orientada a la
conexión: TCP
 No confiable, datagramas:
UDP

2: Capa Aplicación 16
Resumen de Capa aplicación
Lo más importante aprendido sobre protocolos
 Intercambio de mensajes  Centralizado vs.
típicos descentralizado
requerimiento/respuesta:  Sin estado vs. con estado
 cliente requiere info o servicio  Transferencia confiable vs.
 servidor responde con datos, Transferencia no confiable
código de estatus  “la complejidad es puesta
 Formato de mensajes: en los bordes de la red (en
 encabezado: campos dando info las aplicaciones)”
sobre datos Distinto a sistema
 datos: info siendo comunicada telefónico clásico.

2: Capa Aplicación 17

También podría gustarte