Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Se o switch Windows Sockets determinar que pode rotear dados por meio de uma conexão SAN em vez de através da pilha TCP/IP, ele solicitará que o provedor de serviços SAN apropriado crie, vincule e defina opções para um soquete no qual os dados podem ser transferidos.
O soquete criado pelo fornecedor de serviços SAN é um complemento ao soquete que o fornecedor de serviços TCP/IP criou a pedido da aplicação, de ou para a qual os dados estão sendo transferidos. O de soquete complementar criado pelo provedor de serviços de SAN tem as mesmas opções que o soquete criado pelo provedor de serviços TCP/IP, se o provedor de serviços de SAN oferecer suporte a essas opções.
O soquete complementar também tem o mesmo endereço IP e porta TCP que o soquete que foi criado pelo provedor de serviços TCP/IP. Os dados de SAN são transferidos por meio do soquete complementar criado pelo provedor de serviços SAN em vez do soquete criado pelo provedor de serviços TCP/IP. O soquete SAN não está visível para o aplicativo. Do ponto de vista do aplicativo, os dados são transferidos no soquete que ele solicitou para ser criado para a transferência de dados.
Nota O switch sempre usa o provedor de serviços TCP/IP para transferir dados por soquetes brutos. Portanto, o switch nunca solicita que um provedor de serviços de SAN crie um soquete bruto.
A figura a seguir mostra uma visão geral de como a opção Windows Sockets cria um soquete complementar. A sequência nas seções a seguir descreve a criação de um soquete complementar com mais detalhes.
Iniciando a criação de um soquete TCP/IP
Depois que o switch Windows Sockets recebe uma chamada de WSPSocket que foi iniciada por um aplicativo, o switch chama a função WSPSocket do provedor TCP/IP para solicitar que o provedor TCP/IP crie um socket.
A opção Windows Sockets retorna o descritor do soquete criado para o aplicativo e armazena esse descritor em uma estrutura de dados privada associada ao soquete.
Da perspetiva do aplicativo, o soquete criado pelo provedor TCP/IP é o soquete usado para transferências de dados, quer o switch use o provedor de serviços TCP/IP ou o provedor de serviços SAN para transferir os dados.
Vinculando um soquete TCP/IP
O switch recebe uma chamada WSPBind se uma aplicação solicitar a associação do socket a um controlador de interface de rede específico (NIC) ou ao endereço IP curinga (0.0.0.0). Um soquete vinculado ao endereço IP curinga pode escutar solicitações de conexão de entrada de todas as NICs.
Observação A partir do Windows Vista, o endereço IP curinga 0.0.0.0 não está disponível. Também a partir do Windows Vista, se a chave de registo IPAutoconfigurationEnabled estiver definida como um valor 0, a atribuição automática de endereços IP será desativada e nenhum endereço IP será atribuído. Nesse caso, a ferramenta de linha de comando ipconfig não exibirá um endereço IP. Se a chave for definida como um valor diferente de zero, um endereço IP será atribuído automaticamente. Essa chave pode ser localizada nos seguintes caminhos no registro:
HKEY_LOCAL_MACHINE\SYSTEM\Current Control Set\Services\Tcpip\Parameters\IPAutoconfigurationEnabled
HKEY_LOCAL_MACHINE\SYSTEM\Current Control Set\Services\Tcpip\Parameters\Interfaces\GUID\IPAutoconfigurationEnabled
O switch encaminha esta chamada para o provedor de serviços TCP/IP chamando a função WSPBind do provedor TCP/IP.
Determinação do Prestador de Serviços
O switch determina se um provedor de serviços de SAN deve ser usado para a transferência de dados em um soquete após o aplicativo iniciar uma chamada de WSPListen ou WSPConnect para o switch, conforme descrito em Configurando uma conexão SAN.
Se o switch determinar que não pode usar um provedor de serviços SAN para uma transferência de dados, o switch roteia a transferência de dados por meio do provedor de serviços TCP/IP.
Se o switch escolher um provedor de serviços SAN para suportar o socket de uma aplicação, o switch chamará a função WSPSocket do provedor de serviços SAN para criar um socket complementar.
Iniciando a criação de um soquete complementar
A função WSPSocket do provedor de serviços SAN inicializa uma estrutura de dados interna na qual armazena informações sobre o soquete companheiro.
A função WSPSocket do fornecedor de serviços SAN deve, em seguida, chamar a função WPUCreateSocketHandle para obter um descritor de socket do switch.
O provedor de serviços de SAN deve armazenar o descritor de soquete do switch na sua estrutura de dados interna para o soquete complementar e deve retornar o seu próprio descritor para o soquete complementar, a fim de concluir a chamada de WSPSocket. O descritor de soquete retornado pelo provedor de serviços de SAN pode ser qualquer valor significativo, como um ponteiro para uma estrutura de dados privada.
Para executar uma operação no soquete, o switch fornece o descritor de soquete que foi retornado pelo provedor de serviços de SAN para a função apropriada do provedor de serviços de SAN. Da mesma forma, o provedor de serviços de SAN deve fornecer o descritor de soquete que foi adquirido do switch na chamada de WPUCreateSocketHandle caso o provedor de serviços de SAN efetue alguma das seguintes chamadas de retorno:
WPUQuerySocketHandleContext
WPUCloseSocketHandle
WPUCompleteOverlappedRequest
Vinculando um soquete complementar
Se a função WSPSocket de um provedor de serviços SAN for concluída com êxito, o switch chamará imediatamente a função WSPBind do provedor de serviços SAN para atribuir um endereço IP local e uma porta TCP ao soquete.
O switch atribui o mesmo endereço IP e porta TCP ao soquete SAN que foi atribuído ao soquete criado pelo provedor TCP/IP. O provedor de serviços de SAN deve traduzir esse endereço TCP/IP em seu formato nativo.
O comutador fornece um endereço IP totalmente qualificado e uma porta TCP (ou seja, valores diferentes de zero) para a função WSPBind do fornecedor de serviços SAN, a menos que uma aplicação solicite receber conexões de entrada de todas as NICs. No último caso, o switch fornece o endereço IP curinga à função WSPBind para o provedor de serviços da SAN.
Opções de configuração para um soquete complementar
- Se o aplicativo especificou quaisquer opções de soquete, o switch armazenará essas opções. Depois de criar o soquete SAN, o switch chama a função WSPSetSockOpt do provedor de serviços SAN para cada opção que foi especificada pelo aplicativo e suportada, para definir imediatamente essas opções para o soquete SAN.
Falha em uma chamada de soquete complementar
- Se um provedor de serviços de SAN falhar em qualquer uma das chamadas anteriores para as suas funções WSPSocket, WSPBindou WSPSetSockOpt, o switch chamará a função WSPCloseSocket do provedor de serviços de SAN para destruir o soquete SAN. Em seguida, o switch usa o provedor TCP/IP para continuar a manutenção do soquete do aplicativo. Observe que, depois que o switch estabelece uma conexão usando um provedor de serviços SAN, o switch não pode usar o provedor TCP/IP para atender o soquete do aplicativo. Nesse caso, o comutador retorna o erro apropriado para a aplicação.
Ligar a tomada auxiliar
- Depois de configurar o socket complementar, o switch chama ou a função WSPListen ou a função WSPConnect para que o provedor de serviços de SAN execute a operação que originalmente causou a configuração do socket. Por exemplo, se um aplicativo solicitou originalmente escutar conexões de entrada, o switch chamará a função WSPListen do provedor de serviços SAN.