Programacion de Sockets
Programacion de Sockets
sockets
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
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.
Cliente
Servidor
3°
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
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
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()
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