2012-02-24 12 views
5

Wiem, że protokół SSL ma wpływ na wydajność komunikacji HTTP pod względem szybkości, ale czy jest duża różnica w ilości przesyłanych danych?Czy SSL powoduje dużo większą przepustowość?

Oznacza to, że jeśli urządzenie mobilne płaci dużo za kb, czy jest duża różnica? Czy ktoś ma oszacowanie, ile różnicy?

Dzięki za pomoc!

Matt

+1

Możesz być także zainteresowany wdrożeniem niektórych opisanych tu strategii [tutaj] (http://stackoverflow.com/a/9250423/372643) (buforowanie w razie potrzeby, fałszywy start, wznowienie sesji, ...) – Bruno

Odpowiedz

9

Nie, nie ma wielkiej różnicy, ani w kategoriach „wydajność”, ani pod względem przepustowości.

According to Google, firma, z której można mieć nadzieję, jest niezawodnym źródłem informacji w sieciach o dużej skali, a obciążenie związane z przepustowością sieci wynosi mniej niż 2%.

5

Jak wskazał Borealid, narzut jest mały. Zazwyczaj. Dla przeciętnego żądania (które obejmuje pliki multimegabajtów).

Jeśli jednak masz do wywoływania coś podobnego do RESTful API, musisz upewnić się, że używane jest połączenie trwałe, w przeciwnym razie w przypadku małych ciał request SSL doda znaczny narzut. Nie mogę teraz podać dokładnych liczb (tylko dlatego, że różnią się one w zależności od rozmiaru certyfikatu i liczby certyfikatów w łańcuchu), ale jeśli musisz ustanowić sesję SSL, aby wysłać 200-bajtowe żądanie i otrzymać odpowiedź o wartości 2 Kb, SSL handshake może łatwo dodać kolejne 5-7 Kb, więc widzisz narzut.

+1

Uzgodnione Najgorszy scenariusz, jaki widziałem, dotyczy pytania o uwierzytelnianie za pomocą certyfikatu klienta z domyślnym magazynem zaufanych certyfikatów Java: komunikat 'CertificateRequest' zawiera listę nazw wyróżniających urzędu certyfikacji, które mogą sumować się do około 20 KB w zależności od tego, ile certyfikatów urzędów certyfikacji są powiązane (do pewnego stopnia bufory mogą nie być wystarczająco duże w niektórych implementacjach). Oczywiście w praktyce lista CA certyfikatów klienta powinna być ograniczona tylko do tych naprawdę potrzebnych. – Bruno

5

Właśnie wykonałem test za pomocą wireshark, pobierając plik 5-bajtowy z Amazon S3 przez http i https na iPada za pomocą prostego żądania NSURLConnection.

Dla http całkowity ruch wyniósł 1310 bajtów.

Dla https łączny ruch wynosił 7099 bajtów.

To było tylko dla pojedynczego pobrania w każdym przypadku i obejmuje cały ruch typu "back-and-the-wire" związany z żądaniem, w tym DNS (około 200 bajtów) i uzgadnianie TCP (około 400 bajtów dla przypadek http).

Oczywiście rzeczywiste sumy zmieniają się w zależności od długości adresu URL i konkretnego certyfikatu SSL; z pewnością możesz mieć tańsze nagłówki niż S3.

Teoretycznie, obciążenie przepustowości SSL dla pliku 1 MB powinno być w przybliżeniu takie samo jak 1-bajtowego pliku, tj. Około 5800 bajtów w powyższym przykładzie, ponieważ szyfrowanie nie powinno zwiększać rozmiaru danych przesyłanych poza wstępny certyfikat i wymiana kluczy. Tak więc dla dużych plików jest to nieistotne, ale dla małych plików może być znaczące, jak zauważył Eugene.