Sistemas operativos modernos

El primer tipo de socket permite a dos procesos de máquinas distintas establecer el equivalen­ te de una canalización entre ellos. Los bytes entran por un extremo y salen en el mismo orden por el otro extremo. El sistema garantiza que todos los bytes enviados llegarán en el mismo or­ den en que se enviaron. El segundo tipo es similar al primero, excepto que conserva la delimitación de paquetes. Si el transmisor emite cinco llamadas distintas a write, cada una por 512 bytes, y el receptor pide 2560 bytes, con un socket tipo 1 se devolverán los 2560 bytes juntos. Con un socket tipo 2, sólo se devolverán 512 bytes. Se requerirán otras cuatro llamadas para obtener el resto. El tercer tipo de socket sirve para proporcionar al usuario acceso a la red cruda. Este tipo es de es­ pecial utilidad en aplicaciones de tiempo real y en situaciones en las que el usuario quiere im­ plementar un esquema especializado para manejar errores. La red podría perder o desordenar los paquetes. No hay garantías, como en los primeros dos casos. La ventaja de este modo es su mayor velocidad, que a veces es más importante que la confiabilidad (por ejemplo, para sumi­ nistro multimedia, donde es más importante llegar a tiempo que llegar bien). Cuando se crea un socket, uno de los parámetros especifica el protocolo que se usará en él. En el caso de flujos confiables de bytes, el protocolo más popular es TCP (Protocolo de Control de IVansmisión; Transmission Control Protocol). Para la transmisión no confiable orientada a paque­ tes, la opción acostumbrada es UDP (Protocolo de Datagramas de Usuario; User Datagram Protocol). Ambos están en capas encima de IP (Protocolo Internet; Internet Protocol). Todos es­ tos protocolos tuvieron su origen en la red ARPANET del Departamento de Defensa de Estados Unidos y ahora constituyen la base de Internet. No existe un protocolo común para los flujos con­ fiables de paquetes. Para que un socket pueda usarse para conectividad de redes, debe estar enlazado a una di­ rección. Esta dirección puede estar en varios dominios de nombres. El más común de ellos es el dominio de nombres de Internet, que usa enteros de 32 bits para nombrar los extremos de una conexión en la Versión 4, y enteros de 128 bits en la Versión 6 (la Versión 5 fue un siste­ ma experimental que nunca llegó a las grandes ligas). Cuando los sockets estén creados tanto en la computadora de origen como en la de destino, podrá establecerse una conexión entre ellos (en el caso de comunicaciones orientadas a conexio­ nes). Una parte emite una llamada al sistema listen en un socket local, lo cual crea un búfer y bloquea el proceso hasta que llegan datos. La otra emite una llamada al sistema connect, dando como parámetros el descriptor de archivo de un socket local y la dirección de un socket remoto. Si la parte remota acepta la llamada, el sistema establece una conexión entre los sockets. Una vez establecida la conexión, funciona de forma análoga a una canalización. Un pro­ ceso puede leer la conexión y escribir en ella empleando el descriptor de archivo de su socket local. Cuando ya no se necesita la conexión, se puede cerrar de la forma acostumbrada, con una llamada al sistema d o se . 10.5.2 Llamadas al sistema para entrada/salida en UNIX Cada dispositivo de E/S de un sistema UNIX por lo regular tiene asociado un archivo especial. Ca­ si toda la E/S puede efectuarse utilizando simplemente el archivo correcto, lo que hace innecesa­ rio tener llamadas especiales al sistema. No obstante, hay ocasiones en las que se necesita algo

RkJQdWJsaXNoZXIy MjI4NDcx