Table of Contents RARP Concept

2.10 Puertos y zócalos

En esta sección se presentan los conceptos de puertos y zócalos.

2.10.1 Puertos

Cada proceso que se desea comunicar con otro se identifica en la pila de protocolos TCP/IP con uno o más puertos. Un puerto es un número de 16 bits, empleado por un protocolo host – a – host para identificar a que protocolo del nivel superior o programa de aplicación se deben entregar los mensajes recibidos.

Como algunas aplicaciones son ya de por sí protocolos estandarizados, como TELNET y FTP, emplean el mismo número de puerto en todas las implementaciones TCP/IP. Estos puertos "asignados" se conocen como puertos bien conocidos, y a sus aplicaciones, aplicaciones bien conocidas.

Estos puertos son controlados y asignados por IANA ("Internet Assigned Numbers Authority") y en la mayoría de los sistemas sólo los puede utilizar los procesos del sistema o los programas que ejecutan usuarios privilegiados. Ocupan número de puerto comprendidos en el rango de 0 a 1023. Los puertos con números en el rango de 1024 a 65535 no los controla IANA y en la mayor parte de los sistemas los pueden usar los programas de usuario.

La confusión que se produce cuando dos aplicaciones distintas intentan usar los mismos puertos en un host se evita haciendo que soliciten un puerto disponible a TCP/IP. Como este número se asigna dinámicamente, puede ser diferente en cada ejecución de una misma aplicación.

UDP, TCP y ISO TP-4 están todos basados en el mismo principio de uso de los puertos (Ver Figure - UDP, A Demultiplexer Based on Ports y Figure - TCP Connection.) En la medida de lo posible, se usan los mismos números para los servicios situados sobre UDP, TCP y ISO TP-4.

2.10.2 Zócalos

En primer lugar, conviene definir los siguientes términos:

{protocolo, dirección local, proceso local }

En la pila TCP/IP, por ejemplo:

{tcp, 193.44.234.3, 12345}

{protocolo, dirección local, proceso - local, dirección exterior, proceso exterior}

En la pila TCP/IP, por ejemplo:

{tcp, 193.44.234.3, 1500, 193.44.234.5, 21}

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

{protocolo, dirección - local, proceso local }

o

{protocolo, dirección exterior, proceso exterior}

que especifican cada una de las mitades de la conexión.

La interfaz del zócalo es una de tantas APIs con los protocolos de comunicación. Se introdujo por primera vez en el UNIX BSDD 4.2. Aunque no ha sido estandarizada, se ha convertido en un estándar de facto.

4.2BSD permitía dos dominios de comunicación distintos: Internet y UNIX. 4.3BSD ha añadido los protocolos del XNS ("Xerox Network System") y 4.4BSD añadirá una interfaz extendida para soportar los protocolos OSI.

2.10.3 Llamadas básicas de zócalos

A continuación se muestran algunas llamadas básicas de la interfaz de zócalos.

FORMAT: int sockfd = socket(int family, int type, int protocol)

donde:

FORMAT: int bind(int sockfd, struct sockaddr *localaddr, int addrlen)

donde:

Nótese que tras la llamada a bind, ya hay valores para los tres primeros parámetros de la asociación:

{protocol, local-address, local-process, foreign-address, foreign-process}

FORMAT: int listen(int sockfd, int queue-size)

donde:

FORMAT: int accept(int sockfd, struct sockaddr *foreign-address, int addrlen)

donde:

Nótese que la llamada a accept la efectúa un proceso servidor más que un cliente. Si hay una solicitud de conexión encolada, accept toma la primera solicitud de la cola y crea otro zócalo con las mismas propiedades que sockfd; en otro caso, accept bloquea el llamador hasta que llega una solicitud de conexión.

FORMAT: int connect(int sockfd, struct sockaddr *foreign-address, int addrlen)

donde:

Nótese que esta llamada la efectúa un proceso cliente más que uno servidor.

Las funciones read(), readv(sockfd, char *buffer, int addrlen), recv(), readfrom(), send(sockfd, msg, len, flags), write() se pueden emplear para recibir y enviar datos en una asociación ya establecida.

Nótese que estas llamadas son similares a las llamadas estándar del sistema de E/S read y write.

FORMAT: int close(int sockfd)

donde:

 

2.10.4 Ejemplo

Como ejemplo, considérese las llamadas del sistema de zócalos para un protocolo orientado a conexión.


Figura: Llamadas del sistema para zócalos para un protocolo orientado a conexión

Especificando los elementos de la asociación:


Figura: Llamadas del sistema para zócalos y asociación

La interfaz de zócalos se distingue por los diferentes servicios suministrados. Flujo, datagramas y zócalos a bajo nivel definen cada uno distintos servicios disponibles para las aplicaciones.

Table of Contents UDP(User Datagram Protocol)