Słownik

Pliki, pobieranie i przesyłanie

Większość tego, co wydaje się arbitralne w przypadku plików na iPhonie, wynika z jednej zasady dotyczącej izolacji, a większość tego, co sprawia, że pobieranie jest niezawodne, wynika z jednej funkcji protokołu HTTP. Są to oba elementy oraz sposoby przesyłania plików z jednego urządzenia na drugie.

Piaskownica

Zasada, że każda aplikacja widzi tylko swoją własną pamięć. Właśnie dlatego jedna aplikacja nie może otwierać plików pobranych przez inną i dlatego informacja „plik znajduje się obok filmu” nie jest dostępna w systemie iOS.

Każda aplikacja dostaje prywatny katalog i żadnego wglądu w cudzy. Pliki przemieszczają się między aplikacjami tylko przez świadome działania — arkusz udostępniania, wybieranie dokumentu, przeciągnięcie — a każde z nich to decyzja podjęta przez osobę, a nie coś, co aplikacja po prostu sobie wzięła.

Koszt pojawia się w drobnych miejscach. Odtwarzacze na komputerze automatycznie znajdują plik film.srt obok film.mkv; na iOS nie ma czegoś takiego jak „obok”, więc plik z napisami trzeba przekazać celowo, a to aplikacja musi być tym, co zapamiętuje to powiązanie.

Zobacz też: Grupa aplikacjiZakładka o zakresie zabezpieczeń

Grupa aplikacji

Wspólny kontener, który mogą otworzyć dwie aplikacje tego samego programisty — jedyne zatwierdzone pęknięcie w piaskownicy. W ten sposób rozszerzenie udostępniania przekazuje plik aplikacji, do której należy.

Rozszerzenie udostępniania to osobny program, tylko z pozoru będący częścią aplikacji, do której zdaje się należeć — ma własną piaskownicę i bardzo krótkie życie. Nie może zapisywać w pamięci głównej aplikacji.

Zapisuje więc w kontenerze, który obie strony mogą widzieć, a aplikacja opróżnia ten kontener przy następnym uruchomieniu. Nic nie przekracza granicy między deweloperami i nic nie przechodzi bez wyraźnego dotknięcia.

Zobacz też: Piaskownica

Zakładka o zakresie zabezpieczeń

Token, który zapamiętuje uprawnienia do folderu poza piaskownicą — dysk zewnętrzny, folder w iCloud — dzięki czemu aplikacja może go później otworzyć ponownie bez ponownego pytania.

Gdy wybierasz lokalizację przez systemowy selektor plików, przyznane uprawnienie dotyczy tylko tej chwili. Zakładka zachowuje je między uruchomieniami, a aplikacja musi wyraźnie rozpocząć i zakończyć korzystanie z dostępu, który ta zakładka reprezentuje.

To dzięki niej można przeglądać zewnętrzny dysk SSD bez kopiowania czegokolwiek do środka, i jest ona ograniczona dokładnie do tego, co wybrałeś — zakładka do jednego folderu nic nie mówi o jego sąsiedzie.

Zobacz też: Piaskownica

Żądanie zakresu

Pytanie do serwera o określony fragment pliku — od 5 000 000 do 5 999 999 bajtów — zamiast o całość. To właśnie sprawia, że pobieranie można wznowić, i pozwala kilku połączeniom pobrać jeden plik naraz.

Serwer obsługujący zakresy odpowiada kodem 206 Partial Content i żądanym fragmentem. Ten, który tego nie robi, odpowiada kodem 200 i wysyła wszystko od początku, co jest różnicą między wznowieniem pobierania a rozpoczęciem go od nowa.

Wszystko, co interesujące w silniku pobierania, opiera się na tej jednej funkcji HTTP. Bez niej nie ma wznowienia po zerwanym połączeniu, nie ma wznowienia po restarcie i nie ma sposobu na użycie więcej niż jednego połączenia.

Zobacz też: Możliwość wznowienia pobieraniaPołączenia równoległe

Możliwość wznowienia pobierania

Transfer, który kontynuuje się dokładnie od miejsca, w którym został zatrzymany, a nie rozpoczyna się od nowa, poprzez zapisanie liczby zatwierdzonych bajtów i zapytanie o resztę.

Wymóg jest taki, że zapisana liczba nigdy nie jest optymistyczna. Bajt policzony jako zapisany, a wciąż leżący w buforze, staje się dziurą w pliku, gdy aplikacja zostanie zamknięta — a dziura w środku filmu to uszkodzenie, które ujawnia się dopiero po godzinie oglądania.

Dlatego licznik musi podążać za zapisem na dysk, a nie za odczytem z sieci, i dlatego każde przekazanie między transferem na pierwszym planie a transferem w tle musi zgadzać się co do jednej liczby.

Zobacz też: Żądanie zakresuTransfer w tle

Połączenia równoległe

wiele połączeń, pobieranie fragmentaryczne

Dzielenie jednego pliku na zakresy i pobieranie kilku naraz. Pomaga, gdy pojedyncze połączenie jest ograniczone, i nie robi nic, gdy wąskim gardłem jest Twoja własna linia.

Serwer ograniczający prędkość każdego połączenia często da się skłonić do dostarczenia więcej danych łącznie przez kilka połączeń naraz. Właśnie stąd bierze się reputacja pobierania wielopołączeniowego.

To nie magia i często jest źle rozumiane. Jeśli Twoje łącze jest już nasycone, więcej połączeń po prostu dzieli tę samą przepustowość na mniejsze kawałki i dodaje narzut. Niektóre serwery odrzucają też lub ograniczają wiele żądań z jednego adresu.

Zobacz też: Żądanie zakresuMożliwość wznowienia pobierania

Transfer w tle

Pobieranie przekazywane do systemu operacyjnego, aby było kontynuowane po zamknięciu aplikacji. System decyduje o czasie, co jest ceną za to, że transfer w ogóle jest kontynuowany.

Aplikacja na iOS przestaje działać wkrótce po tym, jak ją opuścisz. Transfer przekazany systemowej usłudze w tle przetrwa to, przetrwa zamknięcie aplikacji i wznowi się po restarcie.

To, co się traci, to kontrola. System grupuje te transfery według własnej oceny stanu baterii i warunków sieciowych, więc pobieranie w tle może pauzować i wznawiać się w sposób, w jaki nie robiłoby tego w aplikacji na pierwszym planie — ale i tak się skończy.

Zobacz też: Możliwość wznowienia pobieraniaPiaskownica

WebDAV

Rozszerzenie HTTP, które zamienia serwer WWW w serwer plików: listowanie, odczyt, zapis, przenoszenie, usuwanie. Tym językiem posługują się Nextcloud i ownCloud, i to oferuje większość urządzeń NAS.

Ponieważ pod spodem to HTTP, WebDAV działa przez tę samą infrastrukturę co wszystko inne w sieci — bez specjalnych portów, bez specjalnego protokołu klienta — dlatego przetrwał, podczas gdy bardziej rozbudowane protokoły plikowe nie.

Dla kogoś, kto woli nie umieszczać plików w chmurze jakiejś firmy, to praktyczna alternatywa: własny serwer, własne dane logowania, zwykłe standardy.

Zobacz też: Przechowywanie w chmurze

Przechowywanie w chmurze

Pliki przechowywane na serwerze innej osoby, do których można uzyskać dostęp za pośrednictwem interfejsu API tej firmy — Dropbox, OneDrive, Box, pCloud. Każdy ma swój własny interfejs, dlatego aplikacje obsługują je pojedynczo.

Nie ma uniwersalnego protokołu chmurowego. Każdy dostawca zaprojektował własne API i własny sposób logowania, więc dodanie dostawcy do aplikacji to prawdziwa praca, a nie wpis konfiguracyjny.

Logowanie odbywa się zwykle przez OAuth, co oznacza, że aplikacja nigdy nie widzi hasła: dostawca uwierzytelnia osobę i zwraca token, który można w dowolnej chwili unieważnić z poziomu ustawień dostawcy.

Zobacz też: WebDAV

WebRTC

Standard bezpośredniego łączenia dwóch urządzeń, bez serwera między nimi po nawiązaniu połączenia. To właśnie ten mechanizm wykorzystuje transfer między urządzeniami, żeby przenieść plik na drugi koniec pokoju.

Mały serwer sygnalizacyjny przedstawia sobie dwa urządzenia — do tego właśnie służy sześciocyfrowy kod — a potem się wycofuje. Plik podróżuje bezpośrednio między urządzeniami i nigdzie po drodze nie jest przechowywany.

W tej samej sieci działa tak szybko, jak pozwala ta sieć. W internecie zależy to od tego, czy obie strony da się połączyć bezpośrednio, i to właśnie wtedy połączenia czasem zawodzą z powodów, których żadne z urządzeń nie widzi.

Zobacz też: Lokalny serwer HTTP

Lokalny serwer HTTP

Aplikacja odpowiadająca na żądania internetowe w Twojej sieci, dzięki czemu przeglądarka internetowa na Twoim komputerze może otworzyć stronę obsługiwaną przez Twój telefon. Tak działa transfer Wi-Fi, bez kabla i bez konta.

Telefon pokazuje adres; komputer go otwiera; stronę, którą dostaje, serwuje sam telefon. Pliki przemieszczają się bezpośrednio przez sieć lokalną i nigdy jej nie opuszczają.

Ponieważ każdy w tej samej sieci może dotrzeć pod ten adres, potrzebna jest blokada — kod do wpisania, uprawnienia przyznawane dla każdej operacji osobno, i te niszczące wyłączone, dopóki nie zostaną świadomie włączone.

Zobacz też: WebRTC

Pozostałe tematy