Winsock (WINdows SOCKet) est une bibliothèque dynamique de fonctions DLL sous Windows dont le but est d'implémenter TCP/IP. Elle prend notamment en charge l'envoi et la réception des paquets de données via des socket BSD.
Les applications qui utilisent Winsock sont nombreuses : navigateurs, gestionnaire de courrier électronique, Apache ...
Dans les anciennes versions de système d'exploitation de Microsoft (i.e. MS-DOS avec l'interface graphique Windows 3.x), il n'y avait que des fonctionnalités réseau limitées, basées sur NetBIOS (une technologie provenant à l'origine d'IBM). En particulier, Microsoft ignora complètement la pile de protocoles TCP/IP. Des universités et des sociétés commerciales ont créé des produits TCP/IP pour MS/DOS, ces organismes sont notamment MIT, FTP Software, Sun Microsystems, Ungermann-Bass et Excelan.
Le problème était que chaque implémentation de TCP/IP hors Microsoft avait sa propre API. L'US Air Force a développé RFC 1001/1002, une implémentation NetBIOS sur la couche transport TCP/UDP. La société FTP Software avait de son côté fait elle aussi une tentative de standardisation dans ce domaine.
Winsock a été proposé par Martin Hall de la société JSB Software (devenu par la suite Stardust Technologies) en octobre 1991. La première édition de cette spécification a été écrite par Martin Hall, Mark Towfiq de la société Microdyne (devenu par la suite Sun Microsystems), Geoff Arnold de Sun Microsystems, et Henry Sanders de Microsoft.
La spécification initiale de Winsock définit deux interfaces: l'API et le SPI (Service Provider Interface).
Winsock est basé sur les sockets BSD, mais fournit des fonctions additionnelles pour être conforme au modèle de programmation Windows, par exemple la fonction WSAGetLastError().
Originellement adapté de : Aboba, Bernard D., comp.protocols.tcp-ip.ibmpc, FAQ, 1993. Usenet: news:news.answers. Merci pour http://www.foldoc.org.