Introducere în Winsock, inclusiv fundal și tehnologie
Introduction Winsock Including Background Technology
Această postare vorbește în principal despre API-ul Windows Sockets, care poate fi scurtat la WSA și Winsock. După ce ați citit această postare, puteți cunoaște definiția, fundalul, tehnologia, precum și implementările acestuia.
Pe aceasta pagina :Definiție pentru Winsock
Ce este Winsock? În calcul, Winsock este o specificație tehnică folosită pentru a defini modul în care software-ul de rețea Windows ar trebui să acceseze serviciile de rețea, în special TCP/IP. Se numește Winsock deoarece este o adaptare a interfeței socket Berkeley UNIX la Windows. Un socket este un acord special utilizat pentru a se conecta și a face schimb de date între două procese de program de pe același computer sau rețea.
Bacsis: Dacă doriți să aflați mai multe informații despre alte protocoale de Internet, atunci este recomandat să accesați site-ul MiniTool.
Winsock este abrevierea Windows Sockets API (WSA). Acesta definește interfața standard între aplicațiile client Windows TCP/IP (cum ar fi clienții FTP sau browserele Web) și stiva de protocoale de bază TCP/IP.
În legătură cu o postare: Utilizați comanda Netsh Winsock Reset pentru a remedia problema de rețea Windows 10
Fundalul lui Winsock
API-ul Windows Sockets a fost propus de Martin Hall de la JSB Software (mai târziu Stardust Technologies) în discuția BoF (Bird of a Feather) pe rețeaua CompuServe BBS în octombrie 1991.
Prima versiune a specificației a fost scrisă de Martin Hall, Mark Towfiq de la Microdyne (mai târziu Sun Microsystems), Geoff Arnold de la Sun Microsystems și Henry Sanders și J Allard de la Microsoft cu ajutorul multor alții.
Au existat câteva discuții despre cum să rezolve cel mai bine drepturile de autor, proprietatea intelectuală și potențialele probleme antitrust și luarea în considerare a muncii prin IETF sau înființarea de fundații non-profit. În cele din urmă, s-a decis ca specificația să fie protejată prin drepturi de autor doar de cinci autori (neafiliați).
Toți dezvoltatorii participanți au refuzat să prescurteze numele pur și simplu Winsock pentru o lungă perioadă de timp, deoarece a existat multă confuzie între API și fișierul de bibliotecă DLL (winsock.dll), care a expus doar interfața generală WSA la aplicația de deasupra acestuia. În general, se crede că numai asigurarea existenței fișierului DLL în sistem poate oferi suport complet pentru protocolul TCP/IP.
Tehnologia Winsock
Specificația Windows Socket API definește două interfețe: API utilizată de dezvoltatorii de aplicații și SPI care oferă o metodă pentru dezvoltatorii de software de rețea pentru a adăuga noi module de protocol la sistem. Fiecare interfață reprezintă un contract.
API-ul garantează că aplicațiile conforme pot rula normal cu implementarea protocolului conform oricărui furnizor de software de rețea. Contractul SPI garantează că modulele de protocol conforme pot fi adăugate în Windows, astfel încât acestea să poată fi utilizate de aplicațiile compatibile cu API.
Deși aceste contracte erau importante atunci când Windows Sockets a fost lansat pentru prima dată, ele au doar o importanță academică acum, deoarece mediul de rețea necesită suport multi-protocol. Windows Sockets API versiunea 2.0 include funcția de utilizare a IPX/SPX, deși acest protocol era aproape învechit când WSA 2.0 a părăsit fabrica.
Codul și designul Windows Sockets se bazează pe socket-uri BSD, dar sunt furnizate caracteristici suplimentare pentru a permite API-ului să se conformeze modelului convențional de programare Windows.
API-ul Windows Sockets a acoperit aproape toate caracteristicile API-ului socket-urilor BSD, dar există câteva obstacole inevitabile, care au fost cauzate în principal de diferențele fundamentale dintre Windows și Unix (deși diferența dintre socket-urile Windows și socket-urile BSD a fost mai mică decât diferența dintre acesta din urmă și STREAM).
Cu toate acestea, scopul de proiectare al socket-urilor Windows a fost să le fie relativ ușor pentru dezvoltatori să port aplicații bazate pe socket de la Unix la Windows. Nu a fost suficient să se creeze API-uri care erau utile doar pentru programele Windows nou scrise.
Prin urmare, Windows Sockets conținea multe elemente concepute pentru a facilita portarea. De exemplu, aplicațiile Unix ar putea folosi aceeași variabilă errno pentru a înregistra erorile de rețea și erorile detectate în funcțiile standard ale bibliotecii C.
Deoarece nu poate fi implementat în Windows, Windows Sockets a introdus o funcție specială, WSAGetLastError(), pentru a prelua informații despre eroare. Un astfel de mecanism a fost foarte util, dar portarea aplicației era încă extrem de complicată.
Multe aplicații TCP/IP primitive au fost implementate prin utilizarea caracteristicilor de sistem specifice Unix (cum ar fi pseudo terminale și apeluri de sistem furca), și a fost problematică reproducerea acestei funcție în Windows. Într-un timp relativ scurt, portarea a făcut loc dezvoltării de aplicații Windows dedicate.
Implementări ale Winsock
- Microsoft nu a furnizat o implementare a Winsock 1.0.
- Versiunea 1.1 a Winsock a fost furnizată într-un pachet suplimentar (numit Wolverine) pentru Windows pentru Workgroups (numit de cod Snowball).
- Winsock versiunea 2.1 a fost furnizată într-un pachet suplimentar pentru Windows 95.
- Cea mai recentă versiune de Winsock 2.x a fost furnizată împreună cu noua versiune de Windows sau ca parte a unui pachet de servicii.
- Winsock 2 poate fi extins printr-un mecanism numit Layered Service Provider (LSP).