Inleiding tot Winsock, inclusief achtergrond en technologie
Introduction Winsock Including Background Technology
Dit bericht gaat vooral over de Windows Sockets API, die kan worden ingekort tot WSA en Winsock. Na het lezen van dit bericht kent u de definitie, achtergrond, technologie en implementaties ervan.
Op deze pagina :Definitie voor Winsock
Wat is Winsock? In de computerwereld is Winsock een technische specificatie die wordt gebruikt om te definiëren hoe Windows-netwerksoftware toegang moet krijgen tot netwerkservices, met name TCP/IP. Het wordt Winsock genoemd omdat het een aanpassing is van de Berkeley UNIX-socketinterface voor Windows. Een socket is een speciale overeenkomst die wordt gebruikt om verbinding te maken met en gegevens uit te wisselen tussen twee programmaprocessen op dezelfde computer of hetzelfde netwerk.
Tip: Wilt u meer informatie over andere internetprotocollen, dan kunt u het beste naar de website van MiniTool gaan.
Winsock is de afkorting van de Windows Sockets API (WSA). Het definieert de standaardinterface tussen Windows TCP/IP-clienttoepassingen (zoals FTP-clients of webbrowsers) en de basis-TCP/IP-protocolstack.
Verwant bericht: Gebruik de Netsh Winsock Reset-opdracht om het Windows 10-netwerkprobleem op te lossen
Achtergrond van Winsock
De Windows Sockets API werd voorgesteld door Martin Hall van JSB Software (later Stardust Technologies) in de BoF-discussie (Bird of a Feather) op het CompuServe BBS-netwerk in oktober 1991.
De eerste versie van de specificatie is geschreven door Martin Hall, Mark Towfiq van Microdyne (later Sun Microsystems), Geoff Arnold van Sun Microsystems, en Henry Sanders en J Allard van Microsoft met de hulp van vele anderen.
Er waren enkele discussies over de beste manier om auteursrechten, intellectueel eigendom en mogelijke antitrustkwesties op te lossen, en over de overweging van werk via de IETF of de oprichting van stichtingen zonder winstoogmerk. Uiteindelijk werd besloten dat de specificatie slechts auteursrechtelijk beschermd mocht worden door vijf (niet-gelieerde) auteurs.
Alle deelnemende ontwikkelaars weigerden lange tijd de naam af te korten tot simpelweg Winsock, omdat er veel verwarring bestond tussen de API en het DLL-bibliotheekbestand (winsock.dll), dat alleen de algemene WSA-interface blootstelde aan de applicatie erboven. Algemeen wordt aangenomen dat alleen het garanderen dat het DLL-bestand op het systeem aanwezig is, volledige ondersteuning van het TCP/IP-protocol kan bieden.
Technologie van Winsock
De Windows Socket API-specificatie definieert twee interfaces: API die wordt gebruikt door applicatieontwikkelaars, en SPI die een methode biedt voor ontwikkelaars van netwerksoftware om nieuwe protocolmodules aan het systeem toe te voegen. Elke interface vertegenwoordigt een contract.
De API garandeert dat conforme applicaties normaal kunnen werken met de conforme protocolimplementatie van elke netwerksoftwareleverancier. Het SPI-contract garandeert dat conforme protocolmodules aan Windows kunnen worden toegevoegd, zodat ze kunnen worden gebruikt door API-compatibele applicaties.
Hoewel deze contracten belangrijk waren toen Windows Sockets voor het eerst werd uitgebracht, zijn ze nu alleen van academische betekenis omdat de netwerkomgeving ondersteuning van meerdere protocollen vereist. De Windows Sockets API versie 2.0 bevat de functie van het gebruik van IPX/SPX, hoewel dit protocol bijna achterhaald was toen WSA 2.0 de fabriek verliet.
De code en het ontwerp van Windows Sockets zijn gebaseerd op BSD-sockets, maar er zijn extra functies beschikbaar om de API te laten voldoen aan het conventionele Windows-programmeermodel.
De Windows Sockets API omvatte bijna alle functies van de BSD sockets API, maar er zijn enkele onvermijdelijke obstakels, die voornamelijk werden veroorzaakt door de fundamentele verschillen tussen Windows en Unix (hoewel het verschil tussen Windows Sockets en BSD sockets kleiner was dan het verschil tussen de laatste en STREAMS).
Het ontwerpdoel van Windows-sockets was echter om het voor ontwikkelaars relatief eenvoudig te maken om op sockets gebaseerde applicaties van Unix naar Windows te porten. Het was niet voldoende om API's te maken die alleen nuttig waren voor nieuw geschreven Windows-programma's.
Daarom bevatten Windows Sockets veel elementen die waren ontworpen om het porten te vergemakkelijken. Unix-applicaties kunnen bijvoorbeeld dezelfde errno-variabele gebruiken om netwerkfouten en fouten die zijn gedetecteerd in standaard C-bibliotheekfuncties te loggen.
Omdat het niet in Windows kan worden geïmplementeerd, hebben de Windows Sockets een speciale functie geïntroduceerd, WSAGetLastError(), om foutinformatie op te halen. Een dergelijk mechanisme was zeer nuttig, maar het porten van applicaties was nog steeds uiterst gecompliceerd.
Veel primitieve TCP/IP-toepassingen zijn geïmplementeerd met behulp van systeemfuncties die specifiek zijn voor Unix (zoals pseudo-terminals en fork-systeemaanroepen), en het was problematisch om deze functie in Windows te reproduceren. In relatief korte tijd maakte het porten plaats voor de ontwikkeling van speciale Windows-applicaties.
Implementaties van Winsock
- Microsoft heeft geen implementatie van Winsock 1.0 geleverd.
- Versie 1.1 van Winsock werd geleverd in een add-onpakket (genaamd Wolverine) voor Windows voor Workgroups (codenaam Snowball).
- Winsock versie 2.1 werd geleverd in een add-onpakket voor Windows 95.
- De nieuwste versie van Winsock 2.x wordt meegeleverd met de nieuwe Windows-versie of als onderdeel van een servicepack.
- Winsock 2 kan worden uitgebreid via een mechanisme genaamd Layered Service Provider (LSP).