Uvod u Winsock uključujući pozadinu i tehnologiju
Introduction Winsock Including Background Technology
Ovaj post uglavnom govori o Windows Sockets API-ju, koji se može skratiti na WSA i Winsock. Nakon što pročitate ovaj post, možete znati njegovu definiciju, pozadinu, tehnologiju, kao i implementacije.
Na ovoj stranici:Definicija za Winsock
Što je Winsock? U računalstvu, Winsock je tehnička specifikacija koja se koristi za definiranje načina na koji Windows mrežni softver treba pristupati mrežnim uslugama, posebno TCP/IP. Zove se Winsock jer je adaptacija Berkeley UNIX socket sučelja za Windows. Socket je poseban sporazum koji se koristi za povezivanje i razmjenu podataka između dva programska procesa na istom računalu ili mreži.
Winsock je skraćenica od Windows Sockets API (WSA). Definira standardno sučelje između Windows TCP/IP klijentskih aplikacija (kao što su FTP klijenti ili web preglednici) i osnovnog skupa TCP/IP protokola.
Povezani post: Upotrijebite naredbu Netsh Winsock Reset za rješavanje problema s mrežom Windows 10
Pozadina Winsocka
Windows Sockets API je predložio Martin Hall iz JSB Software (kasnije Stardust Technologies) u BoF (Bird of a Feather) raspravi na CompuServe BBS mreži u listopadu 1991.
Prvu verziju specifikacije napisali su Martin Hall, Mark Towfiq iz Microdynea (kasnije Sun Microsystems), Geoff Arnold iz Sun Microsystemsa te Henry Sanders i J Allard iz Microsofta uz pomoć mnogih drugih.
Bilo je nekih rasprava o tome kako najbolje riješiti autorska prava, intelektualno vlasništvo i potencijalna antimonopolska pitanja, te razmatranje rada kroz IETF ili osnivanje neprofitnih zaklada. Na kraju je odlučeno da specifikacija bude zaštićena autorskim pravima samo od pet (nepovezanih) autora.
Svi programeri koji su sudjelovali odbijali su skraćivati naziv na jednostavno Winsock dugo vremena jer je bilo dosta zabune između API-ja i datoteke DLL biblioteke (winsock.dll), koja je samo izlagala opće WSA sučelje aplikaciji iznad njega. Općenito se vjeruje da samo osiguravanje da DLL datoteka postoji na sustavu može pružiti potpunu podršku za TCP/IP protokol.
Winsock tehnologija
Windows Socket API specifikacija definira dva sučelja: API koji koriste programeri aplikacija i SPI koji pruža metodu za programere mrežnog softvera za dodavanje novih modula protokola u sustav. Svako sučelje predstavlja ugovor.
API jamči da se usklađene aplikacije mogu normalno izvoditi s implementacijom usklađenog protokola bilo kojeg dobavljača mrežnog softvera. SPI ugovor jamči da se usklađeni moduli protokola mogu dodati u Windows tako da ih mogu koristiti aplikacije kompatibilne s API-jem.
Iako su ti ugovori bili važni kada su Windows Sockets prvi put objavljeni, sada su samo od akademskog značaja jer mrežno okruženje zahtijeva podršku za više protokola. Windows Sockets API verzija 2.0 uključuje funkciju korištenja IPX/SPX, iako je ovaj protokol bio gotovo zastario kada je WSA 2.0 izašao iz tvornice.
Kod i dizajn Windows utičnica temelje se na BSD utičnicama, ali su osigurane dodatne značajke koje omogućuju prilagođavanje API-ja konvencionalnom modelu Windows programiranja.
Windows Sockets API gotovo je pokrio sve značajke BSD sockets API-ja, ali postoje neke neizbježne prepreke, koje su uglavnom uzrokovane temeljnim razlikama između Windowsa i Unixa (iako je razlika između Windows Socketa i BSD soketa manja od razlike između potonji i POTOCI).
Međutim, cilj dizajna Windows utičnica bio je omogućiti programerima relativno jednostavno prenošenje aplikacija temeljenih na utičnicama s Unixa na Windows. Nije bilo dovoljno stvoriti API-je koji su bili korisni samo za novonapisane Windows programe.
Stoga su Windows Sockets sadržavali mnoge elemente dizajnirane za olakšavanje prijenosa. Na primjer, Unix aplikacije mogu koristiti istu varijablu errno za bilježenje mrežnih grešaka i grešaka otkrivenih u standardnim funkcijama C knjižnice.
Budući da se ne može implementirati u sustavu Windows, Windows Sockets je uveo posebnu funkciju, WSAGetLastError(), za dohvaćanje informacija o pogrešci. Takav je mehanizam bio od velike pomoći, ali je prijenos aplikacija i dalje bio iznimno kompliciran.
Mnoge primitivne TCP/IP aplikacije implementirane su korištenjem značajki sustava specifičnih za Unix (kao što su pseudo terminali i fork sistemski pozivi), a bilo je problematično reproducirati ovu funkciju u Windowsima. U relativno kratkom vremenu portiranje je ustupilo mjesto razvoju namjenskih Windows aplikacija.
Implementacije Winsocka
- Microsoft nije osigurao implementaciju Winsocka 1.0.
- Verzija 1.1 Winsocka bila je isporučena u dodatnom paketu (nazvanom Wolverine) za Windows za radne grupe (kodni naziv Snowball).
- Winsock verzija 2.1 isporučena je u paketu dodataka za Windows 95.
- Najnovija verzija Winsocka 2.x isporučena je s novom verzijom sustava Windows ili kao dio servisnog paketa.
- Winsock 2 može se proširiti putem mehanizma koji se zove Layered Service Provider (LSP).