Introducción a Winsock, incluidos antecedentes y tecnología
Introduction Winsock Including Background Technology
Esta publicación habla principalmente sobre la API de Windows Sockets, que se puede abreviar a WSA y Winsock. Después de leer este post, podrás conocer su definición, antecedentes, tecnología e implementaciones.
En esta página :Definición de Winsock
¿Qué es Winsock? En informática, Winsock es una especificación técnica utilizada para definir cómo el software de red de Windows debe acceder a los servicios de red, especialmente TCP/IP. Se llama Winsock porque es una adaptación de la interfaz del socket Berkeley UNIX a Windows. Un socket es un acuerdo especial que se utiliza para conectarse e intercambiar datos entre dos procesos de programa en la misma computadora o red.
Consejo: Si desea obtener más información sobre otros protocolos de Internet, se recomienda visitar el sitio web de MiniTool.
Winsock es la abreviatura de Windows Sockets API (WSA). Define la interfaz estándar entre las aplicaciones cliente TCP/IP de Windows (como clientes FTP o navegadores web) y la pila de protocolos TCP/IP básica.
Publicación relacionada: Utilice el comando de reinicio de Netsh Winsock para solucionar el problema de red de Windows 10
Antecedentes de Winsock
La API de Windows Sockets fue propuesta por Martin Hall de JSB Software (más tarde Stardust Technologies) en la discusión BoF (Bird of a Feather) en la red CompuServe BBS en octubre de 1991.
La primera versió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.
Hubo algunas discusiones sobre cómo resolver mejor los derechos de autor, la propiedad intelectual y posibles problemas antimonopolio, y se consideró el trabajo a través del IETF o el establecimiento de fundaciones sin fines de lucro. Al final, se decidió que los derechos de autor de la especificación sólo deberían pertenecer a cinco autores (no afiliados).
Todos los desarrolladores participantes se negaron a abreviar el nombre simplemente a Winsock durante mucho tiempo porque había mucha confusión entre la API y el archivo de la biblioteca DLL (winsock.dll), que solo exponía la interfaz WSA general a la aplicación que se encontraba encima. En general, se cree que sólo garantizar que el archivo DLL exista en el sistema puede proporcionar compatibilidad completa con el protocolo TCP/IP.
Tecnología de Winsock
La especificación API de Windows Socket define dos interfaces: API utilizada por los desarrolladores de aplicaciones y SPI que proporciona un método 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 las aplicaciones conformes puedan ejecutarse normalmente con la implementación del protocolo conforme de cualquier proveedor de software de red. El contrato SPI garantiza que se puedan agregar módulos de protocolo conformes a Windows para que puedan ser utilizados por aplicaciones compatibles con API.
Aunque estos contratos eran importantes cuando se lanzó Windows Sockets por primera vez, ahora sólo tienen importancia académica porque el entorno de red requiere soporte multiprotocolo. La versión 2.0 de Windows Sockets API incluye la función de utilizar IPX/SPX, aunque este protocolo estaba casi obsoleto cuando WSA 2.0 salió de fábrica.
El código y el diseño de Windows Sockets se basan en sockets BSD, pero se proporcionan características adicionales para permitir que la API se ajuste al modelo de programación convencional de Windows.
La API de Windows Sockets cubrió casi todas las características de la API de sockets BSD, pero existen algunos obstáculos inevitables, que fueron causados principalmente por las diferencias fundamentales entre Windows y Unix (aunque la diferencia entre Windows Sockets y BSD fue menor que la diferencia entre este último y STREAMS).
Sin embargo, el objetivo del diseño de los sockets de Windows era hacer que fuera relativamente fácil para los desarrolladores portar aplicaciones basadas en sockets de Unix a Windows. No fue suficiente crear API que solo fueran útiles para programas de Windows recién escritos.
Por lo tanto, Windows Sockets contenía muchos elementos diseñados para facilitar la portabilidad. Por ejemplo, las aplicaciones Unix podrían usar la misma variable errno para registrar errores de red y errores detectados en funciones de biblioteca C estándar.
Dado que no se puede implementar en Windows, Windows Sockets introdujo una función especial, WSAGetLastError(), para recuperar información de error. Un mecanismo de este tipo era muy útil, pero la portabilidad de aplicaciones seguía siendo extremadamente complicada.
Muchas aplicaciones TCP/IP primitivas se han implementado utilizando características del sistema específicas de Unix (como pseudo terminales y llamadas al sistema fork), y era problemático reproducir esta función en Windows. En un tiempo relativamente corto, la migración dio paso al desarrollo de aplicaciones dedicadas de Windows.
Implementaciones de Winsock
- Microsoft no proporcionó una implementación de Winsock 1.0.
- La versión 1.1 de Winsock se proporcionó en un paquete complementario (llamado Wolverine) para Windows para trabajo en grupo (nombre en código Snowball).
- Winsock versión 2.1 se proporcionó en un paquete complementario para Windows 95.
- La última versión de Winsock 2.x se proporciona con la nueva versión de Windows o como parte de un paquete de servicio.
- Winsock 2 se puede ampliar mediante un mecanismo llamado Proveedor de servicios en capas (LSP).