HTTP od zera do bohatera
-
Upload
hordetechnology -
Category
Technology
-
view
213 -
download
4
Transcript of HTTP od zera do bohatera
od zera do bohateraMarek StawiaszPaweł Apanasewicz
O czym będziemy mówić
HTTPHTTPS, WebDAV, SPDY
DNT, HSTS, HTLSAJAX, Same Origin Policy, CORS
1. Hypertext Transfer Protocol
2. protokół warstwy aplikacji według modelu OSI
3. bazuje na TCP
4. nasłuchuje na porcie 80 (wersja szyfrowana na porcie 443)
5. jest protokołem tekstowym
6. jest protokołem bezstanowym
OK, więc co to takiego ten HTTP?
Pierwszy dokument o HTTPukazał się w 1991 roku
Czyli 21 lat temu!
To prehistoria jeśli chodziInternet
A życie wtedy było dużo prostsze
Dawno, dawno temu...
HTTP w pierwszej swojej wersji 0.9 posiadał tylko jedną metodę – GET*
* daj mi ten dokument
REWOLUCJA ROZPOCZĘŁA SIĘ
Jak mówi klient (przeglądarka)?
A w praktyce
GET /index.html HTTP/1.1Host: www.example.comUser-Agent: Mozilla/5 (X11;Ubuntu;Linux) Firefox 16Cookie: ala=makotaAccept: text/htmlAccept-Language: en-US
Jak mówi serwer?
A w praktyce
HTTP/1.1 200 OKDate: Mon, 23 May 2005 22:38:34 GMTServer: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)Etag: "3f80f-1b6-3e1cb03b"Content-Length: 438Connection: closeContent-Type: text/html; charset=UTF-8
Czterysta trzydzieści osiem bajtów odpowiedzi...
Najczęściej spotykane kody odpowiedzi serwera
A w praktyce
200 OK201 Created202 Accepted204 No Content206 Partial Content301 Moved Permanently304 Not Modified400 Bad Request403 Forbidden405 Method Not Allowed500 Interal Server Error
404 Not Found404 Not Found
Co jeszcze może HTTP:
A w praktyce
- pobierać dokument - GET- przesyłać dane - POST- zapytać o nagłówki - HEAD- przesyłać pliki na serwer - PUT- kasować pliki na serwerze - DELETE- spytać serwer o możliwości - OPTIONSi inne: TRACE, CONNECT
Siła drzemie... w nagłówkach
A w praktyce
w standardzie HTTP 1.1 otrzymujemy:31 nagłówków zapytania34 nagłówków odpowiedzi
dodatkowo poza standardem:7 powszechnie stosowanych nagłówków zapytania5 powszechnie stosowanych nagłówków odpowiedzi
Siła drzemie... w nagłówkach
A w praktyce
Serwer Klient
Server Host
Date User-Agent
Expires Accept-Language
Vary Accept-Encoding
Content-Language Accept
Content-Encoding Referer
Content-Type Set-Cookie
Location X-Forwarded-For
Cookie
Cache-Control
Siła drzemie... w nagłówkach
A w praktyce
X-Powered-By: UnicornsX-Powered-By: Rats in your basementX-Powered-By: Elves
X-Recruitng: Like HTTP headers? Come write ours: booking.com/jobsX-Recruiting: If you’re reading this, maybe you should be working at Zappos instead. Check out jobs.zappos.com
BEZPIECZEŃSTWO
- autoryzacja BASIC i DIGEST- protokół SSL- DNT (Do Not Track)- HSPS- Same Origin Policy + CORS
Autoryzacja BASIC
BEZPIECZEŃSTWO
Serwer:WWW-Authenticate: Basic realm="you shall not pass!"
Klient:Authorization: Basic QWxhZGluOnNlc2FtIG9wZW4=
Autoryzacja DIGEST
BEZPIECZEŃSTWO
SERWER:WWW-Authenticate: Digest realm="[email protected]",qop="auth,auth-int", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",opaque="5ccc069c403ebaf9f0171e9517f40e41"
KLIENT:Authorization: Digest username="Mufasa",realm="[email protected]",nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",uri="/dir/index.html", qop=auth, nc=00000001, cnonce="0a4f113b",response="6629fae49393a05397450978507c4ef1",opaque="5ccc069c403ebaf9f0171e9517f40e41"
Protokół SSL
BEZPIECZEŃSTWO
HSTS – HTTP Strict Transport Security
BEZPIECZEŃSTWO
Strict-Transport-Security: max-age=31536000; includeSubDomains
ALE:- nagłówek ten musi zostać przesłany poprzez HTTPS z zaufanym certyfikatem inaczej MUSI zostać zignorowany!
- działa wszędzie już od dawna Firefox, Chrome, Opera... tylko nie w Internet Explorerze!
DNT: Do Not Track
BEZPIECZEŃSTWO
DNT: 1
Obsługiwany przez WSZYSTKIE przeglądarki!
Użytkownik ŚWIADOMIE musi zaznaczyć iż nie chce być śledzony.
Internet Explorer 10 łamie tą zasadę, wysyła DNT domyślnie!
CORS: Cross Origin Resource Sharing
BEZPIECZEŃSTWO
Pomaga w problemach z regułą Same Origin Policy w wywołaniach XHR:
Klient:Origin: http://www.serwer.com
Serwer:Access-Control-Allow-Origin: http://serwer.com/
CORS: Cross Origin Resource Sharing
BEZPIECZEŃSTWO
Domyślnie nie są przesyłane informacje uwierzytelniające (ciasteczka, autoryzacja, certyfikaty SSL)
Access-Control-Allow-Credentials: true
W Internet Explorer z CORS korzystamy poprzez obiekt XDomainRequest. IE nie daje JAKIEJKOLWIEK możliwości przesyłania informacji uwierzytelniających.
WYDAJNOŚĆ
- Keep-Alive- Wiele połączeń równolegle- Cache- Pobieranie fragmentów plików- HTLS
- SPDY
Keep-Alive, wiele połączeń równolegle
WYDAJNOŚĆ
Connection: close
Connection: keep-alive
Wiele połączeń TCP jednocześnie!
Trik: Ajax - Long-Pooling!
Cache
WYDAJNOŚĆ
Cache-control: public, private, no-cache, no-store, max-age, must-revalidate, proxy-revalidate
ETag: "686897696a7c876b7e"If-None-Match: "686897696a7c876b7e"304 Not Modified
Nagłówek ETag może zostać wykorzystany do śledzenia użytkownika!
Pobieranie fragmentów plików
WYDAJNOŚĆ
Serwer:Accept-Ranges: bytes
Klient:Range: początek-koniec
Serwer:Content-Range: początek-koniec/ogółem
206 Partial Content416 Request Range Not Satisfiable
HTLS – HTTP Live Streaming
WYDAJNOŚĆ
Technologia opracowana przez Applei zaimplementowana w QuickTime oraz iPhone.
Plik do przesłania dzielony jest na wiele małychczęści.
Części te przesyłane są na samym początku transmisji w pliku m3u8.
SPDY
WYDAJNOŚĆ
SPDY
WYDAJNOŚĆ
- maksymalne wykorzystania połączenia TCP- połączenie szyfrowane- całość połączenia jest kompresowana- jednym połączeniem przesyłanych jest wiele zasobów jednocześnie- priorytety- server push- server hint
SPDY
WYDAJNOŚĆ
Zmniejszenie ruchu wychodzącego o 40%
Wzrost wydajności od 30% do 55%
Użycie mniejszej ilości połączeń TCP
Internet Explorer... jak zwykle...
Opera, Chrome, Firefox... też mobilne!
WebDAV – Web Distributed Authoring & Versioning
POZA PRZEGLĄDARKĄ
Nowe komendy:- PROPFIND- PROPPATCH- MKCOL- COPY- MOVE- LOCK- UNLOCK
WebDAV – Web Distributed Authoring & Versioning
POZA PRZEGLĄDARKĄ
Daje możliwości praktycznie pełnego systemu plików poprzez protokół HTTP!
W Microsoft Windows już od wersji 98 jako Web Folders.
W systemach Linux czy Mac OSX możliwe jest podmontowanie zasobów WebDAV.
Wykorzystywany przez SVN.
Web Services
POZA PRZEGLĄDARKĄ
Usługi świadczone poprzez sieć, zazwyczaj korzystając z protokołu HTTP.
Często zdefiniowane za pomocą języka opisu usługi (WSDL)
Najpopularniejsze metody wykorzystania:- SOAP - simple object access protocol- XML-RPC - XML Remote Procedure Call
LINUX
PRZYKŁADY
# wget http://www.horde-technology.pl
# curl http://www.horde-technology.pl
PHP
PRZYKŁADY
$request = "GET {$path} HTTP/1.1\r\nHost: {$host}\r\n\r\n";
$f = fsockopen($host, 80, $errno, $errstr, 30);
fwrite($f, $requestData);
while (!feof($f)) { echo fgets($f, 128);}
fclose($f);
BASH
PRZYKŁADY
#!/bin/bash
exec 5<>/dev/tcp/www.horde-technology.pl/80
cat <&5 &
printf "GET / HTTP/1.0\r\n\r\n" >&5
SPDY w NODE.js
PRZYKŁADY
npm install spdy
var spdy = require('spdy'), Options = {};
var server = spdy.createServer(options, app);
server.listen(443);