Przez długi czas zakładałem, że tak naprawdę nie jest możliwe pobranie uszkodzonego pliku przez http, o ile nie jest on uszkodzony na serwerze, a implementacja protokołu HTTP jest prawidłowa, co najprawdopodobniej dotyczy nowoczesnego oprogramowania głównego nurtu.
Więc zawsze zachichotałem, gdy zobaczyłem witrynę pobierania oferującą skrót md5 pliku, który udostępniają do pobrania. Nie widziałem wcześniej przypadku, w którym pobieram plik, jego rozmiar jest prawidłowy, ale treść nie.
Dzisiaj miałem pierwszy przypadek. Pobrałem plik ISO Ubuntu, próbowałem go zainstalować, nie powiodło się i po długich badaniach (po prostu nie mogłem uwierzyć, że przyczyną może być zepsute pobieranie) sprawdziłem MD5 i co wiesz, to było złe (rozmiar był poprawny). Więc ponownie go pobrałem i dostałem jeszcze jeden zły md5. Tylko przy moim trzecim pobraniu md5 było prawidłowe.
Więc moje pytanie brzmi: czy w zasadzie możliwe jest uzyskanie uszkodzonego pobierania przez HTTP, przy założeniu, że implementacja jest poprawna, transfer został zakończony pomyślnie i plik jest poprawny na serwerze. Jeśli to możliwe, to jak to się może stać?
Odpowiedzi:
Tak, jest to możliwe, szczególnie przy słabej jakości połączeniach internetowych - zwykle bezprzewodowych, ale niektóre połączenia przewodowe (takie jak to, które posiadam) mają również wysoki poziom błędów przy dużych prędkościach.
Protokół HTTP nie zawiera żadnych przepisów zapewniających integralność danych. W warstwie transportowej protokół TCP wykrywa błędy za pomocą sumy kontrolnej, ale nie jest bardzo niezawodny .
Istnieje inny powód, dla którego udostępnia się skróty lub podpisy cyfrowe. Często rzeczywiste pliki są dystrybuowane na wiele serwerów lustrzanych, co nie gwarantuje 100% bezpieczeństwa. Jeśli nie ma hasha ani podpisu do weryfikacji, ktoś z dostępem do kopii lustrzanej (niekoniecznie uzasadniony) mógłby zastąpić pliki i pozostać niewykrytym, bez konieczności włamania się na zupełnie inny serwer, na którym hostowana jest strona internetowa.
Możesz uzyskać automatyczną weryfikację plików, jeśli pobierasz Ubuntu przez BitTorrent zamiast HTTP. (Każdy element jest weryfikowany w czasie pobierania, więc nigdy nie musisz ponownie pobierać całego.)
źródło
Jak powiedział Grawity, jest to możliwe, ale dodatkowo zauważyłem:
Nawet przy stabilnych połączeniach internetowych pobieranie może zakończyć się wcześniej bez jakiegokolwiek uzasadnionego powodu - może się tak zdarzyć.
A co najważniejsze, jeśli masz złą pamięć, możliwe jest, że pobieranie buforuje się w pamięci przed zapisaniem na dysk, a ponieważ pamięć jest zła, zapisuje plik niepoprawnie. Jeśli ciągle masz złe pliki do pobrania, jest to bardzo prawdopodobne.
źródło