Najpopularniejszy protokół transferu plików

Najpopularniejszy protokół transferu plików

  • Comments 8
  • Likes

Tytuł jest przewrotny. Bo choć jeden protokół transferu plików jednoznacznie się wyróżnia w statystykach, to mało kto zgadnie przy pierwszej próbie o jaki protokół chodzi. A chodzi o BITS czyli Background Intelligent Transfer Service.
Administratorzy zazwyczaj kojarzą, że taki protokół gdzieśtam istnieje, często nawet wiedzą do czego się nadaje, ale dla pewności, podsumuję jego najważniejsze cechy:

  • BITS działa asynchronicznie. Po zleceniu transmisji, komputer ją realizuje niezależnie od działania zlecającej aplikacji, chwilowych przerw w dostępności serwera, restartów czy innych przeszkód. Czas, przez który rozpoczęta transmisja jest aktywna można konfigurować, ale domyślnie wynosi on 90 dni.
  • Zadanie kopiowania można dowolnie zatrzymywać i uruchamiać ponownie. To czasem cenne.
  • BITS potrafi użyć HTTP, HTTPS oraz SMB. Ten ostatni protokół nie istniał w BITS do wersji 1.5 włącznie, więc mimo, że mamy teraz 4.0, to często się o nim zapomina, podczas gdy świetnie sprawdza się na przykład podczas kopiowania plików w sieciach lokalnych.
  • BITS może sprawdzać wysycenie łącza i jeżeli wykryje innych chętnych do transmisji, spowolnić swoje działanie. W efekcie, nawet transferując duże pliki, nie przeszkadza użytkownikowi w normalnej pracy. Warto jednak pamiętać, że BITS będzie próbował przesyłać dane również, gdy łącze jest całkowicie wysycone. Nie będzie tego dużo, ale może być zauważalne. Wykrywając wysycenie łącza, BITS może zrobić tylko tyle ile się da. Jeżeli nie dogada się z routerem (przez UPnP) a LAN jest znacząco szybszy od WAN – mechanizmy oszczędzania łącza mogą działać niepoprawnie. Administratorowi pozostaje ręczne określenie maksymalnego dozwolonego pasma.
  • BITS działa na plikach. Jeżeli trzeba przesłać wiele małych plików albo całą strukturę katalogów – najlepiej wszystko spakować w jedną całość i przesłać całe archiwum na raz.
  • BITS w obecnie dostępnej wersji pozwala na pobieranie plików, wysyłanie plików oraz na transmisję typu upload-and-reply, gdzie serwer po otrzymaniu pliku od klienta generuje i odsyła odpowiedź.
  • BITS działa tylko, jeżeli użytkownik inicjujący transmisję jest zalogowany. Jeżeli jest to problemem, zawsze można zlecić transmisję na koncie LocalSystem, NetworkService albo LocalService.
  • BITS nie może transmitować otwartych plików. Jeżeli to poważny problem, to zawsze można użyć VSS do zrobienia migawki i przesłać plik z migawki.
  • BITS w Windows 7 korzysta z dobrodziejstw BranchCache, dzięki czemu przesłanie plików przez WAN do wielu komputerów jest bardzo "oszczędne".
  • Transmisji BITS można nadać jeden z czterech priorytetów, w zależności od tego czy bardziej zależy nam na czasie zakończenia operacji czy na umiarkowanym wysyceniu łącza. Transmisje o takim samym priorytecie wykonywane są równocześnie, podczas gdy te o niższym – oczekują na zakończenie lub zatrzymanie ważniejszych. Transmisje z priorytetem BG_JOB_PRIORITY_FOREGROUND (najwyższym) nie używają mechanizmów ograniczania prędkości transmisji, więc walczą o pasmo z innymi aplikacjami użytkownika.
  • Wysłanie wielu plików w jednej transmisji jest możliwe, ale będą one wysłane jeden po drugim. Chcąc zrównoleglić ich transmisję, najlepiej utworzyć wiele zadań o tym samym priorytecie.
  • Transmisje BITS mogą się uwierzytelniać na wiele różnych sposobów od uwierzytelniania Basic, przez NTLM aż po passport.
  • BITS domyślnie używa ustawień proxy skonfigurowanych w IE, ale w razie potrzeby można użyć dowolnych innych. Warto pamiętać, że ustawienia te nie muszą być identyczne dla każdego użytkownika, zwłaszcza dla kont takich jak LocalSystem, NetworkService czy LocalService.
  • BITS ma konfigurowalne limity zleceń. Domyślnie to 60 na użytkownika i 300 na komputer. Jedno zlecenie to maksymalnie 200 plików. Te i inne parametry mogą być ustalane przy pomocy Group Policy i nie dotyczą użytkowników o uprawnieniach administratora.
  • Wśród parametrów konfiguracyjnych BITS, wspomnieć trzeba również o sposobach radzenia sobie z błędami transmisji. BITS będzie próbował ponowić transmisję określoną ilość razy w określonym czasie. Czasem może przydać się precyzyjne dostrojenie tych wartości.
  • BITS nie sprawdza integralności plików. Jeżeli ktoś "w locie" podmieni fragment przesyłanej bazy danych, BITS da się oszukać. Jeżeli integralność jest istotna, trzeba sobie zapewnić własne mechanizmy.
  • Jeżeli ktoś zmieni źródłowy plik w czasie transmisji – BITS zacznie jego transfer jeszcze raz. Jeżeli podejrzewamy, że to prawdopodobny scenariusz, możemy skorzystać z VSS.
  • Za realizację zadań zleconych BITS odpowiada dedykowana usługa systemowa – BITS.
  • Jeżeli potrzebujemy opartego na HTTP/HTTPS prostego serwera BITS, w Windows Server 2008 mamy BITS Compact Server. Po zainstalowaniu możemy przesyłać pliki bez dłubania się w złożonych konfiguracjach, choć nawet te niezłożone mogą być w tym przypadku nieco uciążliwe. Oczywiście, można użyć i IIS jeżeli ktoś lubi, potrzebuje albo po prostu pewniej się czuje w dostępnych opcjach.
  • Działanie BITS można monitorować mechanizmami trace, na przykład z wykorzystaniem gotowych skryptów
  • Zlecanie transferów BITS jest bardzo proste niezależnie od tego, czy patrzy się z punktu widzenia programisty czy administratora. Można znaleźć nawet narzędzia GUI, ale prawdziwi twardziele używają odpowiednich cmdletów PowerShell. Należey tylko pamiętać o "Import-Module BitsTransfer"

Na szybko to byłoby na tyle. Mając następnym razem duże pliki do przesłania, jakiego mechanizmu użyjesz...?

Autor: Grzegorz Tworek [MVP]

PS Było kiedyś narzędzie bitsadmin. Ale obecnie jego użycie jest odradzane. Zresztą, kto chciałby takie narzędzie, mając do dyspozycji PowerShella?

Comments
  • BITS w kolejce czeka na rozpracowanie.

    Dziękuję za konkrety!

    Czy osobiście zastąpiłeś FTP BITSem po https?

    Jak już mowa o przesyłaniu plików.

    W IIS 7.5 przesyłając dużą ilość małych plików przez FTPS, IIS zrywa połączenie, czy to taka niedobra przypadłość FTPS, czy błąd po mojej stronie w konfiguracji?

  • Grzesiu, a o jakich statystykach piszesz? Bo co poza stosem narzędzi MS (np. Configuration Manager, WSUS, SharePoint) go używa? Jakoś nie chce mi się wierzyć, że to zapewnia takie obciążenie.

    Ale ja w pewnych kwestiach jestem niedouczony i może nie łąpię. :)

  • Polecam się ;)

    Czy zastąpiłem FTPa BITSem? Nie wszędzie, ale polecam coś, co ma i BITSa i FTPa, do tych samych plików i każdy sobie sięgnie czym tam lubi.

    Co do FTPSa - nie wiem, nie spotkałem się. Polecam forum iis.net. Siedzą tam prawdziwi magicy i na pewno coś podpowiedzą.

  • Ziemek: używa go Windows Update. To wystarczy... ;)

    Miliard komputerów i automat pobierający kilka sporych plików każdego miesiąca i już masz wynik nie do pobicia.

  • Znacie może jakieś rozwiązanie nie bazujące na usłudze systemowej robiące podobne rzeczy?

    Jakaś biblioteka z obsługą throttlingu i socketów na przykład?

  • A pytanie mi się urodziło ;-)

    Da się zmusić BITS, żeby w Windows 7 był wykorzystywany wyłącznie do pobierania aktualizacji?

  • To znaczy zabronić jego użycia komukolwiek innemu? Pewnie się da, ale nie mam pojęcia jak ;)

    Możesz wyłączyć usługę BITS. Wtedy na pewno nikt z niej nie skorzysta.

  • http://superuser.com/questions/59465/is-it-possible-to-download-using-the-windows-command-line

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment