architetture di rete Internet e - Prado.it · 2018-03-21 · a UDP-based, stream-multiplexing,...
Transcript of architetture di rete Internet e - Prado.it · 2018-03-21 · a UDP-based, stream-multiplexing,...
Internet e architetture di
reteAntonio Prado
https://www.prado.it
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Internet: Sistemi autonomi e Governance08 Novembre 2017
Addio IPv422 novembre 2017
Benvenuto IPv629 novembre 2017
Architetture di instradamento a Internet: BGP06 dicembre 2017
Numeri e Nomi: DNS13 dicembre 2017
36 anni di e-mail: SMTP14 marzo 2018
La ragazza della porta ottanta: HTTP21 marzo 2018
Tutti sulle nuvole: servizi in CLOUD28 marzo 2018
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
La ragazza della porta ottanta: HTTP
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
TCP/UDP 80[Tim_Berners_Lee]
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Tim Berners-Lee, inventore del World Wide Web[RFC 1630, 1738, 1866, 1945, 2068, 2396, 2616, 3986 ]
URI
URLHTML
HTTP
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Hypertext Transfer Protocol -- HTTP/1.0[RFC 1945]
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
RFC 1945HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification reflects common usage of the protocol referred to as "HTTP/1.0".
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Hypertext Transfer Protocol -- HTTP/1.1[RFC 2616]
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Universal Resource IdentifierURI ASSOLUTOscheme://hostname[:port]/pathhttp://www.paperino.it:80/qui/quo/qua
URI RELATIVO/qui/qui/quo/qui/quo/qua
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Uniform Resource Locatorhttp_URL="http:""//"host[":"port][abs_path]
HTTP message typesHTTP messages consist of requests from client to server and responses from server to client.
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Il WEB server è un HTTP server
Protocollo a livello applicativo
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Domanda e Risposta1. Il client fa una domanda2. Il server risponde
Il protocollo HTTP supporta più scambi domanda/risposta su una singola sessione TCP
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Domanda e RispostaDomanda HTTP 1.0
Righe di testo (ASCII)
Fine riga con CRLF \r\n
Prima riga: Request-Line
Request-LineIntestazioniRiga vuotaContenuto
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Metodi nella domandaGET recupera informazioni indicate dalla URIHEAD recupera meta-informazioni sulla URIPOST invia informazioni alla URI e recupera il risultatoPUT Archivia informazioni nel posto nominato dalla URIDELETE rimuove l’entità indicata dalla URITRACE traccia HTTP inoltrato attraverso proxy, tunnel eccOPTIONS determina le capacità del server o le caratteristiche di una risorsa
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Telnet LAB
telnet as59715.net 80Trying 2a02:cdc5:9715:1:250:56ff:fe97:2298...Connected to as59715.net.Escape character is '^]'.GET / HTTP/1.1Host: as59715.net[CRLF]HTTP/1.1 302 FoundDate: Sat, 17 Mar 2018 14:53:16 GMTServer: Apache/2.4.23 (FreeBSD) OpenSSL/1.0.1e-freebsd PHP/5.4.45Location: https://as59715.net/Content-Length: 204Content-Type: text/html; charset=iso-8859-1
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head><title>302 Found</title></head><body><h1>Found</h1><p>The document has moved <a href="https://as59715.net/">here</a>.</p></body></html>
HTTP serverAntonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
HTTP server LABInstalla lighttpd
Redhat [e derivati] yum install lighttpdDebian [e derivati] apt-get install lighttpdFreeBSD pkg install lighttpd
Localizza e modifica il file lighttpd.conf
Redhat e Debian /etc/lighttpd/lighttpd.confFreeBSD /usr/local/etc/lighttpd/lighttpd.conf
Avvia il demone lighttpd
Redhat e Debian systemctl start lighttpd.serviceFreeBSD echo ‘lighttpd_enable=YES’ >> /etc/rc.conf && /usr/local/etc/rc.d/lighttpd start
A
B
CAntonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Installa lighttpd
Redhat [e derivati] yum install lighttpdDebian [e derivati] apt-get install lighttpdFreeBSD pkg install lighttpd
HTTP server LAB
Aapt-get install lighttpdReading package lists... DoneBuilding dependency tree Reading state information... DoneSuggested packages: rrdtool apache2-utilsThe following NEW packages will be installed: lighttpd0 upgraded, 1 newly installed, 0 to remove and 3 not upgraded.Need to get 0 B/227 kB of archives.After this operation, 915 kB of additional disk space will be used.Selecting previously unselected package lighttpd.(Reading database ... 203113 files and directories currently installed.)Preparing to unpack .../lighttpd_1.4.33-1+nmu2ubuntu2_amd64.deb ...Unpacking lighttpd (1.4.33-1+nmu2ubuntu2) ...Processing triggers for ufw (0.34~rc-0ubuntu2) ...Processing triggers for ureadahead (0.100.0-16) ...ureadahead will be reprofiled on next rebootProcessing triggers for man-db (2.6.7.1-1ubuntu1) ...Setting up lighttpd (1.4.33-1+nmu2ubuntu2) ... * Starting web server lighttpd
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
HTTP server LAB
Localizza e modifica il file lighttpd.conf
Redhat e Debian /etc/lighttpd/lighttpd.confFreeBSD /usr/local/etc/lighttpd/lighttpd.conf
server.document-root = "/var/www"server.upload-dirs = ( "/var/cache/lighttpd/uploads" )server.errorlog = "/var/log/lighttpd/error.log"server.pid-file = "/var/run/lighttpd.pid"server.username = "www-data"server.groupname = "www-data"server.port = 80
B
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
HTTP server LABAvvia il demone lighttpd
Redhat e Debian systemctl start lighttpd.serviceFreeBSD echo ‘lighttpd_enable=YES’ >> /etc/rc.conf && /usr/local/etc/rc.d/lighttpd start
Verifica che lighttpd stia ascoltando sulla porta TCP 80
netstat -anp|grep lighttpdtcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3893/lighttpd
CAntonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
telnet localhost 80Trying 127.0.0.1...Connected to localhost.Escape character is '^]'.GET / HTTP/1.1Host: localhost
Telnet LABHTTP/1.1 200 OKVary: Accept-EncodingContent-Type: text/htmlAccept-Ranges: bytesETag: "3446712510"Last-Modified: Sat, 17 Mar 2018 17:26:31 GMTContent-Length: 3568Date: Sat, 17 Mar 2018 17:29:10 GMTServer: lighttpd/1.4.48
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
elinks http://localhost
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
100 Continue101 Switching Protocols102 Processing
200 OK201 Created202 Accepted203 Non-authoritative Information204 No Content205 Reset Content206 Partial Content207 Multi-Status208 Already Reported226 IM Used
300 Multiple Choices301 Moved Permanently302 Found303 See Other304 Not Modified305 Use Proxy307 Temporary Redirect308 Permanent Redirect
1yz Informational
2yz Success
3yz Redirection
HTTP, codici di stato: 1yz, 2yz, 3yz
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
400 Bad Request401 Unauthorized402 Payment Required403 Forbidden404 Not Found405 Method Not Allowed406 Not Acceptable407 Proxy Authentication Required408 Request Timeout409 Conflict410 Gone411 Length Required412 Precondition Failed413 Payload Too Large414 Request-URI Too Long415 Unsupported Media Type416 Requested Range Not Satisfiable417 Expectation Failed418 I'm a teapot421 Misdirected Request422 Unprocessable Entity423 Locked424 Failed Dependency
HTTP, codici di stato: 4yz426 Upgrade Required428 Precondition Required429 Too Many Requests431 Request Header Fields Too Large444 Connection Closed Without Response451 Unavailable For Legal Reasons499 Client Closed Request
4yz Client error
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
HTTP, codici di stato: 5yz
5yz Server error
500 Internal Server Error501 Not Implemented502 Bad Gateway503 Service Unavailable504 Gateway Timeout505 HTTP Version Not Supported506 Variant Also Negotiates507 Insufficient Storage508 Loop Detected510 Not Extended511 Network Authentication Required599 Network Connect Timeout Error
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
HTTP over TLS[RFC 2818]
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
TCP/UDP 443[Kipp_E_B_Hickman]
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
HTTP/1.1 200 OKDate: Sat, 17 Mar 2018 14:55:35 GMTServer: Apache/2.4.23 (FreeBSD) OpenSSL/1.0.1e-freebsd PHP/5.4.45X-Powered-By: PHP/5.4.45Link: <https://as59715.net/wp-json/>; rel="https://api.w.org/"Transfer-Encoding: chunkedContent-Type: text/html; charset=UTF-8
openssl s_client -connect -crlf as59715.net:443CONNECTED(00000003)depth=1 /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3verify error:num=20:unable to get local issuer certificateverify return:0---Certificate chain 0 s:/CN=as59715.net i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 i:/O=Digital Signature Trust Co./CN=DST Root CA X3---[...]
GET / HTTP/1.1Host: as59715.net[CRLF]
Telnet LAB
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Hypertext Transfer Protocol Version 2 (HTTP/2)[RFC 7540]
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
RFC 7540HTTP/2 enables a more efficient use of network resources and a reduced perception of latency by introducing header field compression and allowing multiple concurrent exchanges on the same connection
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Live Testhttps://http2.akamai.com/demo
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Verificare il supporto di HTTP/2https://tools.keycdn.com/http2-test
nghttp -vn https://www.prado.it|grep protocolThe negotiated protocol: h2
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Brotli Compressed Data Format[RFC 7932]
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
BROTLIThis specification defines a lossless compressed data format that compresses data using a combination of the LZ77 algorithm and Huffman coding, with efficiency comparable to the best currently available general-purpose compression methods.
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
BROTLISupporto nei più diffusi browser
Applicability of the QUIC Transport Protocolhttps://datatracker.ietf.org/doc/draft-ietf-quic-applicability/
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
QUIC: Quick UDP Internet ConnectionThe QUIC working group will provide a standards-track specification for a UDP-based, stream-multiplexing, encrypted transport protocol, based on pre-standardization implementation and deployment experience, and generalizing the design described in draft-hamilton-quic-transport-protocol, draft-iyengar-quic-loss-recovery, draft-shade-quic-http2-mapping, and draft-thomson-quic-tls.
TCP/UDP 443[Kipp_E_B_Hickman]
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
QUIC: Quick UDP Internet ConnectionKey goals for QUIC are:- Minimizing connection establishment and overall transport latency for applications, starting with HTTP/2;- Providing multiplexing without head-of-line blocking;- Requiring only changes to path endpoints to enable deployment;- Enabling multipath and forward error correction extensions; and- Providing always-secure transport, using TLS 1.3 by default.
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
QUIC: Quick UDP Internet ConnectionQUIC tenta di ricostruire la semantica del TCP, come pure un po’ del modello di flusso di HTTP/2, sulla base di UDP.
Il progetto, come HTTP/2, è iniziato a Google (gQUIC) per poi essere recepito da IETF (iQUIC)
Google ha già implementato QUIC nel browser Chrome per i propri siti così che oggi rappresenta già il 7% circa dell’intero traffico Internet.
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
DNS Over HTTPShttps://datatracker.ietf.org/doc/draft-ietf-doh-dns-over-https/
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
DNS over HTTPSRendere standard le richieste e le risposte DNS che sono adatte per essere usate in HTTPS: questo consentirà l’uso del DNS in quelle circostanze dove altri metodi falliscono. Occorre ri-usare il più possibile i metodi HTTPS, i codici di errore e altra semantica.
L’obiettivo primario del lavoro su DoH è quello di sviluppare un meccanismo in grado di garantire riservatezza e connettività tra i client DNS e i risolutori ricorsivi dei nomi.
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
DNS over HTTPS
https://dns.google.comAntonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
The Transport Layer Security (TLS) Protocol Version 1.3https://datatracker.ietf.org/doc/draft-ietf-tls-tls13/
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
TLS 1.3Tra gli scopi principali del progetto:
- Sviluppare un modo per criptare il più possibile la fase di handshake così da ridurre la quanità di dati osservabile da eventuali malintenzionati.
- Sviluppare modalità per ridurre la latenza della fase di handshake che principalmente supporta le applicazioni basate su HTTP, tentando di limitare a uno il roundtrip necessario per un handshake completo e a zero i roundtrip necessari per gli handshake successivi.
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
TLS 1.3 e 0-RTT (zero round trip time resumption)Circa il 60% delle connessioni su Internet è generato da naviganti che visitano un sito per la prima volta o che lo rivisitano dopo un lungo periodo di tempo. TLS 1.3 accelera di molto queste connessioni.
Il rimanente 40% è di naviganti che hanno da poco visitato un sito e riattivano una connessione precedente. Per queste connessioni riattivate, lo standard TLS 1.3 è più sicuro ma non più veloce rispetto alle versioni precedenti.
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
TLS 1.3 e 0-RTT (zero round trip time resumption)Ecco che interviene 0-RTT, una tecnica che rende drasticamente più veloci le connessioni riattivate.
In questo modo l’esperienza di navigazione, soprattutto dalle reti mobili, diventa più veloce e scorrevole per quei siti che vengono visitati regolarmente.
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
TLS 1.3 e 0-RTT (zero round trip time resumption)Quando un browser scarica una pagina web in HTTPS per la prima volta, dietro le quinte si possono individuare 4 fasi:
1 Risoluzione del nome
2 Handshake TCP (1 roundtrip): il client invia un pacchetto SYN al server il quale risponde con un pacchetto ACK, dunque una
andata e un ritorno.
3 Handshake TLS (2 roundtrip): client e server si scambiano le chiavi di crittografia e stabiliscono una connessione criptata.
Con TLS 1.2 o precedenti ci sono due andata-e-ritorno.
4 HTTP (1 roundtrip): una volta stabilita la connessione TLS, il browser invia una richiesta HTTP criptata, per esempio un GET
per una URL. Il server procederà con una risposta HTTP contenente il codice HTML della pagina. A quel punto il browser
comincerà a visualizzarne il contenuto.
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
TLS 1.3 e 0-RTT (zero round trip time resumption)Dato che la fase del DNS può considerarsi istantanea, possiamo contare 4 andata-e-ritorno prima di poter visualizzare la pagina web.
Quando visitiamo una pagina già aperta recentemente, l’handshake TLS può accorciarsi da due andata-e-ritorno a una con la tecnica del ripristino della sessione TLS. Invece, con la tecnica 0-RTT, si può eliminare una ulteriore andata-e-ritorno nel 40% dei casi.
TLS 1.3 e 0-RTT (zero round trip time resumption)Ecco un riepilogo:
TLS 1.2 (e precedenti)Nuova connessione: 4 RTT + DNS Connessione ripresa: 3 RTT + DNS
TLS 1.3Nuova connessione: 3 RTT + DNS Connessione ripresa: 3 RTT + DNS
TLS 1.3 + 0-RTTNuova connessione: 3 RTT + DNS Connessione ripresa: 2 RTT + DNS
Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018
Questions?Antonio Prado - Internet e architetture di rete @ Università di Pescara, 21 marzo 2018