SPEAKER: Parliamo di un altro protocol-- trasferimento Hypertext Protocollo, o HTTP. Così abbiamo parlato IP e TCP in video precedenti. E questi sono i protocolli che dettare come le informazioni mosse da macchina a macchina e da programma a programma o servizio al servizio via Internet, via questa rete di router e macchine. Ma non è di solito l'intera immagine, giusto? Di solito quando inviamo informazioni, il programma itself-- quando i dati sono ricevuto, diciamo, ad esempio, in e-mail tramite la porta TCP 25 o un web richiesta di una pagina tramite la porta 80, di solito c'è un sistema di regole ci per elaborare quello che ho appena ricevuto. E HTTP è un esempio di una tale protocollo. HTTP è l'unico protocollo di livello applicativo che stiamo andando a parlare. Ma è un altro insieme di regole che dettano come informazioni da trasmettere ed elaborati via Internet. In particolare, HTTP specifica esattamente come bisogna fare una richiesta di una pagina web e esattamente come un server, una macchina che ospita le pagine web, fornisce le informazioni indietro ai clienti. Quindi questo protocollo non lo fa in realtà avere nulla a che fare con informazioni si sposta dal punto A al punto B. E 'davvero il sistema di regole for-- è fondamentalmente le regole impegno per lavorare con una pagina web, simile a quando qualcuno onde la loro mano a voi, dovresti onda indietro. Questa è una sorta di protocollo umana convenzionale. Protocollo HTTP dice solo, se si desidera richiedere un web pagina, assicurarsi che i vostri sguardi formato come questo-- specie di formattazione una lettera commerciale, per esempio. E la risposta sarà simile venire secondo questo protocollo. Ci sono altri protocolli di livello applicazione che non stiamo andando a parlare in video. Ma questi includono cose come File Transfer Protocol, Simple Mail Transfer Protocol per l'invio di email, la Data Distribution Service, Remote Desktop Protocollo, RDP, che viene utilizzata se si desidera accedere in remoto il computer da un altro computer, XMPP, che è spesso conosciuto come Jabber o chat, quindi questo è il protocollo per l'utilizzo di servizi di chat. E ci sono molti, molti, molti altri. Così ogni volta che si sta utilizzando un servizio, il servizio si aspetta informazioni da received-- una richiesta di essere in un received-- particolare formato molto ed è tenuto a restituire informazioni indietro in un formato molto particolare così. Quindi torniamo alla nostra illustrazione di noi che vogliono parlare con Internet. Così siamo felici, e vogliamo per andare a cats.com, giusto? Quindi, se stiamo solo parlando con cats.com, potremmo dire qualcosa come hey, posso vedere la tua home page? E probabilmente sarà cats.com rispondere, sì, certo. Ecco qui. Ecco, questo è una specie umana di chiedere e risposta. Che cosa simile in HTTP? Beh, in realtà tipo di traduce piuttosto in modo pulito per una cosa del genere. Potremmo dire GET / HTTP / 1.1 da cats.com ospite. Quindi, in pratica quello che sto facendo qui è chiede la pagina web www.cats.com/. Noi di solito omettiamo la barra Oggi, ma che sarebbe solo significare homepage di cats.com. Oh, e dal modo in cui, vado per essere utilizzando la versione HTTP 1.1 per comunicare con voi. Questo è una sorta di analogo a dicendo, come, tra l'altro, Ho intenzione di parlare in francese, o l'altro, Ho intenzione di essere parlando in inglese. Questo è solo il formato del protocollo. È anche 1,0, che è Non comunemente usato più. Così sto parlando HTTP 1.1, e Vorrei www.cats.com/. Si prega di ottenere che per me. E poi c'è altra informazione, too-- il dot, dot, dot lì, che è informazioni su chi sei così cats.com saprebbe dove inviarlo. Ma questi sono i due sorta di parti critiche proprio all'inizio di un HTTP richiesta-- proprio come quando si avvia un lettera che dici, caro, vuoto. Questo è molto simile nello spirito a quello. E se cats.com sta per dite, oh, certo, qui si va. Si potrebbe rispondere come questo-- Sto anche rispondere. Parlo anche HTTP 1.1. La vostra richiesta è approvata, 200 OK. Che cosa stai per ricevere è HTML e quindi dot, dot, dot qualche informazione in più. E in fondo del richiesta è in realtà il codice HTML, il linguaggio di markup, il contenuto della homepage di cats.com. Quindi HTTP / 1.1-- Riconosco la tua richiesta è stata accolta tramite HTTP 1.1. La richiesta è stata approvata. Posso darti quello che vuoi, 200 OK. Siete in procinto di ricevere HTML. E poi ecco la HTML che hai richiesto. Ma a volte le nostre richieste non lo fanno sempre andare tutto secondo i piani. Posso vedere la tua pagina cats.html? Beh, e se dicono, noi non hanno una pagina cats.html, che sembra sorta di realistico perché sono cats.com. Si potrebbe pensare che avrebbero cats.html. Ma ok. Quindi questa è una sorta di interazione umana convenzionale ora abbiamo avuto con cats.com. Come funziona che traduce? Questo potrebbe essere qualcosa di familiare a voi. La nostra richiesta era esattamente lo stesso, tranne che invece di ottenere barra ora stiamo ottenendo cats.html. Così ora che cosa fondamentalmente questo intero richiesta sta dicendo è per favore dammi www.cats.com/cats.html. Così il padrone di casa e la metà parte di quella linea superiore ci indica precisamente quale pagina che sto chiedendo. Ma cats.com in questo caso non sta andando essere in grado di rispondere positivamente. Non sanno che stiamo parlando. E quindi questo è qualcosa che si potrebbe avere visto HTTP before-- 1.1 404 Not Found. Non riuscivo a trovare quello che che stavi chiedendo. A proposito, ho intenzione di darvi indietro alcuni HTML, e di solito che l'HTML è il contenuto di qualche pagina 404. E nel caso di cats.com, probabilmente alcuni gatti carino in un cesto con un triste 404 faccia accanto a loro, perché si sta andando ad essere triste quando non si ottiene la pagina che stavate cercando. Questo è il tipo delle nozioni di base di ciò che un protocollo, le richieste di protocollo HTTP Assomiglia a. Sono davvero simile a come noi farebbe una simile interazione nelle convenzioni appena umani chiedere qualcosa e ottenere indietro o la scrittura di un lettera e in attesa di una risposta lettera in un particolare formato. Questo è più o meno quello HTTP è solo canonicalizing per tutti i dispositivi che vogliono accesso le pagine web, i trasferimenti ipertestuali. Così una linea della forma, la presente metodo versione richiesta di destinazione HTTP, si chiama una linea di richiesta HTTP. Di solito è la prima cosa che è trasmessa come parte di una richiesta HTTP o se si sta chiedendo per HTTP. E 'un po' come, come ho detto, dicendo cara, vuoto in alto la vostra lettera. Sanno che sei scrivendo loro una lettera. Quindi questo è molto simile a dire, lo so che stanno facendo una richiesta HTTP e questo è il particolare formato che stanno chiedendo. Versione HTTP è probabilmente andando sempre essere HTTP / 1/1. 1.0 Esiste anche, ma non è davvero più utilizzati. Ai fini del CS50, GET è probabilmente sempre ciò che si sta andando ad essere utilizzando quando si è in realtà effettuare richieste HTTP dirette. Ma POST è un'altra opzione che siamo non andare a parlare in questo momento. E poi richiesta-obiettivo è quale pagina sul server dell'host si desidera ottenere. Come ho già detto, che il nome host è una linea separata, di solito la seconda riga della richiesta complessiva. E così nel loro insieme, il padrone di casa nome e la destinazione richiesta specificare una specifica ricercata risorsa. Nel nostro esempio 404 un secondo fa, ho è stato chiesto di nuovo per www.cats.com, cats.com essere il padrone di casa. E nella mia linea di richiesta, Ho detto /cats.html. Quella era la mia destinazione richiesta. Così nel complesso mi è stato chiesto per la contenuti o la risorsa che si trova a www.cats.com/cats.html. E poi in base a se esiste la risorsa e se il server è in grado di fornire il reddito di cui il cliente del richiesta, si potrebbe ottenere vari codici di stato posteriori. Alcuni di questi codici di stato che hai visto perché sono parte della risposta. Alcuni di loro, 200 OK, sono probabilmente abbastanza silenzioso. Probabilmente avete mai visto una pagina risponde 200 OK. Basta avere la pagina. Non è come un errore 404, che di solito è abbastanza chiaro. Di solito si vede che c'è scritto 404. Quindi parliamo di quello che alcuni di questi codici di stato potrebbe essere. Anche in questo caso, quando il server risponde a noi, sono andando a rispondere HTTP stato della versione. Di solito HTTP / 1.1. Che cosa sono questi codici di stato sarà? Beh, si potrebbe ottenere un successo. Così nella categoria successo, potrebbe ottenere il codice 200 con il testo OK. Cosa significa questo? Beh, tutto è buono. Hai fatto una richiesta valida. Ecco una risposta valida. Sono stato in grado di fornire esattamente quello che volevi. A volte si potrebbe ottenere altre cose che non si noterà subito ma sono un po 'fallimenti. Sono chiamati reindirizzamenti. Ci sono due più comuni qui. 301 Permanently-- Spostato ciò che questo significa in pratica è la pagina è ora in una nuova posizione. Vivrà per sempre. E la maggior parte dei browser si reindirizzare automaticamente. Quindi non sarete mai realmente vedere 301, o, se non sei utilizzando un veramente out-of-date il browser, eventualmente, perché la risposta 301 è parte di il punto, punto, punto della risposta 301. Ci dice anche dove la nuova pagina è. E così maggior parte dei browser solo tu reindirizzare lì, supponendo che si vuole andare lì. A volte avrete anche trovato 302. E questo in realtà potrebbe ancora vedere di tanto in tanto. A volte le pagine si spostano temporaneamente. Quindi non sta per essere costruito in la richiesta dicendo al browser di modificare in modo permanente qualsiasi momento vede la richiesta che si far cambiare a qualcos'altro. Così si potrebbe vedere 302 Trovato, che fondamentalmente dice questa pagina vive da qualche altra parte. Ma non sta andando a vivere lì per sempre. E alla fine probabilmente andare di nuovo a dove si pensa che è. Poi avrai cose come gli errori del client. Quindi questi sono quelli che avete probabilmente visto, ora. Probabilmente non avete visto i 200s o dei 300s, ma probabilmente sei familiarità con le 400. Ed è quello che ne parliamo su in un secondo, 500 pure. Si potrebbe vedere 401 non autorizzato. Di solito questo significa che siete cercando di accedere a una pagina, ma non avete effettuato l'accesso. Così si cerca di andare a un po ' profilo o qualcosa su Facebook o si tenta di accesso some-- sei al lavoro. Stai cercando di accedere a qualcosa su internet del vostro lavoro, ma non sei loggato. Non è possibile visualizzare la pagina. Si potrebbe ottenere un 401 non autorizzata, il che significa che probabilmente sarà in grado di soddisfare tale richiesta, ma prima è necessario effettuare il login per farlo. Al contrario, si potrebbe ottenere 403 Forbidden, che è in realtà non importa se si è registrato o meno. Questa richiesta non è consentita. La risorsa presente sul server. Ma non vi è permesso di accedervi. Si tratta di file di solito interni vivere sul server per vari motivi ma non intendono essere accessibile dal mondo esterno, e quindi sono vietati. Vivono lì. Non sto dicendo che non riesco a trovarlo. Ma sto dicendo che non posso dare a voi. E non importa se si è registrato o meno. E poi, naturalmente, la molto comune 404 Not Found. Il file non esiste sul server. Vorrei soddisfare la tua richiesta, ma non posso. Inoltre a volte vedere Server errori, il più comune generalmente essendo 500 Internal Server Error, che in realtà non vi dico nulla affatto di ciò che è andato storto. Ma non è effettivamente fare un errore nella richiesta. In realtà è il server malfunzionante per fornire su richiesta in qualche modo. Quindi 500 è la risposta generale. Vedrete anche qualcosa come Servizio non disponibile, che a mio avviso è il codice 503. E Gateway Timeout-- se Hai mai avuto una pagina solo sedersi lì carico e caricamento e caricamento e non si sa mai se sta andando a carico e poi alla fine solo says-- appena si arrende. Questo è un timeout 504 Gateway. Il server ha voluto eseguire la vostra richiesta, ma qualcosa è andato storto sul server di side-- non sul vostro side-- per causa che per essere un problema. Ora, potremmo finire la storia qui, ma quello che sto realmente intenzione di fare ora è ho intenzione di aprire il mio browser e vi mostrerà come si potrebbe essere in grado di vedere alcuni di questi codici di stato anche se non generalmente li vedi. E abbiamo intenzione di farlo prendendo uno sguardo ad alcuni strumenti di sviluppo. Va bene Così eccomi qui ora nella mia finestra del browser. E voglio imparare un po ' di più su queste richieste HTTP. Come faccio a know-- certamente sappiamo se un Pagina goes-- quando qualcosa va storto, si ottiene un 404. Abbiamo visto tutti che. Non abbiamo bisogno di dimostrare che. Ma quali sono alcuni altri? E come potremmo vedere queste richieste in azione? Quindi prima cosa che ho intenzione di fare è aprire Developer Tools. Così Developer Tools sono costruiti nella maggior parte dei browser moderni e ci permettono di vedere le cose che non lo facciamo altrimenti see-- qualche informazione in più specie di la trasmissione sotto la nostra web richieste. Sto utilizzando Google Chrome qui. E per aprire Strumenti di sviluppo in Chrome, basta premere F-12, e sta andando ad aprire esso sul lato. Una volta digito la richiesta, io lo zoom in così possiamo vedere che cosa sta succedendo qui. Ma quello che ho intenzione di fare nel mio browser Bar è-- e io lo zoom in oltre qui-- Farò una richiesta a www.google.com. Tutti noi abbiamo probabilmente fatto questa richiesta prima. Ho intenzione di premere Invio. Ora, qui nella mia Developer Strumenti, ho scelto la scheda Rete. E si nota un sacco di cose qui. Guardate these-- 200 OK, OK 200, un po ' di questi codici di stato in arrivo. Non so perché mi sto 302 Found. Non mi rendevo conto che avrei visto che uno. Ma in fondo notare che piuttosto molto, in termini di mia richiesta-- Google Ho fatto un semplice richiesta per la pagina di Google. E nel processo di offrendo la mia richiesta, Google a quanto pare ha fatto un sacco di altre richieste da parte mia. Ma ho fatto una richiesta GET per Google pagina e sto ricevendo un sacco di 200 OKs. Non riesco a visualizzare 200 OK mio schermo, ma mi sto molte richieste che sono state fatte. Più Uno che io sono abbastanza sicuro è andare a lavorare è-- per quelli di voi che sono veramente vecchia scuola, si può sapere che Facebook è stato Non sempre a Facebook.com. Nei suoi primi giorni era a wwww.thefacebook.com. A quanto pare non potevano avere accesso a Facebook.com per un bel po '. E così quello che mi aspetto qui è quello di ottenere informazioni. E vedremo se questo filtra fuori. Quello che sto aspettando qui è quello di ottenere informazioni che Facebook si è mosso in modo permanente da thefacebook.com a Facebook.com. Quindi mi aspetto qualche parte vicino alla parte superiore delle mie richieste sopra nei miei Developer Tools per ottenere una notifica 301 che Facebook si è mosso in modo permanente. Ancora una volta, non voglio vedere 301 sul mio schermo del browser. E poiché si tratta di un 301, si tratta di un trasferimento definitivo. Il mio browser, è che si tratta di un browser moderno, sta probabilmente andando a reindirizzare mi Facebook.com comunque. Ma vediamo cosa succede. E ora ho intenzione di andare a thefacebook.com. E sì, ci è proprio in cima. E 'andato via, ma era lì. Mi permetta di scorrere qui. Proprio qui in alto. Ho fatto una richiesta di thefacebook.com, e sto ottenendo una risposta che questa pagina si è spostato definitivamente. E poi qui è 307 un reindirizzamento interno. E così questo è quello che ha in realtà mi ha commosso per la molto più www.facebook.com familiare. Così questi codici di risposta fanno ancora accadere, anche se noi non li vediamo. non ci andrò illustrare 401, 403, 404, perché probabilmente avete visto quelli in vari punti. E 500, vorrei solo essere tipo di-- saremmo fortunati se ha ottenuto un 500 perché non sappiamo cosa server sono attualmente nessuna parte. Ma questi codici fanno esiste, e c'è un modo per accedervi, anche se non lo facciamo vederli in prima persona sui nostri sistemi. Sono Doug Lloyd. Questo è CS50.