Socket

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

REDES DE INFORMACIÓN

:: Laboratorio 4 ::

aplicación
transporte
red
enlace
Sockets TCP & UDP
física

Contenidos

• Introducción.

• User Datagram Protocol (UDP).

• Transport Control Protocol (TCP).

• Programación de sockets TCP & UDP en Python.

Redes de Información 2011 :: Laboratorio 4


Introducción

• La capa de transporte es el
capas
corazón de toda la jerarquía superiores
USUARIO
del servicio

de protocolos.
de transporte

transporte
• Es la que realmente ofrece
PROVEEDOR
red del servicio
de transporte

servicios de valor a los enlace


usuarios y aplicaciones. física

Redes de Información 2011 :: Laboratorio 4

Introducción
• La capa de transporte se encarga de proveer:
Comunicaciones entre procesos.
Mecanismos de control de flujo.
Mecanismos de control de errores.
Establecimiento de las conexiones.

• La capa de transporte en internet ofrece dos tipos de


servicios a la capa de aplicación:
No orientados a conexión (UDP).
Orientados a conexión (TCP).
Redes de Información 2011 :: Laboratorio 4
Introducción

Direccionamiento de procesos :: puertos


• La capa de red se encarga de la comunicación host a host,
mientras que los protocolos de transporte realizan la
comunicación proceso a proceso (multiplexación).
• La IP identifica una interfaz de red de un entidades de transporte
host. (procesos)

• Un puerto identifica un proceso en la P1 P1 P1 P1

máquina.
• El puerto es un número de 16 bits:
0 – 1023: “Bien conocidos” transporte
1024 – 49151: “Registrados” red
49152 – 65535: “Dinámicos”
enlace
La asignación oficial de puertos está disponible en: física
http://www.iana.org/assignments/port-numbers

Redes de Información 2011 :: Laboratorio 4

Introducción
Servicio no orientado a conexión en la capa de
transporte

• Una aplicación puede enviar paquetes de datos,


incorporando una dirección de destino en cada
paquete.

• La aplicación receptora los recibirá como entidades


separadas, por lo tanto, la información debe ser
manejada mensaje por mensaje.

• Este servicio resulta adecuado para aplicaciones que


tienen que manejar muchos mensajes pequeños y de
tamaño acotado.
Redes de Información 2011 :: Laboratorio 4
Introducción
Servicio orientado a conexión en la capa de
transporte

• Se le ofrece a la aplicación una interfaz de conexión


establecida extremo a extremo.

• Las aplicaciones disponen de uno a varios circuitos


virtuales en los que la información transmitida se
maneja como un “flujo continuo de datos”.

• Este servicio es adecuado para aplicaciones que


necesitan intercambio de datos de tamaños
indeterminados, sin tener que preocuparse de
subdividirlos en mensajes.
Redes de Información 2011 :: Laboratorio 4

UDP (User Datagram Protocol)


• Es un protocolo que ofrece un servicio no orientado a
conexión.
• No garantiza la entrega de mensajes.
• No garantiza el orden ni evita la duplicidad de mensajes.
• El protocolo realiza una multiplexación del tráfico IP para
que pueda ser manejado por varias aplicaciones
concurrentes. También hace un control de errores básico.
• El direccionamiento de procesos, en un mismo host, se
realiza por medio de un identificador de 16bits llamado
“puerto UDP”.

Redes de Información 2011 :: Laboratorio 4


UDP :: Cabecera

• Si se indica el puerto de origen es para que el receptor pueda


responder a la aplicación emisora (si es necesario).
• El checksum IP solo afecta a la cabecera IP. Si se requiere
“confiabilidad” sobre los datos se debe usar el checksum UDP.
Redes de Información 2011 :: Laboratorio 4

TCP (Transport Control Protocol)


• Es un protocolo que ofrece un servicio orientado a
conexión.
• Garantiza la integridad del flujo de datos.
• Se encarga, de forma transparente, del control de flujo y
congestión, pérdida, repetición y orden de los paquetes.
• Se encarga de la multiplexación del tráfico IP para que
pueda ser manejado por varias aplicaciones concurrentes.
• El direccionamiento de procesos se realiza por medio de
un identificador denominado “puerto TCP”.
• A la unidad de datos se la denomina “segmento”
Redes de Información 2011 :: Laboratorio 4
TCP
• Las conexiones TCP son full duplex y punto a punto.
• TCP no soporta multicast.
• Cada dato de la carga de un segmento TCP tiene su propio
número de secuencia de 32 bits.
• Utiliza un sistema de control de flujo de ventana
deslizante.
Los mecanismos de confirmación de recepción y del control
de la ventana son independientes.
• La tasa de salida se controla mediante la ventana de
congestión, la ventana de recepción y el umbral.

Redes de Información 2011 :: Laboratorio 4

TCP :: Cabecera

Redes de Información 2011 :: Laboratorio 4


TCP :: Cabecera
• número de secuencia: El número de secuencia del primer byte del segmento. Si
SYN está activo, indica el número inicial (n). El primer byte será n+1.
• acuse de recibo: Si ACK está activo, indica el número de secuencia del siguiente
byte que espera recibir.
• offset: tamaño de la cabecera TCP (en palabras de 4 bytes). Indica donde comienza
la carga del segmento.
• URG: activa el puntero urgente.
• ACK: activa el acuse de recibo.
• PSH: indica que los datos deben entregarse inmediatamente.
• RST: sirve para rechazar un intento de conexión o reiniciar una conexión activa.
• SYN: se utiliza para el establecimiento de conexiones. Junto al bit ACK sirve para el
inicio de conexión de tres vías.
• FIN: se utiliza para finalizar conexiones. Puede ser unidireccional o bidireccional
• ventana: indica cuantos bytes está dispuesto a aceptar el receptor.
• puntero urgente: si URG está activo, es el puntero al primer byte urgente.

Redes de Información 2011 :: Laboratorio 4

Sockets TCP / UDP


• Las aplicaciones que necesitan manejar tráfico deben utilizar una dirección
IP (para direccionar un host) y un puerto (para direccionar un proceso).
• La tupla (IP, puerto) se denomina “socket”.
• Una conexión se identifica con un par de sockets (socket1, socket2).
• Los segmentos TCP y UDP se encapsulan sobre datagramas IP.
• La cabecera IP indica la dirección IP mientras que la cabecera TCP o UDP
indican el número de puerto.

Redes de Información 2011 :: Laboratorio 4


Sockets TCP / UDP
• Un socket es un extremo en una conexión de red.
• Los sockets son el API (Application Programming
Interface) que permite utilizar los servicios de la capa de
transporte.
• La interfaz de sockets original era parte de Unix BSD
(Berkeley Software Distribution) por lo que suelen ser
denominados “Sockets BSD”.
• En los sistemas UNIX los sockets son implementados
como llamadas al sistema, cuyo tratamiento es muy similar
al de los archivos convencionales.

Redes de Información 2011 :: Laboratorio 4

Sockets :: Tipos

Aplicación • A parte de los sockets


STREAM y DGRAM
Stream
sockets
Datagram
sockets
Raw
sockets es habitual disponer
de otros tipos de
sockets como RAW o
UNIX.
TCP UDP

IP
• Los sockets RAW
suelen requerir
privilegios especiales.
Capas Inferiores

Redes de Información 2011 :: Laboratorio 4


Sockets

• El API (Application Programming Interface) de


sockets, al igual que todas las llamadas al sistema
UNIX están implementadas como funciones C.
• Por simplicidad, pero sin pérdida de generalidad,
vamos a ver la librería de sockets de Python que no es
mas que un wrapper de las llamadas al sistema C.

Redes de Información 2011 :: Laboratorio 4

Python :: La clase Socket


• En Python los sockets son objetos, cuyo constructor es:
socket(familia, tipo, [proto])
familia: AF_INET, AF_INET6, AF_UNIX, AF_PACKET
tipo: SOCK_STREAM, SOCK_DGRAM, SOCK_RAW
proto: en caso de que el tipo seleccionado permita varios
protocolos.
• En el caso de IPv4 se usa AF_INET con SOCK_DGRAM para
UDP y SOCK_STREAM para TCP.
• SOCK_RAW permite construir paquetes directamente sobre el
nivel de enlace o tramas sobre el nivel físico.

Redes de Información 2011 :: Laboratorio 4


Python :: La clase Socket
• bind(address):
vincula o asocia el socket a una dirección
address: El formato depende de la familia de socket. En el
caso de AF_INET es una tupla (host, puerto).
• connect(address):
Si se utiliza STREAM, conecta el socket local al socket remoto
que está en la dirección indicada. Si se utiliza DGRAM, indica
cuál es el destino y origen por defecto de los datagramas.
• listen(backlog):
backlog indica cuantos clientes quedarán a la espera como
máximo. Las demás conexiones serán rechazadas. Solo tiene
sentido en STREAM.
Redes de Información 2011 :: Laboratorio 4

Python :: La clase Socket


• accept():
Acepta una nueva conexión (solo en STREAM)
Devuelve una tupla (conn, address)
conn: Es un socket recién creado para materializar la conexión con el
cliente remoto.
address: La dirección del otro extremo de la conexión (el cliente).
• send(data, [flags]):
Envía data al socket remoto. Si es un socket DGRM envía a la dirección
indicada en connect(). Devuelve la cantidad de bytes recibidos.
• recv(size, [flags]):
size es la cantidad de bytes que se desean leer. Devuelve los datos
recividos.

Redes de Información 2011 :: Laboratorio 4


Python :: La clase Socket
• sendto(data, [flags], address):
Envía data al socket indicad en address (solo en DGRAM)
• recvfrom(size, [flags]):
size es la cantidad de bytes que se desean leer.
Devuelve una tupla (data, address)
data: Son los datos recibidos.
address: La dirección del socket que ha enviado el datagrama.
Solo tiene sentido para sockets DGRAM
• shutdown(how):
Permite cerrar una conexión STREAM de forma unidireccional
o bidireccional.
• close():
Cierra la conexión (si la hay) y libera los recursos del socket.

Redes de Información 2011 :: Laboratorio 4

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy