‫Istruttore: Quindi il nostro
‫obiettivo è sviluppare applicazioni di back-end
‫con Node e quindi è probabilmente una
‫buona idea avere una comprensione di base di come funziona
‫effettivamente il web dietro le quinte, giusto?
‫E questa sarà una lezione davvero completa.
‫E quindi tuffiamoci dentro.
‫Ora, per capire meglio come funziona
‫effettivamente il web, iniziamo
‫ponendoci la domanda: cosa succede
‫effettivamente ogni volta che digitiamo
‫un URL nel
‫nostro browser per aprire una nuova pagina web?
‫O ogni volta che richiediamo dati da qualche API?
‫Che in realtà è abbastanza lo
‫stesso e quindi concentriamoci su un semplice esempio di sito web qui.
‫Bene, la risposta più semplice è che il nostro
‫browser, chiamato anche client, invia una richiesta al server in
‫cui è ospitata la pagina web.
‫E il server invierà una risposta,
‫che conterrà la pagina web che abbiamo appena richiesto.
‫E questo processo è chiamato modello richiesta-risposta
‫o anche architettura client-server.
‫E tutto ciò di
‫cui parleremo in questa sezione ruota attorno a questo concetto fondamentale.
‫Ok, ma ora facciamo un ulteriore passo avanti perché
‫probabilmente non è una novità per te
‫a questo punto, giusto?
‫Quindi diciamo che vogliamo accedere a
‫Google Maps scrivendo google. com/maps nel nostro browser come URL.
‫E ogni URL ottiene un HTTP o HTTPS, che
‫è per il protocollo che verrà
‫utilizzato sulla connessione.
‫E ne parleremo un po' più avanti in questo video.
‫Quindi abbiamo il nome di dominio qui,
‫che è google. com in
‫questo caso, e anche dopo una barra, la cosiddetta
‫risorsa a cui
‫accederemo, e in questo caso /maps.
‫Ora quello che devi sapere qui è che il nome
‫di dominio come google. com non è in realtà
‫il vero indirizzo del server a cui stiamo cercando di
‫accedere, ma solo un bel nome che è facile da memorizzare per noi.
‫Quindi abbiamo bisogno di un modo per convertire il nome
‫di dominio nell'indirizzo reale del
‫server e ciò avviene tramite un DNS.
‫Quindi DNS sta per Domain Name Server, che
‫sono server speciali che sono fondamentalmente come
‫le rubriche telefoniche di Internet.
‫Quindi il primo passo che avviene quando apriamo un sito
‫web è che il browser fa una richiesta a un
‫DNS e questo server speciale abbinerà semplicemente
‫l'indirizzo web che abbiamo digitato nel browser
‫all'indirizzo IP reale del server.
‫Va bene.
‫E in realtà questo
‫avviene tramite il tuo provider di servizi Internet o ISP, ma
‫i dettagli completi non hanno molta importanza per noi.
‫Quello che devi ricordare da
‫questa parte è che il dominio non è il
‫vero indirizzo e che un DNS lo convertirà in quel vero indirizzo IP,
‫che un browser può quindi chiamare dopo essere stato rispedito
‫al nostro browser.
‫Ecco come appare l'indirizzo reale,
‫quindi ha ancora il protocollo, ma poi arriva l'indirizzo IP.
‫E anche la porta a cui abbiamo avuto accesso sul server.
‫E il numero di porta serve solo
‫per identificare un servizio specifico in esecuzione su un
‫server e quindi puoi pensarlo come un sottoindirizzo.
‫Ricorda come abbiamo ascoltato la porta 8000
‫sul nostro server web quando l'abbiamo impostata nell'intersezione che è esattamente
‫quella che è questa porta.
‫Inoltre, tieni presente che il numero di porta non ha
‫nulla a che fare con la risorsa di Google Maps
‫a cui vogliamo accedere.
‫Quella risorsa verrà effettivamente inviata
‫nella richiesta HTTP come vedremo tra un momento.
‫Ok, e questo conclude il primo passo.
‫Quindi, una volta che abbiamo il vero
‫indirizzo web, viene stabilita una connessione socket TCP
‫tra il browser e il
‫server, che ora sono finalmente connessi.
‫E questa connessione viene in genere mantenuta attiva
‫per tutto il tempo necessario per trasferire
‫tutti i file del sito web.
‫Ora, quali sono i nostri TCP e IP?
‫Bene, TCP è il protocollo di controllo della trasmissione e
‫IP è il protocollo Internet
‫e insieme sono protocolli di comunicazione che
‫definiscono esattamente come i dati viaggiano attraverso il web.
‫Quindi sono
‫fondamentalmente il sistema di controllo fondamentale di
‫Internet, perché, ancora una volta, sono quelli che stabiliscono le
‫regole su come i dati si muovono su Internet.
‫E non preoccuparti, impareremo qualcosa in più su TCP/IP più
‫avanti in questo video.
‫Comunque, ora è il momento di fare finalmente la nostra richiesta.
‫E la richiesta che facciamo è
‫una richiesta HTTP dove HTTP sta per HyperText Transfer Protocol.
‫Quindi, dopo TCP/IP, HTTP è un altro protocollo di comunicazione.
‫E tra l'altro, un protocollo di comunicazione è
‫semplicemente un sistema di regole
‫che consente a due o più parti di comunicare.
‫E nel caso di HTTP, è solo un protocollo che
‫consente a client e server Web di comunicare
‫inviando richieste e messaggi di risposta dal
‫client al server e viceversa.
‫Ora, un messaggio di richiesta sarà simile a questo.
‫Quindi l'inizio del messaggio è la parte
‫più importante chiamata riga iniziale, che contiene il metodo HTTP
‫utilizzato nella richiesta,
‫quindi la destinazione della richiesta e la versione HTTP.
‫Quindi, riguardo ai metodi HTTP, ce ne sono molti disponibili,
‫ma i più importanti sono
‫ottenere semplicemente per richiedere dati, postare per inviare dati e
‫mettere e patchare per modificare sostanzialmente i dati.
‫Quindi vedi una richiesta HTTP al server non
‫solo per ottenere dati, ma possiamo anche inviare dati.
‫Va bene?
‫Ora per favore non preoccuparti se tutto questo suona un po'
‫troppo per te a questo punto.
‫Ovviamente useremo queste cose per
‫il resto del corso, che è
‫in realtà l'intera ragione per cui te lo sto dicendo.
‫Ad ogni modo, per quanto riguarda l'obiettivo
‫della richiesta, è qui che si pensa che il server
‫voglia accedere alla risorsa delle mappe in questo esempio.
‫Ricordati che?
‫Quindi avevamo /maps nel nostro URL e ora viene inviato
‫come destinazione nella richiesta HTTP in
‫modo che il server possa quindi capire cosa farne.
‫E se questo è vuoto, quindi se fosse solo una barra, in
‫pratica, allora accederemmo alla radice del sito
‫Web che sarebbe solo google. com in questo esempio.
‫Quindi la parte successiva della richiesta sono le intestazioni della
‫richiesta che sono solo alcune informazioni
‫che inviamo sulla richiesta
‫stessa, e ci sono tonnellate di intestazioni diverse
‫disponibili come quale browser viene utilizzato per
‫effettuare la richiesta, a che ora, la lingua dell'utente e molti, molti altri.
‫Infine, nel caso in cui stiamo inviando dati al
‫server, ci sarà anche un corpo
‫di richiesta contenente quei dati, ad esempio provenienti da un form HTML.
‫Quindi questa è la richiesta HTTP.
‫Ora, ovviamente, non siamo
‫noi sviluppatori che scriviamo manualmente queste
‫richieste, ma è comunque estremamente importante che
‫tu capisca che aspetto hanno una richiesta HTTP e anche
‫una risposta perché lavorerai molto con loro, ok?
‫Inoltre, voglio menzionare che c'è anche HTTPS come
‫probabilmente saprai.
‫E la differenza principale tra HTTP e HTTPS è
‫che HTTPS è crittografato utilizzando TLS o SSL, che sono
‫ancora altri protocolli ma
‫non ti annoierò con questi.
‫Ma oltre a questa crittografia aggiuntiva,
‫la logica tra le richieste e le risposte HTTP
‫si applica ancora a HTTPS.
‫Bene, quindi la nostra richiesta ora raggiunge il server, che lavorerà
‫su di esso finché non avrà il nostro sito Web
‫pronto per essere rispedito.
‫E lo invierà indietro utilizzando, come puoi
‫immaginare, una risposta HTTP.
‫E il messaggio di risposta HTTP in realtà
‫sembra abbastanza simile alla richiesta.
‫Così anche con una linea di partenza, intestazioni e un corpo.
‫La linea di partenza ha, oltre alla versione HTTP, un
‫codice di stato e un messaggio.
‫Quindi, in sostanza, per far sapere al
‫cliente se la richiesta è andata a buon fine o meno.
‫Questo 200, ad esempio, significa ok e
‫quello che tutti conoscono è il codice di stato 404
‫che significa non trovato.
‫E quindi è da qui che proviene questo
‫codice 404 che già conoscevi.
‫Quindi le intestazioni della risposta o le informazioni
‫sulla risposta stessa.
‫Quindi, proprio come prima, ce ne sono un sacco
‫disponibili e possiamo anche creare le nostre intestazioni.
‫Ora, la differenza delle intestazioni di
‫risposta è che in realtà è lo sviluppatore
‫back-end come te che le specifica e le rimanda nella risposta.
‫Va bene.
‫Infine, l'ultima parte della risposta è, ancora
‫una volta, il corpo, che è effettivamente presente nella maggior
‫parte delle risposte.
‫Ed è anche lo sviluppatore che invia specificamente
‫il corpo nella risposta.
‫E in realtà l'abbiamo già fatto all'incrocio
‫usando la risposta. fine, ricordi?
‫E il corpo dovrebbe di solito contenere l'HTML del sito
‫web che abbiamo richiesto o, ad esempio, i dati JSON
‫che ritornano da un'API o qualcosa del genere.
‫Quindi abbiamo parlato in dettaglio
‫delle parti più importanti
‫qui, che sono la richiesta HTTP e la risposta.
‫Ma nel nostro esempio immaginario, abbiamo fatto solo una
‫richiesta a Google. com e ho ricevuto una risposta.
‫Tuttavia, se stiamo cercando di accedere a un
‫sito Web, ci saranno molte, molte più richieste e risposte.
‫E questo perché quando facciamo la prima richiesta,
‫tutto ciò che otteniamo indietro è solo il file HTML iniziale,
‫quel file verrà quindi scansionato per tutte le risorse
‫di cui ha bisogno per costruire
‫l'intero sito web come JavaScript, file CSS, file di immagine o altro risorse.
‫E per ciascuno di questi
‫diversi file, il browser effettuerà quindi una nuova richiesta HTTP al server.
‫Quindi, in pratica, tutto questo avanti
‫e indietro tra client e server appena
‫spiegato avviene per
‫ogni singolo file incluso nel sito web.
‫Tuttavia, possono verificarsi più richieste e
‫risposte contemporaneamente.
‫Ma la cifra è in
‫realtà limitata perché, altrimenti, la connessione inizierebbe a rallentare.
‫Ok, e infine, quando tutti i file sono arrivati, il
‫sito Web viene
‫visualizzato nel browser secondo le specifiche HTML, CSS e
‫JavaScript che potresti già conoscere.
‫E ora, come pezzo finale di questo
‫puzzle, parliamo di nuovo di TCP/IP e scopriamo
‫come i dati di richiesta e risposta vengono effettivamente
‫inviati attraverso il web.
‫Quindi abbiamo detto prima che TCP e IP sono i
‫protocolli di comunicazione che definiscono il modo
‫in cui i dati viaggiano attraverso il web.
‫Ora, non entrerò in molti dettagli qui, ma
‫ecco quello che devi sapere.
‫Innanzitutto, il compito del TCP è suddividere le richieste
‫e le risposte in migliaia di piccoli blocchi chiamati pacchetti prima
‫che vengano impostati.
‫Quindi, una volta arrivati a destinazione, riassembla
‫tutti i pacchetti nella
‫richiesta o risposta originale in modo che
‫il messaggio arrivi a destinazione il
‫più rapidamente possibile, il che non sarebbe possibile
‫se inviassimo il sito Web come un unico blocco.
‫Quindi sarebbe come cercare di attraversare
‫il traffico della danza con il più grande autobus
‫che tu possa immaginare.
‫Quindi, non è una buona idea.
‫Ora, nella seconda parte, il compito del protocollo IP
‫è effettivamente inviare e instradare tutti questi
‫pacchetti attraverso Internet.
‫Quindi assicura che tutti arrivino alla destinazione
‫che dovrebbero andare utilizzando gli indirizzi IP su ciascun pacchetto.
‫E ancora, questa è solo una panoramica molto ampia di
‫ciò che accade realmente dietro le quinte del web,
‫perché in realtà si tratta di troppe informazioni
‫di quelle effettivamente necessarie per
‫diventare un grande sviluppatore di back-end.
‫Ma spero che tu abbia comunque trovato
‫queste informazioni utili e interessanti, e anche non troppo confuse.
‫Ora, nel prossimo video, faremo effettivamente alcune richieste
‫HTTP in modo da acquisire un po' più di familiarità con
‫il protocollo.