Introducció a Winsock, incloent antecedents i tecnologia
Introduction Winsock Including Background Technology
Aquesta publicació parla principalment de l'API de Windows Sockets, que es pot escurçar a WSA i Winsock. Després de llegir aquest post, podeu conèixer la seva definició, antecedents, tecnologia, així com implementacions.
En aquesta pàgina:Definició de Winsock
Què és Winsock? En informàtica, Winsock és una especificació tècnica que s'utilitza per definir com el programari de xarxa de Windows ha d'accedir als serveis de xarxa, especialment TCP/IP. Es diu Winsock perquè és una adaptació de la interfície de socket Berkeley UNIX a Windows. Un sòcol és un acord especial que s'utilitza per connectar i intercanviar dades entre dos processos de programa en el mateix ordinador o xarxa.
Winsock és l'abreviatura de l'API de Windows Sockets (WSA). Defineix la interfície estàndard entre les aplicacions de client TCP/IP de Windows (com ara clients FTP o navegadors web) i la pila bàsica de protocols TCP/IP.
Publicació relacionada: Utilitzeu l'ordre de restabliment de Netsh Winsock per solucionar el problema de xarxa de Windows 10
Fons de Winsock
L'API de Windows Sockets va ser proposada per Martin Hall de JSB Software (més tard Stardust Technologies) a la discussió BoF (Bird of a Feather) a la xarxa CompuServe BBS l'octubre de 1991.
La primera versió de l'especificació va ser escrita per Martin Hall, Mark Towfiq de Microdyne (més tard Sun Microsystems), Geoff Arnold de Sun Microsystems i Henry Sanders i J Allard de Microsoft amb l'ajuda de molts altres.
Hi va haver algunes discussions sobre com resoldre millor els drets d'autor, la propietat intel·lectual i els possibles problemes antimonopoli, i la consideració del treball a través de l'IETF o l'establiment de fundacions sense ànim de lucre. Al final, es va decidir que l'especificació només hauria de tenir els drets d'autor de cinc autors (no afiliats).
Tots els desenvolupadors participants es van negar a abreujar el nom simplement a Winsock durant molt de temps perquè hi havia molta confusió entre l'API i el fitxer de la biblioteca DLL (winsock.dll), que només exposava la interfície WSA general a l'aplicació que hi havia a sobre. En general, es creu que només assegurar-se que el fitxer DLL existeix al sistema pot proporcionar un suport complet del protocol TCP/IP.
Tecnologia de Winsock
L'especificació de l'API de Windows Socket defineix dues interfícies: l'API utilitzada pels desenvolupadors d'aplicacions i l'SPI que proporciona un mètode perquè els desenvolupadors de programari de xarxa afegeixin nous mòduls de protocol al sistema. Cada interfície representa un contracte.
L'API garanteix que les aplicacions conformes es poden executar amb normalitat amb la implementació del protocol conforme de qualsevol proveïdor de programari de xarxa. El contracte SPI garanteix que es poden afegir mòduls de protocol conformes a Windows perquè puguin ser utilitzats per aplicacions compatibles amb API.
Tot i que aquests contractes eren importants quan es va llançar Windows Sockets, ara només tenen una importància acadèmica perquè l'entorn de xarxa requereix suport multiprotocol. La versió 2.0 de l'API de Windows Sockets inclou la funció d'utilitzar IPX/SPX, tot i que aquest protocol estava gairebé obsolet quan WSA 2.0 va sortir de fàbrica.
El codi i el disseny de Windows Sockets es basen en sockets BSD, però es proporcionen funcions addicionals per permetre que l'API s'ajusti al model de programació convencional de Windows.
L'API de Windows Sockets gairebé cobria totes les característiques de l'API de sockets BSD, però hi ha alguns obstacles inevitables, que van ser causats principalment per les diferències fonamentals entre Windows i Unix (tot i que la diferència entre Windows Sockets i els sòcols BSD era menor que la diferència entre aquest últim i STREMS).
Tanmateix, l'objectiu de disseny dels sòcols de Windows era facilitar relativament als desenvolupadors el port d'aplicacions basades en sockets d'Unix a Windows. No n'hi havia prou amb crear API que només fossin útils per als programes de Windows que s'havien escrit recentment.
Per tant, Windows Sockets contenia molts elements dissenyats per facilitar la portabilitat. Per exemple, les aplicacions Unix podrien utilitzar la mateixa variable errno per registrar errors de xarxa i errors detectats a les funcions estàndard de la biblioteca C.
Com que no es pot implementar a Windows, els Windows Sockets van introduir una funció especial, WSAGetLastError(), per recuperar informació d'error. Aquest mecanisme era molt útil, però la portabilitat d'aplicacions encara era extremadament complicat.
Moltes aplicacions TCP/IP primitives s'han implementat utilitzant característiques del sistema específiques d'Unix (com ara pseudoterminals i trucades al sistema de bifurcació), i era problemàtic reproduir aquesta funció a Windows. En relativament poc temps, la portabilitat va donar pas al desenvolupament d'aplicacions dedicades a Windows.
Implementacions de Winsock
- Microsoft no va proporcionar una implementació de Winsock 1.0.
- La versió 1.1 de Winsock es va proporcionar en un paquet de complements (anomenat Wolverine) per a Windows per a grups de treball (anomenat en codi Snowball).
- La versió 2.1 de Winsock es va proporcionar en un paquet de complements per a Windows 95.
- La darrera versió de Winsock 2.x s'ha proporcionat amb la nova versió de Windows o com a part d'un paquet de servei.
- Winsock 2 es pot estendre mitjançant un mecanisme anomenat Proveïdor de serveis en capes (LSP).