stringtranslate.com

winsock

En informática , la API de Windows Sockets ( WSA ), posteriormente abreviada como Winsock , es una interfaz de programación de aplicaciones (API) que define cómo el software de aplicación de red de Windows debe acceder a los servicios de red, especialmente TCP/IP . Define una interfaz estándar entre una aplicación cliente TCP/IP de Windows (como un cliente FTP o un navegador web ) y la pila de protocolos TCP/IP subyacente . La nomenclatura se basa en la API de sockets Berkeley utilizada en BSD para las comunicaciones entre programas.

Fondo

Los primeros sistemas operativos de Microsoft, tanto MS-DOS como Microsoft Windows, ofrecían una capacidad de red limitada, basada principalmente en NetBIOS . En particular, Microsoft no ofrecía soporte para la pila de protocolos TCP/IP en ese momento. Varios grupos universitarios y proveedores comerciales, incluido el grupo PC/IP del MIT , FTP Software , Sun Microsystems , Ungermann-Bass y Excelan , introdujeron productos TCP/IP para MS-DOS, a menudo como parte de un paquete de hardware/software. . Cuando se lanzó Windows 2.0 , a estos proveedores se unieron otros como Distinct y NetManage para ofrecer TCP/IP para Windows.

El inconveniente al que se enfrentaban todos estos proveedores era que cada uno de ellos utilizaba su propia API (interfaz de programación de aplicaciones). Sin un modelo de programación estándar único, era difícil persuadir a los desarrolladores de software independientes para que crearan aplicaciones de red que funcionaran con la implementación TCP/IP subyacente de cualquier proveedor. Si a esto le sumamos el hecho de que los usuarios finales desconfiaban de quedar atrapados en un solo proveedor, quedó claro que se necesitaba cierta estandarización.

El proyecto Windows Sockets tuvo su origen en una sesión de Birds Of A Feather celebrada en Interop '91 en San José el 10 de octubre de 1991. [1] Se basa en especificaciones de socket creadas por NetManage y que se hizo de dominio público en esta reunión. . En ese momento, el socket NetManage era el único producto multiproceso 100% basado en DLL disponible para Windows 3.0. La primera edición de la especificación fue escrita por Martin Hall, Mark Towfiq de Microdyne (más tarde Sun Microsystems ), Geoff Arnold de Sun Microsystems y Henry Sanders y J Allard de Microsoft , con la ayuda de muchos otros. [ cita necesaria ] Hubo cierta discusión sobre la mejor manera de abordar los derechos de autor, la propiedad intelectual y posibles problemas antimonopolio, y se consideró trabajar a través del IETF o establecer una fundación sin fines de lucro. Al final, se decidió que los derechos de autor de la especificación simplemente serían propiedad de los cinco autores como individuos (no afiliados).

Todos los desarrolladores participantes se resistieron a acortar el nombre a Winsock simple durante mucho tiempo, [ cita necesaria ] ya que había mucha confusión entre los usuarios entre la API y el archivo de biblioteca DLL (winsock.dll) que solo exponía las interfaces WSA comunes a aplicaciones encima de él. Los usuarios comúnmente creerían que sólo asegurarse de que el archivo DLL estuviera presente en un sistema proporcionaría soporte completo para el protocolo TCP/IP. [ cita necesaria ]

Tecnología

La especificación API de Windows Sockets define dos interfaces: la API utilizada por los desarrolladores de aplicaciones y el SPI , que proporciona un medio para que los desarrolladores de software de red agreguen nuevos módulos de protocolo al sistema. Cada interfaz representa un contrato. La API garantiza que una aplicación conforme funcionará correctamente con una implementación de protocolo conforme de cualquier proveedor de software de red. El contrato SPI garantiza que se puede agregar un módulo de protocolo conforme a Windows y, por lo tanto, será utilizable por una aplicación compatible con API. Aunque estos contratos eran importantes cuando se lanzó Windows Sockets por primera vez, dado que los entornos de red requerían soporte multiprotocolo (ver arriba), ahora son sólo de interés académico. En la versión 2.0 de Windows Sockets API se incluyen funciones para usar IPX/SPX , aunque el protocolo ya estaba casi obsoleto en el momento en que se lanzó WSA 2.0. Microsoft ha incluido la pila de protocolos TCP/IP con todas las versiones recientes de Windows y no existen alternativas independientes importantes. Tampoco ha habido un interés significativo en implementar protocolos distintos de TCP/IP.

El código y el diseño de Windows Sockets se basan en sockets BSD , pero proporcionan funcionalidad adicional para permitir que la API cumpla con el modelo de programación normal de Windows. La API de Windows Sockets cubría casi todas las características de la API de sockets BSD , pero había algunos obstáculos inevitables que surgían principalmente de diferencias fundamentales entre Windows y Unix (aunque Windows Sockets difería menos de los sockets BSD que este último de STREAMS ). Todas las llamadas a funciones en la API comienzan con el apodo WSA , por ejemplo, WSASend() para enviar datos en un socket conectado.

Sin embargo, un objetivo de diseño de Windows Sockets era que fuera relativamente fácil para los desarrolladores migrar aplicaciones basadas en sockets de Unix a Windows. No se consideró suficiente crear una API que sólo fuera útil para programas de Windows recién escritos. Por este motivo, Windows Sockets incluía una serie de elementos diseñados para facilitar la portabilidad. Por ejemplo, las aplicaciones Unix pudieron usar la misma variable errno para registrar tanto los errores de red como los errores detectados dentro de las funciones estándar de la biblioteca C. Como esto no era posible en Windows, Windows Sockets introdujo una función dedicada, WSAGetLastError() , para recuperar información de error. Estos mecanismos resultaron útiles, pero la portabilidad de aplicaciones siguió siendo extremadamente compleja. Muchas aplicaciones TCP/IP originales se habían implementado utilizando características del sistema específicas de Unix , como pseudo terminales y la llamada al sistema fork , y reproducir dicha funcionalidad en Windows era problemático. En un tiempo relativamente corto, la migración dio paso al desarrollo de aplicaciones dedicadas de Windows.

Especificaciones

Aunque el documento no limitaba el soporte a TCP/IP, TCP y UDP fueron los únicos protocolos mencionados explícitamente. La mayoría de los proveedores solo ofrecían soporte TCP/IP, aunque Winsock de DEC también incluía soporte DECNet .

Actualizaciones en Windows 8

Windows 8 incluye las extensiones "RIO" (Registered IO) para Winsock. [2] Estas extensiones están diseñadas para reducir la sobrecarga de la transición del usuario al modo kernel para la ruta de datos de la red y la ruta de notificación, pero utilizan el resto de la pila TCP y UDP normal de Windows (y utilizan tarjetas de red existentes). La ruta de instalación (por ejemplo, la función "conectar") no cambia con respecto a la ruta normal de Winsock.

Implementaciones

Implementaciones de Microsoft

Otras implementaciones

Ver también

Referencias

  1. ^ "Winsock versión 1.0 Rev.A" . Consultado el 8 de octubre de 2020 .
  2. ^ "Nuevas técnicas para desarrollar aplicaciones de red de baja latencia". Canal 9 .
  3. ^ "Mosaic cumple 20 años: encendamos a la vieja, enséñele la web hoy". allíregister.co.uk .
  4. ^ "Cómo era construir un sitio web mundial en 1995". fastcompany.com . 18 de noviembre de 2015.
  5. ^ "Descargas". www.trumpet.com.au .

enlaces externos