Úvod do Winsock vrátane pozadia a technológie
Introduction Winsock Including Background Technology
Tento príspevok hovorí hlavne o Windows Sockets API, ktoré možno skrátiť na WSA a Winsock. Po prečítaní tohto príspevku môžete poznať jeho definíciu, pozadie, technológiu, ako aj implementácie.
Na tejto stránke:Definícia pre Winsock
Čo je to Winsock? V oblasti výpočtovej techniky je Winsock technickou špecifikáciou používanou na definovanie spôsobu, akým by mal sieťový softvér Windows pristupovať k sieťovým službám, najmä TCP/IP. Nazýva sa Winsock, pretože ide o prispôsobenie rozhrania soketu Berkeley UNIX pre Windows. Soket je špeciálna dohoda, ktorá sa používa na pripojenie a výmenu údajov medzi dvoma programovými procesmi na rovnakom počítači alebo sieti.
Tip: Ak sa chcete dozvedieť viac informácií o iných internetových protokoloch, odporúčame vám navštíviť webovú stránku MiniTool.
Winsock je skratka pre Windows Sockets API (WSA). Definuje štandardné rozhranie medzi klientskymi aplikáciami Windows TCP/IP (ako sú FTP klienti alebo webové prehliadače) a základným zásobníkom protokolov TCP/IP.
Súvisiaci príspevok: Na vyriešenie problému so sieťou systému Windows 10 použite príkaz Netsh Winsock Reset
Pozadie Winsock
Windows Sockets API navrhol Martin Hall z JSB Software (neskôr Stardust Technologies) v diskusii BoF (Bird of a Feather) o sieti CompuServe BBS v októbri 1991.
Prvú verziu špecifikácie napísali Martin Hall, Mark Towfiq z Microdyne (neskôr Sun Microsystems), Geoff Arnold zo Sun Microsystems a Henry Sanders a J Allard z Microsoftu s pomocou mnohých ďalších.
Prebehlo niekoľko diskusií o tom, ako čo najlepšie vyriešiť autorské práva, duševné vlastníctvo a potenciálne protimonopolné problémy, zváženie práce cez IETF alebo zakladanie neziskových nadácií. Nakoniec sa rozhodlo, že autorské práva na špecifikáciu by mali mať iba piati (nepridružení) autori.
Všetci zúčastnení vývojári dlho odmietli skrátiť názov na jednoducho Winsock, pretože medzi API a súborom knižnice DLL (winsock.dll) došlo k veľkému zmätku, čo odhalilo iba všeobecné rozhranie WSA pre aplikáciu nad ním. Vo všeobecnosti sa verí, že iba zabezpečenie existencie súboru DLL v systéme môže poskytnúť úplnú podporu protokolu TCP/IP.
Technológia Winsock
Špecifikácia Windows Socket API definuje dve rozhrania: API používané vývojármi aplikácií a SPI, ktoré poskytuje vývojárom sieťového softvéru metódu na pridávanie nových modulov protokolov do systému. Každé rozhranie predstavuje zmluvu.
Rozhranie API zaručuje, že vyhovujúce aplikácie môžu normálne bežať s implementáciou protokolu akéhokoľvek dodávateľa sieťového softvéru. Zmluva SPI zaručuje, že moduly vyhovujúceho protokolu je možné pridať do systému Windows, aby ich mohli používať aplikácie kompatibilné s rozhraním API.
Hoci tieto zmluvy boli dôležité pri prvom vydaní Windows Sockets, teraz majú len akademický význam, pretože sieťové prostredie vyžaduje podporu viacerých protokolov. Windows Sockets API verzie 2.0 obsahuje funkciu používania IPX/SPX, hoci tento protokol bol takmer zastaraný, keď WSA 2.0 opustil továreň.
Kód a dizajn Windows Sockets sú založené na soketoch BSD, ale poskytujú sa aj ďalšie funkcie, ktoré umožňujú API prispôsobiť sa konvenčnému programovaciemu modelu Windows.
Windows Sockets API takmer pokrývalo všetky funkcie BSD sockets API, existujú však určité nevyhnutné prekážky, ktoré boli spôsobené najmä zásadnými rozdielmi medzi Windows a Unix (hoci rozdiel medzi Windows Sockets a BSD socketmi bol menší ako rozdiel medzi posledne menované a STREAMY).
Cieľom dizajnu soketov Windows však bolo relatívne uľahčiť vývojárom portovanie aplikácií založených na soketoch z Unixu na Windows. Nestačilo vytvárať API, ktoré boli užitočné len pre novo napísané programy Windows.
Preto Windows Sockets obsahovali mnoho prvkov navrhnutých na uľahčenie prenosu. Napríklad unixové aplikácie môžu používať rovnakú premennú errno na zaznamenávanie sieťových chýb a chýb zistených v štandardných funkciách knižnice C.
Keďže to nemôže byť implementované v systéme Windows, Windows Sockets zaviedli špeciálnu funkciu WSAGetLastError() na získanie informácií o chybách. Takýto mechanizmus bol veľmi užitočný, ale portovanie aplikácií bolo stále mimoriadne komplikované.
Mnoho primitívnych aplikácií TCP/IP bolo implementovaných pomocou systémových funkcií špecifických pre Unix (ako sú pseudo terminály a vidlicové systémové volania) a bolo problematické reprodukovať túto funkciu vo Windows. V relatívne krátkom čase portovanie ustúpilo vývoju špecializovaných aplikácií pre Windows.
Implementácia Winsock
- Spoločnosť Microsoft neposkytla implementáciu Winsock 1.0.
- Verzia 1.1 Winsock bola poskytnutá v doplnkovom balíku (nazývanom Wolverine) pre Windows for Workgroups (kód s názvom Snowball).
- Winsock verzia 2.1 bola poskytnutá v doplnkovom balíku pre Windows 95.
- Najnovšia verzia Winsock 2.x bola poskytnutá s novou verziou systému Windows alebo ako súčasť balíka Service Pack.
- Winsock 2 je možné rozšíriť prostredníctvom mechanizmu nazývaného Layered Service Provider (LSP).