Udostępnij przez


Tworzenie i wiązanie gniazd SAN

Jeśli przełącznik Windows Sockets określa, że może kierować dane za pośrednictwem połączenia SAN, a nie za pośrednictwem stosu TCP/IP, żąda odpowiedniego dostawcy usług SIECI SAN, aby utworzyć, powiązać i ustawić opcje gniazda, na którym można przesyłać dane.

Gniazdo utworzone przez dostawcę usług SAN jest partnerem gniazda stworzonego przez dostawcę usług TCP/IP na żądanie aplikacji, z lub do którego przesyłane są dane. Gniazdo towarzyszące utworzone przez dostawcę usług SIECI SAN ma te same opcje co gniazdo utworzone przez dostawcę usług TCP/IP, jeśli dostawca usług SIECI SAN obsługuje te opcje.

Gniazdo towarzyszące ma również ten sam adres IP i port TCP co gniazdo utworzone przez dostawcę usług TCP/IP. Dane sieci SAN są przesyłane za pośrednictwem gniazda towarzyszącego utworzonego przez dostawcę usług SIECI SAN, a nie gniazda utworzonego przez dostawcę usług TCP/IP. Gniazdo SIECI SAN nie jest widoczne dla aplikacji. Z perspektywy aplikacji dane są przesyłane na gniazdo, którego zażądano utworzenia na potrzeby transferu danych.

Uwaga Przełącznik zawsze używa dostawcy usług TCP/IP do transferu danych za pośrednictwem nieprzetworzonych gniazd. W związku z tym przełącznik nigdy nie żąda dostawcy usług SAN utworzenia nieprzetworzonego gniazda.

Na poniższej ilustracji przedstawiono przegląd sposobu tworzenia gniazda towarzyszącego przez przełącznik Windows Sockets. W kolejnych sekcjach opisano tworzenie gniazda towarzyszącego bardziej szczegółowo.

Diagram przedstawiający przegląd sposobu tworzenia gniazda towarzyszącego przez przełącznik Windows Sockets.

Inicjowanie tworzenia gniazda TCP/IP

  1. Po tym, jak przełącznik Windows Sockets odbierze wywołanie WSPSocket zainicjowane przez aplikację, wywołuje funkcję WSPSocket dostawcy TCP/IP, aby zażądać od niego utworzenia gniazda.

  2. Przełącznik Windows Sockets zwraca deskryptor dla utworzonego gniazda do aplikacji i przechowuje ten deskryptor w prywatnej strukturze danych skojarzonej z gniazdem.

    Z perspektywy aplikacji gniazdo utworzone przez dostawcę TCP/IP jest gniazdem używanym do transferów danych, niezależnie od tego, czy przełącznik używa dostawcy usług TCP/IP, czy dostawcy usług SAN do transferu danych.

Wiązanie gniazda TCP/IP

  1. Przełącznik odbiera wywołanie WSPBind, jeśli aplikacja żąda powiązania gniazda z określonym kontrolerem interfejsu sieciowego lub z wieloznacznymi adresami IP (0.0.0.0.0). Gniazdo powiązane z wieloznacznym adresem IP może nasłuchiwać przychodzących żądań połączeń ze wszystkich interfejsów sieciowych.

    Uwaga Począwszy od systemu Windows Vista, adres IP wieloznaczny 0.0.0.0 jest niedostępny. Również począwszy od systemu Windows Vista, jeśli IPAutoconfigurationEnabled klucz rejestru jest ustawiony na wartość 0, automatyczne przypisanie adresu IP jest wyłączone i nie przypisano żadnego adresu IP. W takim przypadku narzędzie wiersza polecenia ipconfig nie wyświetli adresu IP. Jeśli klucz jest ustawiony na wartość niezerową, adres IP jest przypisywany automatycznie. Ten klucz można znaleźć w następujących ścieżkach w rejestrze:

    HKEY_LOCAL_MACHINE\SYSTEM\Current Control Set\Services\Tcpip\Parameters\IPAutoconfigurationEnabled

    HKEY_LOCAL_MACHINE\SYSTEM\Current Control Set\Services\Tcpip\Parameters\Interfaces\GUID\IPAutoconfigurationEnabled

  2. Przełącznik przekazuje to wywołanie do dostawcy usług TCP/IP przez wywołanie funkcji dostawcy TCP/IP WSPBind.

Określanie dostawcy usług

  1. Przełącznik określa, czy używać dostawcy usług SAN do transferu danych na gnieździe po zainicjowaniu przez aplikację wywołania WSPListen lub WSPConnect przez przełącznik, zgodnie z opisem w Konfigurowanie połączenia SAN.

  2. Jeśli przełącznik określi, że nie może użyć dostawcy usług SIECI SAN do transferu danych, przełącznik kieruje transfer danych za pośrednictwem dostawcy usług TCP/IP.

  3. Jeśli przełącznik wybierze dostawcę usług SAN w celu obsługi gniazda aplikacji, wywołuje funkcję dostawcy usług SAN WSPSocket, aby utworzyć gniazdo towarzyszące.

Inicjowanie tworzenia gniazda towarzyszącego

  1. Funkcja dostawcy usług SIECI SAN WSPSocket inicjuje wewnętrzną strukturę danych, w której przechowuje informacje o gniazdach towarzyszących.

  2. Funkcja dostawcy usług SIECI SAN WSPSocket musi następnie wywołać funkcję WPUCreateSocketHandle, aby uzyskać deskryptor gniazd z przełącznika.

  3. Dostawca usługi sieci SAN musi przechowywać deskryptor gniazda przełącznika w swojej wewnętrznej strukturze danych dla gniazd towarzyszących i musi zwrócić własny deskryptor gniazda towarzyszącego, aby zakończyć wywołanie WSPSocket. Deskryptor gniazda zwrócony przez dostawcę usług SAN może mieć dowolną znaczącą wartość, taką jak wskaźnik do prywatnej struktury danych.

  4. Aby wykonać operację na gnieździe, przełącznik dostarcza deskryptor gniazda, który został zwrócony przez dostawcę usług sieci SAN do odpowiedniej funkcji dostawcy usług sieci SAN. Podobnie dostawca usług SAN musi podać deskryptor gniazda, który został uzyskany z przełącznika w wywołaniu WPUCreateSocketHandle, jeśli dostawca usług SAN wykonuje dowolne z następujących wywołań:

    WPUQuerySocketHandleContext

    WPUCloseSocketHandle

    WPUCompleteOverlappedRequest

Wiązanie gniazda pomocniczego

  1. Jeśli funkcja WSPSocket dostawcy usług SAN zakończy się pomyślnie, przełącznik natychmiast wywołuje funkcję WSPBind dostawcy usług SAN, aby przypisać lokalny adres IP i port TCP do gniazda.

  2. Przełącznik przypisuje ten sam adres IP i port TCP do gniazda SIECI SAN, co zostało przypisane do gniazda utworzonego przez dostawcę TCP/IP. Dostawca usług SIECI SAN musi przetłumaczyć ten adres TCP/IP na natywny format.

  3. Przełącznik dostarcza pełny adres IP i port TCP (czyli wartości inne niż zerowe) do funkcji dostawcy usług sieci SAN WSPBind, chyba że aplikacja zażądała nasłuchiwania połączeń przychodzących ze wszystkich interfejsów sieciowych. W późniejszym przypadku przełącznik dostarcza wieloznaczny adres IP do funkcji dostawcy usług SIECI SAN WSPBind.

Opcje ustawień dla gniazda towarzyszącego

  • Jeśli aplikacja określiła jakiekolwiek opcje gniazda, przełącznik przechowuje te opcje. Po utworzeniu gniazda SAN, przełącznik wywołuje funkcję WSPSetSockOpt dostawcy usług SAN dla każdej obsługiwanej opcji, która została określona przez aplikację, aby natychmiast ustawić te opcje dla gniazda SAN.

Niepowodzenie połączenia gniazda pomocniczego

  • Jeśli dostawca usług SAN ulegnie awarii podczas dowolnego z poprzednich wywołań do jego funkcji WSPSocket, WSPBind lub WSPSetSockOpt, przełącznik wywołuje funkcję WSPCloseSocket dostawcy usług SAN w celu zniszczenia gniazda SAN. Następnie przełącznik używa dostawcy TCP/IP do kontynuowania obsługi gniazda aplikacji. Należy pamiętać, że po nawiązaniu połączenia przy użyciu dostawcy usług SIECI SAN przełącznik nie może użyć dostawcy TCP/IP do obsługi gniazda aplikacji. W takim przypadku przełącznik zwraca odpowiedni błąd do aplikacji.

Łączenie gniazda towarzyszącego

  • Po skonfigurowaniu gniazda towarzyszącego przełącznik wywołuje funkcję WSPListen lub WSPConnect u dostawcy usług SAN, aby wykonać operację, która spowodowała pierwotną konfigurację gniazda. Jeśli na przykład aplikacja pierwotnie zażądała nasłuchiwania połączeń przychodzących, przełącznik wywołuje funkcję WSPListen dostawcy usług SAN.