Introduksjon til Winsock, inkludert bakgrunn og teknologi
Introduction Winsock Including Background Technology
Dette innlegget snakker hovedsakelig om Windows Sockets API, som kan forkortes til WSA og Winsock. Etter å ha lest dette innlegget, kan du kjenne dens definisjon, bakgrunn, teknologi, samt implementeringer.
På denne siden :Definisjon til Winsock
Hva er Winsock? I databehandling er Winsock en teknisk spesifikasjon som brukes til å definere hvordan Windows-nettverksprogramvare skal få tilgang til nettverkstjenester, spesielt TCP/IP. Det kalles Winsock fordi det er en tilpasning av Berkeley UNIX socket-grensesnittet til Windows. En socket er en spesiell avtale som brukes til å koble til og utveksle data mellom to programprosesser på samme datamaskin eller nettverk.
Winsock er forkortelsen for Windows Sockets API (WSA). Den definerer standardgrensesnittet mellom Windows TCP/IP-klientapplikasjoner (som FTP-klienter eller nettlesere) og den grunnleggende TCP/IP-protokollstabelen.
Relatert innlegg: Bruk Netsh Winsock Reset Command for å fikse nettverksproblem i Windows 10
Bakgrunnen til Winsock
Windows Sockets API ble foreslått av Martin Hall fra JSB Software (senere Stardust Technologies) i BoF (Bird of a Feather)-diskusjonen om CompuServe BBS-nettverket i oktober 1991.
Den første versjonen av spesifikasjonen ble skrevet av Martin Hall, Mark Towfiq fra Microdyne (senere Sun Microsystems), Geoff Arnold fra Sun Microsystems, og Henry Sanders og J Allard fra Microsoft med hjelp av mange andre.
Det var noen diskusjoner om hvordan man best kan løse opphavsrett, åndsverk og potensielle antitrustproblemer, og vurdering av arbeid gjennom IETF eller etablering av ideelle stiftelser. Til slutt ble det bestemt at spesifikasjonen kun skulle være opphavsrettslig beskyttet av fem (ikke-tilknyttede) forfattere.
Alle deltakende utviklere nektet å forkorte navnet til ganske enkelt Winsock i lang tid fordi det var mye forvirring mellom API og DLL-biblioteksfilen (winsock.dll), som bare eksponerte det generelle WSA-grensesnittet for applikasjonen over den. Det er generelt antatt at bare å sikre at DLL-filen finnes på systemet kan gi fullstendig støtte for TCP/IP-protokollen.
Teknologien til Winsock
Windows Socket API-spesifikasjonen definerer to grensesnitt: API brukt av applikasjonsutviklere, og SPI som gir en metode for nettverksprogramvareutviklere for å legge til nye protokollmoduler til systemet. Hvert grensesnitt representerer en kontrakt.
API-en garanterer at samsvarende applikasjoner kan kjøres normalt med hvilken som helst nettverksprogramvareleverandørs samsvarende protokollimplementering. SPI-kontrakten garanterer at samsvarende protokollmoduler kan legges til Windows slik at de kan brukes av API-kompatible applikasjoner.
Selv om disse kontraktene var viktige da Windows Sockets først ble utgitt, er de bare av akademisk betydning nå fordi nettverksmiljøet krever støtte for flere protokoller. Windows Sockets API versjon 2.0 inkluderer funksjonen til å bruke IPX/SPX, selv om denne protokollen var nesten foreldet da WSA 2.0 forlot fabrikken.
Windows Sockets-koden og designen er basert på BSD-sockets, men tilleggsfunksjoner er gitt for å tillate API-en å samsvare med den konvensjonelle Windows-programmeringsmodellen.
Windows Sockets API dekket nesten alle funksjonene til BSD-sockets API, men det er noen uunngåelige hindringer, som hovedsakelig var forårsaket av de grunnleggende forskjellene mellom Windows og Unix (selv om forskjellen mellom Windows Sockets og BSD-sockets var mindre enn forskjellen mellom sistnevnte og STREAMS).
Designmålet med Windows-sockets var imidlertid å gjøre det relativt enkelt for utviklere å portere socket-baserte applikasjoner fra Unix til Windows. Det var ikke nok å lage APIer som kun var nyttige for nyskrevne Windows-programmer.
Derfor inneholdt Windows Sockets mange elementer designet for å lette portering. Unix-applikasjoner kan for eksempel bruke den samme errno-variabelen for å logge nettverksfeil og feil oppdaget i standard C-biblioteksfunksjoner.
Siden det ikke kan implementeres i Windows, introduserte Windows Sockets en spesiell funksjon, WSAGetLastError(), for å hente feilinformasjon. En slik mekanisme var veldig nyttig, men applikasjonsporting var fortsatt ekstremt komplisert.
Mange primitive TCP/IP-applikasjoner har blitt implementert ved å bruke systemfunksjoner som er spesifikke for Unix (som pseudoterminaler og gaffelsystemanrop), og det var problematisk å reprodusere denne funksjonen i Windows. På relativt kort tid ga portering plass til utviklingen av dedikerte Windows-applikasjoner.
Implementeringer av Winsock
- Microsoft ga ikke en implementering av Winsock 1.0.
- Versjon 1.1 av Winsock ble levert i en tilleggspakke (kalt Wolverine) for Windows for Workgroups (kode kalt Snowball).
- Winsock versjon 2.1 ble levert i en tilleggspakke for Windows 95.
- Den siste versjonen av Winsock 2.x har blitt levert med den nye Windows-versjonen eller som en del av en oppdateringspakke.
- Winsock 2 kan utvides gjennom en mekanisme kalt Layered Service Provider (LSP).