„Winsock“ įvadas, įskaitant foną ir technologijas
Introduction Winsock Including Background Technology
Šiame įraše daugiausia kalbama apie „Windows Sockets“ API, kurią galima sutrumpinti iki WSA ir Winsock. Perskaitę šį įrašą, galite sužinoti jo apibrėžimą, pagrindą, technologijas ir įgyvendinimus.
Šiame puslapyje:„Winsock“ apibrėžimas
Kas yra Winsock? Skaičiuojant „Winsock“ yra techninė specifikacija, naudojama apibrėžti, kaip „Windows“ tinklo programinė įranga turėtų pasiekti tinklo paslaugas, ypač TCP / IP. Jis vadinamas Winsock, nes tai yra Berkeley UNIX lizdo sąsajos pritaikymas Windows. Lizdas yra specialus susitarimas, naudojamas prisijungti ir keistis duomenimis tarp dviejų programos procesų tame pačiame kompiuteryje ar tinkle.
„Winsock“ yra „Windows Sockets API“ (WSA) santrumpa. Jis apibrėžia standartinę sąsają tarp Windows TCP/IP kliento taikomųjų programų (tokių kaip FTP klientai arba žiniatinklio naršyklės) ir pagrindinio TCP/IP protokolo krūvos.
Susijęs įrašas: Naudokite „Netsh Winsock Reset“ komandą, kad išspręstumėte „Windows 10“ tinklo problemą
Winsock fonas
Windows Sockets API pasiūlė Martin Hall iš JSB Software (vėliau Stardust Technologies) BoF (Bird of a Feather) diskusijoje apie CompuServe BBS tinklą 1991 m. spalį.
Pirmąją specifikacijos versiją, padedami daugelio kitų, parašė Martin Hall, Mark Towfiq iš Microdyne (vėliau Sun Microsystems), Geoffas Arnoldas iš Sun Microsystems ir Henry Sandersas bei J Allardas iš Microsoft.
Buvo diskutuojama, kaip geriausiai išspręsti autorių teisių, intelektinės nuosavybės ir galimas antimonopolines problemas, taip pat buvo svarstoma galimybė dirbti per IETF arba steigti ne pelno fondus. Galiausiai buvo nuspręsta, kad specifikacijos autorių teisės turėtų būti saugomos tik penkių (nesusijusių) autorių.
Visi dalyvaujantys kūrėjai ilgą laiką atsisakė sutrumpinti pavadinimą į tiesiog Winsock, nes buvo daug painiavos tarp API ir DLL bibliotekos failo (winsock.dll), kuris virš jo esančiai programai atskleidė tik bendrąją WSA sąsają. Paprastai manoma, kad tik užtikrinus, kad sistemoje yra DLL failas, galima užtikrinti visišką TCP/IP protokolo palaikymą.
Winsock technologija
„Windows Socket“ API specifikacija apibrėžia dvi sąsajas: API, kurią naudoja programų kūrėjai, ir SPI, kuri suteikia tinklo programinės įrangos kūrėjams būdą pridėti prie sistemos naujų protokolų modulių. Kiekviena sąsaja reiškia sutartį.
API garantuoja, kad atitinkančios programos gali normaliai veikti su bet kurio tinklo programinės įrangos pardavėjo atitinkamu protokolu. SPI sutartis garantuoja, kad atitinkamus protokolo modulius galima pridėti prie Windows, kad juos būtų galima naudoti su API suderinamose programose.
Nors šios sutartys buvo svarbios pirmą kartą išleidžiant „Windows Sockets“, dabar jos turi tik akademinę reikšmę, nes tinklo aplinkai reikalingas kelių protokolų palaikymas. Windows Sockets API 2.0 versija apima IPX/SPX naudojimo funkciją, nors šis protokolas buvo beveik pasenęs, kai WSA 2.0 paliko gamyklą.
„Windows Sockets“ kodas ir dizainas yra pagrįsti BSD lizdais, tačiau suteikiamos papildomos funkcijos, leidžiančios API atitikti įprastą „Windows“ programavimo modelį.
„Windows Sockets“ API beveik apėmė visas BSD lizdų API funkcijas, tačiau yra keletas neišvengiamų kliūčių, kurias daugiausia lėmė esminiai „Windows“ ir „Unix“ skirtumai (nors skirtumas tarp „Windows Sockets“ ir „BSD“ lizdų buvo mažesnis nei pastarasis ir STREAMS).
Tačiau „Windows“ lizdų dizaino tikslas buvo sudaryti sąlygas kūrėjams palyginti lengvai perjungti lizdais pagrįstas programas iš „Unix“ į „Windows“. Nepakako sukurti API, kurios buvo naudingos tik naujai parašytoms „Windows“ programoms.
Todėl „Windows Sockets“ turėjo daug elementų, skirtų palengvinti perkėlimą. Pavyzdžiui, Unix programos gali naudoti tą patį errno kintamąjį tinklo klaidoms ir klaidoms, aptiktoms standartinėse C bibliotekos funkcijose, registruoti.
Kadangi jos negalima įdiegti sistemoje „Windows“, „Windows Sockets“ įdiegė specialią funkciją WSAGetLastError(), kad gautų informaciją apie klaidą. Toks mechanizmas buvo labai naudingas, tačiau programų perkėlimas vis tiek buvo labai sudėtingas.
Daugelis primityvių TCP/IP programų buvo įdiegtos naudojant Unix būdingas sistemos funkcijas (pvz., pseudo terminalus ir šakutės sistemos iškvietimus), todėl buvo sunku atkurti šią funkciją sistemoje Windows. Per gana trumpą laiką perkėlimas užleido vietą tam skirtų „Windows“ programų kūrimui.
„Winsock“ įgyvendinimai
- „Microsoft“ nepateikė „Winsock 1.0“ diegimo.
- „Winsock“ 1.1 versija buvo pateikta priedo pakete (vadinamu „Wolverine“), skirtame „Windows“ darbo grupėms (kodas pavadinimu „Snowball“).
- „Winsock“ 2.1 versija buvo pateikta „Windows 95“ priedo pakete.
- Naujausia Winsock 2.x versija buvo pateikta kartu su nauja Windows versija arba kaip pakeitimų paketo dalis.
- „Winsock 2“ gali būti išplėstas naudojant mechanizmą, vadinamą Layered Service Provider (LSP).