2013-08-07 11 views
5

Próba określenia, czy użytkownik faktycznie pobrał plik wykonywalny ze strony internetowej. Sprawdziłem pcap i widzę, że pole Content-Length = 784,536, ale serwer-> User ma 430,380 bajtów. Mówi mi to, że użytkownik nie pobrał w pełni pliku. Sam też pobrałem plik i widzę, że ma on 766 KB. Czy jest możliwe, że wartość długości treści na podstawie nagłówka HTTP nie będzie równa EQUAL DO rozmiaru pliku tego pliku EXE, jeśli zostanie pobrany (lokalny rozmiar pliku)? Czy to jest poprawne?Długość zawartości HTTP jest mniejsza niż wielkość bajtu pliku, czy w pełni została pobrana?

Packet Data Capture (nie mogę dodawać zdjęcia)

GET /ChromasLite211Setup.exe HTTP/1.1 
Host: www.technelysium.com.au 
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:17.0) Firefox/17.0 
Accept: text/html, application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us 
Accept-Enconding: gzip, deflate 
Connection: keep-alive 
Referrer: http://technelysium.com.au/ 

HTTP/1.1 200 OK 
Date: Thu, 01 Aug 2013 17:28:17 GMT 
Server: Apache 
Last-Modified: Mon, 15 Apr 2013 08:29:57 GMT 
Accept-Ranges: bytes 
Content-Length: 784536 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: application/x-msdownload 

[email protected]!..L..This program must be run under Win32 


Entire Conversation (430722 bytes) 
Users IP -> Server IP (342 bytes) 
Server IP -> Users IP (430380) 

Kiedy pobrać plik ze strony pokazuje jak "Binary File (766 KB)"

+0

Jaki jest rozmiar pliku w bajtach? Pole Content-Length jest obliczane w oktetach (bajtach). –

Odpowiedz

6

Konwersja bajtów to Kilobytes

784,536/1024 = 766.14 
+0

Dobrze. Więc kiedy sam ściągam plik, widzę, że to 766 KB. Ale jak to się dzieje, że pcap nie pokazuje całej rozmowy = długość treści? Czy to znaczy, że nie zostało pobrane? Czy rozmiar pliku musi odpowiadać długości treści? – user2661503

+1

Nie jestem pewien, czy rozumiem twoje pytanie ... Długość zawartości jest wskaźnikiem, jak duża odpowiedź (plik) można oczekiwać od serwera ... Nie ma wpływu na to, czy pobieranie zostało pomyślnie przesłane ... Niektóre serwery nie odpowiadają nawet długością treści lub ustawioną długością treści na zero (dlatego podczas pobierania czasami widzimy czas pobierania/status jako nieznany, ponieważ przeglądarka nie ma możliwości dowiedzenia się, jak duży plik otrzymuje. .) –

+0

Tak, rozmiar przesyłanego pliku powinien być dokładnie taki sam jak rozmiar w polu Content-Length. Jest kilka rzeczy, które mogą go zmienić, tj .: jeśli jest wysyłany w kodowaniu gzip, to liczba przesłanych bajtów nie będzie równa wynikowi rozpakowanego rozmiaru pliku (oczywiście), ale nagłówek Content-Length MUSI pokazać dokładnie liczba bajtów w treści odpowiedzi HTTP. Jeśli nie ma nagłówka Content-Length, może to być użycie czegoś takiego jak kodowanie w trybie chunked. Nagłówek Content-Length: 0 oznacza, że ​​MUSI zostać wysłanych 0 bajtów. – Kylar

0

Nie. Użytkownik nie pobrał wszystkich bajtów.

Jeśli serwer wysyła nagłówek Content-Length, jest to dokładnie tyle bajtów treści, które zamierza wysłać jako treść odpowiedzi HTTP. Jeśli wysłano mniej niż tę liczbę, to coś się stało (Klient przerwał połączenie, Klient przekroczył limit czasu itd.).

Powiązane problemy