Introduzione a Winsock, inclusi background e tecnologia
Introduction Winsock Including Background Technology
Questo post parla principalmente dell'API Windows Sockets, che può essere abbreviato in WSA e Winsock. Dopo aver letto questo post, puoi conoscerne la definizione, il background, la tecnologia e le implementazioni.
Su questa pagina :Definizione di Winsock
Cos'è Winsock? In ambito informatico, Winsock è una specifica tecnica utilizzata per definire il modo in cui il software di rete Windows deve accedere ai servizi di rete, in particolare TCP/IP. Si chiama Winsock perché è un adattamento dell'interfaccia socket Berkeley UNIX a Windows. Un socket è un accordo speciale utilizzato per connettersi e scambiare dati tra due processi di programma sullo stesso computer o rete.
Mancia: Se desideri avere maggiori informazioni su altri protocolli Internet, ti consigliamo di visitare il sito Web MiniTool.
Winsock è l'abbreviazione di Windows Sockets API (WSA). Definisce l'interfaccia standard tra le applicazioni client TCP/IP di Windows (come client FTP o browser Web) e lo stack di protocolli TCP/IP di base.
Articolo correlato: Utilizza il comando Netsh Winsock Reset per risolvere il problema di rete di Windows 10
Sfondo di Winsock
L'API Windows Sockets è stata proposta da Martin Hall di JSB Software (in seguito Stardust Technologies) nella discussione BoF (Bird of a Feather) sulla rete BBS CompuServe nell'ottobre 1991.
La prima versione delle specifiche è stata scritta da Martin Hall, Mark Towfiq di Microdyne (poi Sun Microsystems), Geoff Arnold di Sun Microsystems e Henry Sanders e J Allard di Microsoft con l'aiuto di molti altri.
Si sono svolte alcune discussioni su come risolvere al meglio i problemi di diritto d'autore, proprietà intellettuale e potenziali antitrust, e si è preso in considerazione il lavoro attraverso l'IETF o la creazione di fondazioni senza scopo di lucro. Alla fine, è stato deciso che la specifica dovesse essere protetta da copyright solo da cinque autori (non affiliati).
Tutti gli sviluppatori partecipanti si rifiutarono per molto tempo di abbreviare il nome semplicemente in Winsock perché c'era molta confusione tra l'API e il file della libreria DLL (winsock.dll), che esponeva solo l'interfaccia WSA generale all'applicazione sopra di essa. In genere si ritiene che solo garantendo l'esistenza del file DLL nel sistema sia possibile fornire il supporto completo del protocollo TCP/IP.
Tecnologia di Winsock
La specifica API Windows Socket definisce due interfacce: API utilizzata dagli sviluppatori di applicazioni e SPI che fornisce un metodo agli sviluppatori di software di rete per aggiungere nuovi moduli di protocollo al sistema. Ogni interfaccia rappresenta un contratto.
L'API garantisce che le applicazioni conformi possano essere eseguite normalmente con l'implementazione del protocollo conforme di qualsiasi fornitore di software di rete. Il contratto SPI garantisce che i moduli di protocollo conformi possano essere aggiunti a Windows in modo che possano essere utilizzati da applicazioni conformi alle API.
Sebbene questi contratti fossero importanti quando venne rilasciato per la prima volta Windows Sockets, ora hanno solo un significato accademico perché l'ambiente di rete richiede il supporto multiprotocollo. La versione 2.0 dell'API Windows Sockets include la funzione di utilizzo di IPX/SPX, sebbene questo protocollo fosse quasi obsoleto quando WSA 2.0 lasciò la fabbrica.
Il codice e la progettazione di Windows Sockets sono basati su socket BSD, ma vengono fornite funzionalità aggiuntive per consentire all'API di conformarsi al modello di programmazione Windows convenzionale.
L'API Windows Sockets copriva quasi tutte le funzionalità dell'API socket BSD, ma ci sono alcuni ostacoli inevitabili, causati principalmente dalle differenze fondamentali tra Windows e Unix (sebbene la differenza tra Windows Sockets e BSD socket fosse inferiore alla differenza tra quest'ultimo e STREAMS).
Tuttavia, l'obiettivo della progettazione dei socket Windows era quello di rendere relativamente semplice per gli sviluppatori il porting di applicazioni basate su socket da Unix a Windows. Non era sufficiente creare API utili solo per i programmi Windows appena scritti.
Pertanto, Windows Sockets conteneva molti elementi progettati per facilitare il porting. Ad esempio, le applicazioni Unix potrebbero utilizzare la stessa variabile errno per registrare gli errori di rete e gli errori rilevati nelle funzioni della libreria C standard.
Poiché non può essere implementato in Windows, Windows Sockets ha introdotto una funzione speciale, WSAGetLastError(), per recuperare le informazioni sugli errori. Tale meccanismo è stato molto utile, ma il porting delle applicazioni era ancora estremamente complicato.
Molte applicazioni TCP/IP primitive sono state implementate utilizzando funzionalità di sistema specifiche di Unix (come pseudo terminali e chiamate di sistema fork), ed è stato problematico riprodurre questa funzione in Windows. In un tempo relativamente breve il porting ha lasciato il posto allo sviluppo di applicazioni Windows dedicate.
Implementazioni di Winsock
- Microsoft non ha fornito un'implementazione di Winsock 1.0.
- La versione 1.1 di Winsock era fornita in un pacchetto aggiuntivo (chiamato Wolverine) per Windows for Workgroups (nome in codice Snowball).
- Winsock versione 2.1 era fornita in un pacchetto aggiuntivo per Windows 95.
- L'ultima versione di Winsock 2.x è stata fornita con la nuova versione di Windows o come parte di un Service Pack.
- Winsock 2 può essere esteso attraverso un meccanismo chiamato Layered Service Provider (LSP).