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