Bevezetés a Winsockba, beleértve a hátteret és a technológiát
Introduction Winsock Including Background Technology
Ez a bejegyzés elsősorban a Windows Sockets API-ról szól, amely WSA-ra és Winsock-ra rövidíthető. A bejegyzés elolvasása után megismerheti annak meghatározását, hátterét, technológiáját és megvalósításait.
Ezen az oldalon :Winsock definíciója
Mi az a Winsock? A számítástechnikában a Winsock egy műszaki specifikáció, amely annak meghatározására szolgál, hogy a Windows hálózati szoftvereknek miként kell hozzáférniük a hálózati szolgáltatásokhoz, különösen a TCP/IP-hez. Azért hívják Winsocknak, mert a Berkeley UNIX socket interfész adaptációja a Windows rendszerre. A socket egy speciális megállapodás, amely ugyanazon a számítógépen vagy hálózaton két programfolyamathoz való csatlakozásra és adatcserére szolgál.
Tipp: Ha további információkat szeretne megtudni más internetes protokollokról, akkor javasoljuk, hogy látogasson el a MiniTool webhelyére.
A Winsock a Windows Sockets API (WSA) rövidítése. Meghatározza a szabványos interfészt a Windows TCP/IP kliens alkalmazások (például FTP kliensek vagy webböngészők) és az alapvető TCP/IP protokoll verem között.
Kapcsolódó bejegyzés: Használja a Netsh Winsock Reset parancsot a Windows 10 hálózati probléma megoldásához
Háttér Winsock
A Windows Sockets API-t Martin Hall, a JSB Software-től (később Stardust Technologies) javasolta a BoF (Bird of a Feather) megbeszélésen a CompuServe BBS hálózatról 1991 októberében.
A specifikáció első változatát Martin Hall, Mark Towfiq a Microdyne-től (a későbbi Sun Microsystems-től), Geoff Arnold a Sun Microsystems-től, valamint Henry Sanders és J Allard a Microsofttól írta meg sokak segítségével.
Volt néhány megbeszélés arról, hogyan lehetne a legjobban megoldani a szerzői joggal, a szellemi tulajdonnal és a potenciális trösztellenes problémákkal kapcsolatos kérdéseket, és megvitatták az IETF-en keresztüli munkát vagy non-profit alapítványok létrehozását. Végül úgy döntöttek, hogy a specifikációt csak öt (nem kapcsolódó) szerző védi.
Az összes résztvevő fejlesztő hosszú ideig nem volt hajlandó a nevet egyszerűen Winsock-ra rövidíteni, mert nagy volt a zűrzavar az API és a DLL könyvtárfájl (winsock.dll) között, ami csak az általános WSA felületet tette elérhetővé a felette lévő alkalmazás számára. Általában úgy gondolják, hogy csak annak biztosítása, hogy a DLL fájl létezik a rendszeren, biztosítható a teljes TCP/IP protokoll támogatása.
Winsock technológiája
A Windows Socket API specifikációja két interfészt határoz meg: az alkalmazásfejlesztők által használt API-t és az SPI-t, amely módszert biztosít a hálózati szoftverfejlesztők számára, hogy új protokollmodulokat adjanak a rendszerhez. Minden interfész egy szerződést jelent.
Az API garantálja, hogy a megfelelő alkalmazások normálisan futhatnak bármely hálózati szoftvergyártó megfelelő protokoll-megvalósításával. Az SPI-szerződés garantálja, hogy megfelelő protokollmodulok adhatók hozzá a Windowshoz, így azokat API-kompatibilis alkalmazások használhatják.
Bár ezek a szerződések fontosak voltak a Windows Sockets első kiadásakor, mára már csak tudományos jelentőséggel bírnak, mivel a hálózati környezet több protokollos támogatást igényel. A Windows Sockets API 2.0-s verziója tartalmazza az IPX/SPX használatának funkcióját, bár ez a protokoll szinte elavult volt, amikor a WSA 2.0 elhagyta a gyárat.
A Windows Sockets kódja és kialakítása a BSD socketeken alapul, de további szolgáltatások is rendelkezésre állnak, amelyek lehetővé teszik, hogy az API megfeleljen a hagyományos Windows programozási modellnek.
A Windows Sockets API szinte lefedte a BSD socket API összes funkcióját, de vannak elkerülhetetlen akadályok, amelyeket elsősorban a Windows és a Unix közötti alapvető különbségek okoztak (bár a Windows Sockets és a BSD socket közötti különbség kisebb volt, mint a utóbbi és PARATOK).
A Windows socketek tervezési célja azonban az volt, hogy a fejlesztők számára viszonylag egyszerűvé tegyék a socket alapú alkalmazások Unixról Windowsra történő portolását. Nem volt elég olyan API-kat létrehozni, amelyek csak az újonnan írt Windows-programokhoz voltak hasznosak.
Ezért a Windows Sockets sok olyan elemet tartalmazott, amelyek megkönnyítik a portolást. Például a Unix alkalmazások ugyanazt az errno változót használhatják a hálózati hibák és a szabványos C könyvtári funkciókban észlelt hibák naplózására.
Mivel nem implementálható a Windows rendszerben, a Windows Sockets bevezetett egy speciális funkciót, a WSAGetLastError() a hibainformációk lekérésére. Egy ilyen mechanizmus nagyon hasznos volt, de az alkalmazások portolása így is rendkívül bonyolult volt.
Sok primitív TCP/IP-alkalmazást Unix-specifikus rendszerszolgáltatások (például pszeudoterminálok és fork rendszerhívások) használatával valósítottak meg, és problémás volt ezt a funkciót reprodukálni a Windowsban. A portolás viszonylag rövid időn belül átadta helyét a dedikált Windows alkalmazások fejlesztésének.
A Winsock megvalósításai
- A Microsoft nem biztosította a Winsock 1.0 megvalósítását.
- A Winsock 1.1-es verziója egy kiegészítő csomagban (Wolverine néven) volt elérhető a Windows for Workgroups számára (kód neve Snowball).
- A Winsock 2.1-es verziója a Windows 95 rendszerhez készült kiegészítő csomagban volt elérhető.
- A Winsock 2.x legújabb verziója az új Windows verzióval vagy egy szervizcsomag részeként került forgalomba.
- A Winsock 2 kiterjeszthető a Layered Service Provider (LSP) nevű mechanizmuson keresztül.