Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Se l'opzione Windows Sockets determina che può instradare i dati tramite una connessione SAN anziché tramite lo stack TCP/IP, richiede al provider di servizi SAN appropriato di creare, associare e impostare le opzioni per un socket in cui è possibile trasferire i dati.
Il socket creato dal provider di servizi SAN è un complementare al socket creato dal provider di servizi TCP/IP alla richiesta dell'applicazione, da o a cui vengono trasferiti i dati. Il socket complementare creato dal provider di servizi SAN ha le stesse opzioni del socket creato dal provider di servizi TCP/IP, se il provider di servizi SAN supporta tali opzioni.
Il socket complementare ha anche lo stesso indirizzo IP e la porta TCP del socket creato dal provider di servizi TCP/IP. I dati SAN vengono trasferiti tramite il socket complementare creato dal provider di servizi SAN anziché dal socket creato dal provider di servizi TCP/IP. Il socket SAN non è visibile all'applicazione. Dal punto di vista dell'applicazione, i dati vengono trasferiti sul socket che ha richiesto di creare per il trasferimento dei dati.
Nota L'opzione usa sempre il provider di servizi TCP/IP per trasferire i dati su socket non elaborati. L'opzione non richiede quindi mai a un provider di servizi SAN di creare un socket non elaborato.
La figura seguente mostra una panoramica del modo in cui l'opzione Windows Sockets crea un socket complementare. La sequenza nelle sezioni che seguono descrive la creazione di un socket associato in modo più dettagliato.
Avvio della creazione di un socket TCP/IP
Dopo che l'opzione Windows Sockets riceve una chiamata WSPSocket avviata da un'applicazione, l'opzione chiama la funzione WSPSocket del provider TCP/IP per richiedere al provider TCP/IP di creare un socket.
L'opzione Windows Sockets restituisce il descrittore per il socket creato all'applicazione e archivia questo descrittore in una struttura di dati privata associata al socket.
Dal punto di vista dell'applicazione, il socket creato dal provider TCP/IP è il socket usato per i trasferimenti di dati, indipendentemente dal fatto che l'opzione usi il provider di servizi TCP/IP o il provider di servizi SAN per trasferire i dati.
Associazione di un socket TCP/IP
Lo switch riceve una chiamata WSPBind se un'applicazione richiede di associare il socket a un controller di interfaccia di rete (NIC) specifico o all'indirizzo IP jolly (0.0.0.0). Un socket associato all'indirizzo IP tutto può ascoltare le richieste di connessione in ingresso da tutte le schede di rete.
Nota A partire da Windows Vista, l'indirizzo IP generico 0.0.0.0 non è disponibile. Inoltre, a partire da Windows Vista, se l'IPAutoconfigurationEnabled chiave del Registro di sistema è impostata su un valore pari a 0, l'assegnazione automatica degli indirizzi IP è disabilitata e non viene assegnato alcun indirizzo IP. In questo caso, lo strumento da riga di comando ipconfig non visualizzerà un indirizzo IP. Se la chiave è impostata su un valore diverso da zero, viene assegnato automaticamente un indirizzo IP. Questa chiave può trovarsi nei percorsi seguenti nel Registro di sistema:
HKEY_LOCAL_MACHINE\SYSTEM\Current Control Set\Services\Tcpip\Parameters\IPAutoconfigurationEnabled
HKEY_LOCAL_MACHINE\SYSTEM\Current Control Set\Services\Tcpip\Parameters\Interfaces\GUID\IPAutoconfigurationEnabled
L'opzione inoltra questa chiamata al provider di servizi TCP/IP chiamando la funzione WSPBind del provider TCP/IP.
Determinazione del provider di servizi
L'interruttore determina se utilizzare un provider di servizi SAN per il trasferimento dei dati su un socket dopo che l'applicazione effettua una chiamata WSPListen o WSPConnect all'interruttore, come descritto in Configurazione di una connessione SAN.
Se l'opzione determina che non può usare un provider di servizi SAN per un trasferimento dati, l'opzione instrada il trasferimento dei dati tramite il provider di servizi TCP/IP.
Se l'opzione sceglie un provider di servizi SAN per gestire il socket di un'applicazione, l'opzione chiama la funzione WSPSocket del provider di servizi SAN per creare un socket complementare.
Avvio della creazione di un socket complementare
La funzione WSPSocket del provider di servizi SAN inizializza una struttura di dati interna in cui archivia le informazioni sul socket complementare.
La funzione WSPSocket del provider di servizi SAN deve quindi chiamare la funzione WPUCreateSocketHandle per acquisire un descrittore socket dallo switch.
Il provider di servizi SAN deve archiviare il descrittore socket del commutatore nella relativa struttura di dati interna per il socket complementare e deve restituire il proprio descrittore affinché il socket complementare completi la chiamata WSPSocket . Il descrittore socket restituito dal provider di servizi SAN può essere qualsiasi valore significativo, ad esempio un puntatore a una struttura di dati privata.
Per eseguire un'operazione sul socket, il commutatore fornisce il descrittore del socket restituito dal provider di servizi SAN alla funzione appropriata del provider di servizi SAN. Analogamente, il provider di servizi SAN deve fornire il descrittore socket acquisito dal commutatore nella chiamata WPUCreateSocketHandle se il provider di servizi SAN effettua una delle chiamate seguenti:
WPUQuerySocketHandleContext
WPUCloseSocketHandle
WPUCompleteOverlappedRequest
Associazione di un socket complementare
Se la funzione WSPSocket di un provider di servizi SAN viene completata correttamente, l'opzione chiama immediatamente la funzione WSPBind del provider di servizi SAN per assegnare un indirizzo IP locale e una porta TCP al socket.
Il commutatore assegna lo stesso indirizzo IP e la stessa porta TCP al socket SAN che era stato assegnato al socket creato dal provider TCP/IP. Il provider di servizi SAN deve convertire questo indirizzo TCP/IP nel formato nativo.
Lo switch fornisce un indirizzo IP completamente qualificato e una porta TCP (ovvero, valori diversi da zero) alla funzione WSPBind del provider di servizi SAN, a meno che un'applicazione non richieda l'ascolto delle connessioni in ingresso da tutte le schede di interfaccia di rete. Nel caso specifico, lo switch fornisce l'indirizzo IP con caratteri jolly alla funzione WSPBind del provider di servizi SAN.
Impostazione delle opzioni per un socket complementare
- Se l'applicazione ha specificato delle opzioni socket, lo switch archivia tali opzioni. Dopo aver creato il socket SAN, lo switch chiama la funzione WSPSetSockOpt del provider di servizi SAN per ciascuna opzione supportata specificata dall'applicazione, al fine di impostare immediatamente queste opzioni per il socket SAN.
Errore di una chiamata socket complementare
- Se un provider di servizi SAN non riesce in una delle chiamate precedenti alle sue funzioni WSPSocket, WSPBind o WSPSetSockOpt, lo switch chiama la funzione WSPCloseSocket del provider di servizi SAN per distruggere il socket SAN. Il switch utilizza quindi il provider TCP/IP per continuare a gestire il socket dell'applicazione. Si noti che, dopo che lo switch stabilisce una connessione usando un provider di servizi SAN, lo switch non può utilizzare il provider TCP/IP per soddisfare il socket dell'applicazione. In questo caso, l'opzione restituisce l'errore appropriato all'applicazione.
Connessione del socket complementare
- Dopo che lo switch configura il socket complementare, lo switch chiama la funzione WSPListen o WSPConnect affinché il provider di servizi SAN esegua l'operazione per cui il socket è stato originariamente configurato. Ad esempio, se un'applicazione ha originariamente richiesto di ascoltare le connessioni in ingresso, l'opzione chiama la funzione WSPListen del provider di servizi SAN.