Puertos y Sockets

25
Protocolos de transporte

description

Curso Erick Jimenez

Transcript of Puertos y Sockets

Page 1: Puertos y Sockets

Protocolos de transporte

Page 2: Puertos y Sockets

Puertos

Cada proceso que se comunica con otro proceso se identifica a sí mismo a la familia de protocolos TCP/IP por uno o más puertos. Un puerto es un número de 16 bits, usado por el protocolo host-a-host para identificar a qué protocolo de más alto nivel o programa de aplicación (proceso) debe entregar los mensajes de entrada.

Como algunos programas de más alto nivel son protocolos por sí mismos, estandarizados en la familia de protocolos TCP/IP, tales como telnet y ftp, usan el mismo número de puerto en todas las realizaciones de TCP/IP. Aquellos números de puerto "asignados" se denominan puertos bien-conocidos y las aplicaciones estándares servicios bien-conocidos.

Page 3: Puertos y Sockets

Puertos

Los puertos "bien-conocidos" los controla y asigna la Autoridad de Números Asignados de Internet (IANA) y en la mayoría de los sistemas sólo pueden usarlo los procesos del sistema o programas ejecutados con privilegios de usuario. Los puertos "bien-conocidos" asignados ocupan números de puerto en el rango de 0 a 1023. Los puertos con números dentro del rango 1024-65535 no los controla la IANA y la mayor parte de los sistemas únicamente usan programas desarrollados por usuarios.

La confusión debida a que dos aplicaciones diferentes intentan usar los mismos números de puerto sobre un host se evita escribiendo esas aplicaciones para pedir un puerto TCP/IP disponible. Puesto que este número de puerto se asigna dinámicamente, debe diferir de una invocación de una aplicación a la próxima.

Page 4: Puertos y Sockets

Sockets

Un socket es un tipo especial de manejador de fichero que utiliza un proceso para pedir servicios de red al sistema operativo.

Una dirección de socket es la tripleta: {protocolo, dirección-local, proceso-local} En la familia TCP/IP, por ejemplo:{TCP, 193.44.234.3, 12345}

Page 5: Puertos y Sockets

Sockets

Una conversación es el enlace de comunicación entre dos procesos.

Una asociación es la quíntupla que especifica completamente los dos procesos que comprende una conexión:{protocolo, dirección-local, proceso-local, dirección-

externa, proceso-externo}

En la familia TCP/IP, por ejemplo: {TCP, 193.44.234.3, 1500, 193.44.234.5, 21}

Podría ser una asociación válida.

Page 6: Puertos y Sockets

Sockets

Una media-asociación es:{protocolo, dirección-local, proceso-local} o {protocolo, dirección-externa, proceso-externo}

que especifica cada mitad de una conexión.

La media-asociación se denomina también socket o dirección de transporte. Esto es, un socket es un punto terminal para comunicación que puede nombrarse y direccionarse en una red.

Page 7: Puertos y Sockets

Sockets Application Interfaces (APIs)

La interfaz socket es una de las muchas APIs para los protocolos de comunicación. Diseñada para ser una interfaz de programación de comunicación, fue introducida primero por el sistema UNIX 4.2BSD.

Aunque no se ha estandarizado, ha llegado a ser un estándar en la industria.

Page 8: Puertos y Sockets

Sockets

Page 9: Puertos y Sockets

Protocolo de Datagramas de Usuario (UDP)

UDP es un protocolo estándar con número 6 de STD. Este protocolo se describe en el RFC 768 - Protocolo de Datagrama de Usuario. En la práctica cada implementación TCP/IP que no se use exclusivamente para encaminamiento incluirán UDP.

UDP es básicamente una interfaz de aplicación para IP. No soporta confiabilidad, control de flujo o recuperación de errores para IP. Simplemente sirve como "multiplexor/demultiplexor" para enviar y recibir datagramas, usando puertos para dirigir los datagramas como se muestra en la figura siguiente.

NOTA: El propósito de los números STD es indicar claramente qué RFCs describen los estándares de Internet.

Page 10: Puertos y Sockets

Protocolo de Datagramas de Usuario (UDP)

UDP proporciona un mecanismo para que una aplicación envíe un datagrama a otra. La capa UDP es sumamente delgada por lo que tiene pocas sobrecargas, pero requiere que la aplicación sea responsable de la recuperación de errores y demás características no soportadas.

Page 11: Puertos y Sockets

Formato del Datagrama UDP

Cada datagrama UDP se envía con un único datagrama IP. Aunque el datagrama IP se puede fragmentar durante la transmisión, la implementación de recepción IP lo re-ensamblará antes de presentarlo a la capa UDP.

Todas las  implementaciones IP están preparadas para aceptar datagramas de 576 bytes, permitiendo un tamaño máximo de cabacera IP de 60 bytes sabiendo que un datagrama UDP de 516 bytes lo aceptan todas las implementaciones.

Page 12: Puertos y Sockets

Formato del Datagrama UDP

Muchas implementaciones aceptarán datagramas mayores, aunque no se puede asegurar. El datagrama UDP tiene una cabecera de 16 bytes que se describe en la figura siguiente:

Page 13: Puertos y Sockets

Formato del Datagrama UDP

puerto de origen Indica el puerto del proceso que envía. Este es el puerto

que se direcciona en las respuestas. puerto destino

Especifica el puerto del proceso destino en el host de destino.

longitud Es el tamaño (en bytes) de este datagrama de usuario

incluyendo la cabecera. suma de comprobación (checksum)

Es un campo opcional de 16 bits en complemento a uno de la suma en complemento a uno de una cabecera pseudo-IP, la cabecera UDP y los datos UDP. La cabecera pseudo-IP contiene la dirección IP fuente y destino, el protocolo y la longitud UDP:

Page 14: Puertos y Sockets

Interfaz de Programación de Aplicaciones UDP

La interfaz de aplicación que ofrece UDP se describe en el RFC 768. Dicha interfaz proporciona:

La creación de nuevos puertos de recepción. La recepción de operaciones que devuelven los bytes de

datos y un indicador de puerto fuente y una dirección fuente IP.

El envío de operaciones que tienen como parámetros los datos, los puertos fuente y destino y las direcciones.

La forma en la que está implementado depende de cada vendedor.

Hay que ser conscientes de que UDP e IP no proporcionan entrega garantizada, control de flujo o recuperación de errores, así que estos mecanismos tienen que ser soportados por las aplicaciones.

Page 15: Puertos y Sockets

Interfaz de Programación de Aplicaciones UDP

Las aplicaciones estándares que utilizan UDP son:

Protocolo de Transferencia de Ficheros Trivial (TFTP)

Sistema de Nombres de Dominio (DNS) servidor de nombres

Llamada a Procedimiento Remoto (RPC), usado por el Sistema de Ficheros en Red (NFS)

Sistema de Computación de Redes (NCS) Protocolo de Gestión Simple de Redes (SNMP)

Page 16: Puertos y Sockets

Protocolo de Control de Transmisión (TCP)

TCP es un protocolo estándar con número 7 de STD. TCP se describe en el RFC 793 - Protocolo de Control de Transmisión.

TCP proporciona muchas más facilidades para las aplicaciones, que UDP: recuperación de errores, control de flujo y

confiabilidad.

Es un protocolo orientado a conexión en contraposición a UDP que no lo es. La mayoría de los protocolos de las aplicaciones de usuario, como TELNET y FTP, utiliza TCP.

Page 17: Puertos y Sockets

Protocolo de Control de Transmisión (TCP)

El propósito primordial de TCP es proporcionar circuitos lógicos confiables o servicios de conexión entre parejas de procesos. Esto no implica confiabilidad desde protocolos de más bajo nivel (como IP) así que TCP debe garantizar esto por sí mismo.

Page 18: Puertos y Sockets

Protocolo de Control de Transmisión (TCP)

TCP se puede caracterizar por las siguientes facilidades que proporciona a las aplicaciones que hacen uso de él:

Tranferencia de flujos de datos. Desde el punto de vista de la aplicación, TCP transfiere un flujo de bytes contiguo a través de internet. La aplicación no tiene que molestarse segmentar los datos en bloques básicos o datagramas. TCP hace esto agrupando los bytes en segmentos TCP, que se transfieren a IP para transmitirlos al destino. TCP decide también por sí mismo cómo segmentar los datos y debe dirigir los datos a su propia conveniencia. A veces, una aplicación necesita estar segura de que todos los datos pasados a TCP han llegado al destino. Por esta razón, se define una función push. Esta push todos los segmentos TCP restantes que están almacenados en el host destino. La función close connection normal también pushes los datos hacia el destino.

Page 19: Puertos y Sockets

Protocolo de Control de Transmisión (TCP)

Confiabilidad. TCP asigna un número de secuencia a cada byte transmitido y espera por un reconocimiento positivo (ACK) del receptor TCP. Si el ACK no se recibe en un intervalo fijado, los datos se retransmiten. Como los datos se transmiten en bloques (segmentos TCP) sólo el número de secuencia del primer byte de datos en los segmentos se envían al host destino. El receptor TCP utiliza los números de secuencia para reorganizar los segmentos cuyo lleguen fuera de orden y para eliminar segmentos duplicados.

Page 20: Puertos y Sockets

Protocolo de Control de Transmisión (TCP)

Control de flujo. El receptor TCP, cuyo envía un ACK de vuelta al emisor, también indica al emisor el número de bytes que puede recibir más allá del último segmento TCP recibido sin causar ningún desbordamiento en sus búferes internos. Este se envía en el ACK de forma del más alto número de secuencia que puede recibir sin problemas. Este mecanismo también se denomina mecanismo ventana.

Multiplexación. Se logra usando puertos, como en UDP.

Page 21: Puertos y Sockets

Protocolo de Control de Transmisión (TCP)

Conexiones lógicas. La confiabilidad y los mecanismos de control de flujo descritos anteriormente requieren que TCP inicializa y mantenga cierta información de estado para cada "flujo de datos". La combinación de este estado, incluyendo sockets, números de secuencia y tamaños de ventana, se llama conexión lógica. Cada conexión se identifica unívocamente por la pareja de sockets usados por los procesos emisor y receptor.

Full Duplex. TCP proporciona flujos de datos concurrentes en ambas direcciones.

Page 22: Puertos y Sockets

El principio de ventana

Un protocolo de transporte simple debe usar el principio siguiente:

enviar un paquete y luego esperar por un reconocimiento del receptor antes de que envíe el próximo paquete. Si el ACK no se recibe en un tiempo razonable, retransmite el paquete.

Page 23: Puertos y Sockets

El principio de ventana

Page 24: Puertos y Sockets

El principio de ventana

utiliza las siguientes reglas:

El emisor debe enviar todos los paquetes dentro de la ventana sin recibir un ACK pero debe activar el tiempo de timeout para cada uno de ellos.

El receptor debe reconocer cada paquete recibido, indicando el número de secuencia del último paquete recibido correctamente.

El emisor rota su ventana cada vez que recibe un ACK.

Page 25: Puertos y Sockets

FIN

Muchas Gracias