Winsock

Un article de Wikipédia, l'encyclopédie libre.

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 ...

Sommaire

[modifier] Historique

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.

[modifier] Technologie

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().

[modifier] Spécifications

  • Version 1.0 (Juin 1992)
  • Version 1.1 (Janvier 1993)
contient quelques corrections et rend plus clair certains passages. Le changement le plus important etait l'implémentation de la fonction gethostname().
  • Winsock 2 était une extension de Winsock 1.1. Il ajoutait entre autres
Il définissait aussi les spécifications pour différents protocoles : IPX/SPX de Novell Netware et DECNet. Cette nouvelle spécification permet à un socket d'être partagé entre plusieurs process. Elle permet aussi de créer des groupes de sockets.
  • Versions 2.0.x (Mai 1994)
  • Version 2.1.0 (Janvier 1996)
  • Version 2.2.0 (Mai 1996)
  • Version 2.2.1 (Mai 1997) and Version 2.2.2 (Août 1997)
  • En décembre 2000, dans Windows 2000, IPv6 était la première implémentation de RFC 2553 (de mars 1999, remplacé ensuite par RFC 3493), une API indépendante du protocole pour la résolution de noms, qui deviendra une partie de Winsock dans Windows XP.

[modifier] Implémentations

[modifier] Implémentations de Microsoft

  • Microsoft n'a pas implémenté Winsock 1.0.
  • Version 2 of Winsock était fournie comme un produit additionnel de Windows 95. Il était inclus dans Windows 98, Windows NT 4.0, et les versions suivantes de Windows.
  • Les versions récentes de Winsock 2.x ont été fournies avec de nouvelles versions de Windows ou font partie des packs de service.

[modifier] Autres implémentations

  • Par ordre alphabétique : 3Com, Beame & Whiteside, DEC, Distinct, FTP Software, Frontier, IBM, Novell, Microdyne, NetManage, Sun Microsystems et Trumpet Software International
    • Trumpet Winsock pouvait même être installé sur le très ancien Windows 3.0

[modifier] Source

Originellement adapté de : Aboba, Bernard D., comp.protocols.tcp-ip.ibmpc, FAQ, 1993. Usenet: news:news.answers. Merci pour http://www.foldoc.org.

[modifier] Références externes

[modifier] Microsoft

[modifier] Autres