Johdatus Winsockiin, mukaan lukien tausta ja tekniikka
Introduction Winsock Including Background Technology
Tämä viesti käsittelee pääasiassa Windows Sockets API:ta, joka voidaan lyhentää WSA:ksi ja Winsockiksi. Kun olet lukenut tämän viestin, voit tietää sen määritelmän, taustan, tekniikan sekä toteutukset.
Tällä sivulla :Määritelmä Winsockille
Mikä on Winsock? Tietojenkäsittelyssä Winsock on tekninen määritys, jota käytetään määrittämään, kuinka Windows-verkkoohjelmiston tulee käyttää verkkopalveluja, erityisesti TCP /IP:tä. Sitä kutsutaan Winsockiksi, koska se on Berkeley UNIX -socket-käyttöliittymän sovitus Windowsille. Socket on erityinen sopimus, jota käytetään yhdistämään ja vaihtamaan tietoja kahden ohjelmaprosessin välillä samassa tietokoneessa tai verkossa.
Kärki: Jos haluat tietää lisää muista Internet-protokollista, on suositeltavaa mennä MiniTool-verkkosivustolle.
Winsock on lyhenne sanoista Windows Sockets API (WSA). Se määrittää vakiorajapinnan Windowsin TCP/IP-asiakassovellusten (kuten FTP-asiakkaiden tai Web-selainten) ja TCP/IP-perusprotokollapinon välillä.
Liittyvä postaus: Käytä Netsh Winsock Reset -komentoa korjataksesi Windows 10 -verkkoongelman
Winsockin tausta
Windows Sockets API -sovellusta ehdotti Martin Hall JSB Softwaresta (myöhemmin Stardust Technologies) BoF (Bird of a Feather) -keskustelussa CompuServe BBS -verkosta lokakuussa 1991.
Ensimmäisen version spesifikaatiosta kirjoittivat Martin Hall, Mark Towfiq Microdynesta (myöhemmin Sun Microsystems), Geoff Arnold Sun Microsystemsistä sekä Henry Sanders ja J Allard Microsoftista monien muiden avulla.
Keskusteltiin siitä, kuinka parhaiten ratkaista tekijänoikeus-, immateriaalioikeudet ja mahdolliset kilpailunrajoitukset, sekä IETF:n kautta tehtävää työtä tai voittoa tavoittelemattomien säätiöiden perustamista. Lopulta päätettiin, että eritelmän tekijänoikeudet saavat olla vain viidellä (liittymättömällä) tekijällä.
Kaikki osallistuvat kehittäjät kieltäytyivät lyhentämästä nimeä yksinkertaisesti Winsockiksi pitkään, koska API:n ja DLL-kirjastotiedoston (winsock.dll) välillä oli paljon sekaannusta, mikä paljasti vain yleisen WSA-rajapinnan sen yläpuolella olevalle sovellukselle. Yleisesti uskotaan, että vain sen varmistaminen, että DLL-tiedosto on olemassa järjestelmässä, voi tarjota täydellisen TCP/IP-protokollan tuen.
Winsockin tekniikka
Windows Socket API -spesifikaatio määrittelee kaksi käyttöliittymää: sovelluskehittäjien käyttämä API ja SPI, joka tarjoaa verkkoohjelmistojen kehittäjille menetelmän lisätä uusia protokollamoduuleja järjestelmään. Jokainen käyttöliittymä edustaa sopimusta.
API takaa, että yhteensopivat sovellukset voivat toimia normaalisti minkä tahansa verkkoohjelmistotoimittajan mukaisen protokollatoteutuksen kanssa. SPI-sopimus takaa, että Windowsiin voidaan lisätä vastaavia protokollamoduuleja, jotta niitä voidaan käyttää API-yhteensopivissa sovelluksissa.
Vaikka nämä sopimukset olivat tärkeitä, kun Windows Sockets julkaistiin ensimmäisen kerran, niillä on nyt vain akateeminen merkitys, koska verkkoympäristö vaatii usean protokollan tukea. Windows Sockets API -versio 2.0 sisältää IPX/SPX-käyttötoiminnon, vaikka tämä protokolla oli melkein vanhentunut, kun WSA 2.0 lähti tehtaalta.
Windows Sockets -koodi ja suunnittelu perustuvat BSD-kantoihin, mutta lisäominaisuuksia tarjotaan, jotta API voi mukautua perinteiseen Windows-ohjelmointimalliin.
Windows Sockets API peitti melkein kaikki BSD sockets API:n ominaisuudet, mutta on joitain väistämättömiä esteitä, jotka johtuivat pääasiassa Windowsin ja Unixin välisistä perustavanlaatuisista eroista (vaikka ero Windows Socketsin ja BSD sockettien välillä oli pienempi kuin ero jälkimmäinen ja STREAMS).
Windows-sockettien suunnittelutavoitteena oli kuitenkin tehdä kehittäjille suhteellisen helppo siirtää socket-pohjaisia sovelluksia Unixista Windowsiin. Ei riittänyt luoda API-liittymiä, jotka olivat hyödyllisiä vain äskettäin kirjoitetuille Windows-ohjelmille.
Siksi Windows Sockets sisälsi monia elementtejä, jotka oli suunniteltu helpottamaan siirtämistä. Esimerkiksi Unix-sovellukset voivat käyttää samaa errno-muuttujaa verkkovirheiden ja standardien C-kirjastotoimintojen havaitsemien virheiden kirjaamiseen.
Koska sitä ei voida toteuttaa Windowsissa, Windows Sockets otti käyttöön erikoistoiminnon, WSAGetLastError(), joka hakee virhetiedot. Tällainen mekanismi oli erittäin hyödyllinen, mutta sovellusten siirtäminen oli silti erittäin monimutkaista.
Monet primitiiviset TCP/IP-sovellukset on toteutettu käyttämällä Unixille ominaisia järjestelmäominaisuuksia (kuten pseudopäätteitä ja haarukkajärjestelmäkutsuja), ja tämän toiminnon toistaminen Windowsissa oli ongelmallista. Suhteellisen lyhyessä ajassa siirtäminen väistyi omistettujen Windows-sovellusten kehittämiselle.
Winsockin toteutukset
- Microsoft ei toimittanut Winsock 1.0:n toteutusta.
- Winsockin versio 1.1 toimitettiin lisäosapaketissa (nimeltään Wolverine) Windows for Workgroupsille (koodinimeltään Snowball).
- Winsockin versio 2.1 toimitettiin Windows 95:n lisäosapaketissa.
- Winsock 2.x:n uusin versio on toimitettu uuden Windows-version mukana tai osana Service Pack -pakettia.
- Winsock 2:ta voidaan laajentaa Layered Service Provider (LSP) -nimisellä mekanismilla.