CONFÉRENCIER: Parlons un autre protocol-- l'Hypertext Transfer Protocole, ou HTTP. Donc, nous avons parlé IP et TCP dans les vidéos précédentes. Et ce sont les protocoles qui dictent la façon dont l'information se déplace de machine à machine et d'un programme à ou service au service via Internet, par l'intermédiaire ce réseau de routeurs et de machines. Mais cela est généralement pas l'image entière, non? Habituellement, lorsque nous envoyons informations, le programme itself-- lorsque les données sont reçu, disons, par exemple, dans l'email via le port TCP 25 ou Web demande de page via le port 80, il ya habituellement un système de règles, il pour traiter ce que je viens de recevoir. Et HTTP est un exemple d'un tel protocole. HTTP est le seul protocole d'application de la couche que nous allons parler. Mais il est un autre jeu des règles qui dictent comment des informations doivent être transmises et traitées par l'intermédiaire d'Internet. En particulier, HTTP précise exactement comment il faut faire une demande de une page web et exactement comment un serveur, un ordinateur qui héberge les pages web, délivre cette information sauvegarder aux clients. Donc, ce protocole ne avoir fait quoi que ce soit à voir avec la façon dont l'information se déplace du point A au point B. Il est vraiment le système de règles pour-- il est fondamentalement les règles de l'engagement de travailler avec une page web, similaire à quand quelqu'un vagues leur main à vous, vous êtes censé signe en retour. Voilà une sorte de humain protocole classique. Protocole HTTP dit juste, si vous souhaitez recevoir un web la page, assurez-vous que vos regards de format comme this-- sorte de formatage comme une lettre de l'entreprise, par exemple. Et la réponse sera similaire venir selon ce protocole. Il existe d'autres Les protocoles de couche d'application que nous ne sommes pas aller à parler dans les vidéos. Mais ceux-ci comprennent des choses comme le protocole de transfert de fichiers, Protocole Simple Mail Transfer pour l'envoi de courriels, la distribution des données Service, Remote Desktop Protocole, RDP, qui est utilisée si vous voulez accéder à distance votre ordinateur depuis un autre ordinateur, XMPP, qui est fréquemment connu comme Jabber ou le chat, si cela est le protocole pour l'utilisation de services de chat. Et il ya beaucoup, beaucoup, beaucoup d'autres. Donc, chaque fois que vous utilisez un service, le service attend des informations à une demande received-- être dans une received-- format particulier très et qui est nécessaire pour renvoyer des informations de retour dans un format très particulier ainsi. Donc, revenons à notre illustration nous vouloir parler à l'Internet. Donc, nous sommes heureux, et nous voulons pour aller à cats.com, non? Donc, si nous parlons seulement de cats.com, nous pourrions dire quelque chose comme hey, puis-je voir votre page d'accueil? Et cats.com sera probablement répondre, oui, bien sûr. Et voilà. Voilà donc une sorte humaine de demander et de réponses. Qu'est-ce que cela ressemble à HTTP? Eh bien, il en fait un peu traduit assez proprement à quelque chose comme ça. Nous pourrions dire GET / HTTP / 1.1 de cats.com hôte. Donc, fondamentalement, ce que je fais ici est demandant la page Web www.cats.com/. Nous omettons généralement la barre oblique de nos jours, mais ce serait tout simplement signifie la page d'accueil de cats.com. Oh, et par la manière, je vais être avec la version HTTP 1.1 pour communiquer avec vous. Voilà en quelque sorte analogue à dire, comme, d'ailleurs, Je vais prendre la parole en français, ou par la façon dont, Je vais être parlant en anglais. Voilà tout simplement le format du protocole. Il est également de 1,0, ce qui est pas plus couramment utilisé. Donc, je suis HTTP 1.1 parlant, et Je voudrais www.cats.com/. S'il vous plaît obtenir ce pour moi. Et puis il ya d'autres informations, too-- le point, point, il dot, qui sont des informations sur qui vous êtes si cats.com serait de savoir où l'envoyer. Mais ce sont les deux sorte de pièces critiques au tout début d'un HTTP request-- tout comme lorsque vous démarrez un lettre que vous dites, cher, vide. Ceci est très similaire dans l'esprit à cela. Et si cats.com va dites, oh, bien sûr, ici vous allez. Ils pourraient réagir comme this-- Je suis aussi de répondre. Je parle aussi HTTP 1.1. Votre demande est approuvée, 200 OK. Qu'est-ce que vous êtes sur le point de recevoir est HTML, puis dot, dot, dot quelques informations supplémentaires. Et tout en bas de la demande est en fait le HTML, le langage de balisage, la contenu de la page d'accueil de cats.com. Donc HTTP / 1.1-- Je reconnais votre demande a été acceptée via HTTP 1.1. Votre demande a été approuvée. Je peux vous donner ce que vous voulez, 200 OK. Vous êtes sur le point de recevoir des messages HTML. Et puis voici le HTML que vous avez demandé. Mais parfois, nos demandes ne sont pas toujours aller assez conformément au plan. Puis-je voir votre page cats.html? Eh bien, si ils disent, nous ne pas avoir une page de cats.html, qui semble sorte de irréaliste parce qu'ils sont cats.com. On pourrait penser qu'ils auraient cats.html. Mais d'accord. Donc, cela est en quelque sorte le l'interaction humaine classique nous avons maintenant eu avec cats.com. Comment cela se traduit? Cela pourrait être quelque chose de familier pour vous. Notre demande était exactement le même, sauf qu'au lieu d'obtenir slash Maintenant, nous obtenons cats.html. Alors maintenant, ce qui en fait toute cette demande dit donnez-moi s'il vous plaît est www.cats.com/cats.html. Donc, l'hôte et le milieu une partie de cette ligne supérieure il indiquer précisément quelle page que je demande. Mais cats.com dans ce cas ne va pas pour être en mesure de répondre positivement. Ils ne savent pas que nous parlons. Et donc cela est quelque chose que vous pourriez avoir vu HTTP before-- 1.1 404 Not Found. Je ne pouvais pas trouver ce que vous demandiez. En passant, je vais vous donner Retour du HTML, et le plus souvent que le HTML est le contenu de certaines pages 404. Et dans le cas de cats.com, il est probablement certains chats mignons dans un panier avec 404 visage triste à côté d'eux, parce que vous allez être triste quand vous ne recevez pas la page que vous recherchez. Voilà sorte de les bases de ce que une Protocole, les demandes de protocole HTTP ressembler. Ils sont vraiment similaire à la façon dont nous ferait une interaction similaire dans les conventions simplement humains demander quelque chose et de le faire revenir ou d'écrire un lettre et attend une réponse lettre dans un format particulier. Voilà à peu près ce que HTTP est juste canonisant pour tous les appareils qui souhaitent un accès les pages Web, les transferts de l'hypertexte. Ainsi, une ligne de la forme, cela le Version méthode demande HTTP cible, est appelée une ligne de requête HTTP. Il est généralement la première chose qui est transmis dans le cadre d'une requête HTTP ou si vous demandez HTTP. Il est un peu comme, comme je le disais, en disant chère, vierge en haut de votre lettre. Ils savent que vous êtes les écrire une lettre. Donc, cela est très similaire à dire, je sais que ils font une demande HTTP et ceci est le format particulier qu'ils demandent. Version HTTP est probablement toujours va être HTTP / 1/1. 1.0 existe aussi mais est pas plus vraiment utilisé. Aux fins de la CS50, GET est probablement toujours ce que vous allez être l'aide lorsque vous êtes réellement des requêtes HTTP directs. Mais POST est une autre option que nous sommes ne vais pas parler maintenant. Et puis demande-cible est quelle page sur le serveur de l'hôte vous souhaitez obtenir. Comme je le disais, ce nom d'hôte est une ligne distincte, habituellement la deuxième ligne de la demande globale. Et donc, pris ensemble, l'hôte nom et la cible de demande spécifier un particulier ressource recherchée. Dans notre exemple 404 il ya une seconde, je demandait encore pour www.cats.com, cats.com étant l'hôte. Et dans ma ligne de demande, Je l'ai dit /cats.html. Ce fut ma demande cible. Donc dans l'ensemble je posais pour le contenu ou la ressource située au www.cats.com/cats.html. Et puis, en fonction de si la ressource existe et si le serveur peut fournir la ressource en vertu de celle du client demande, vous pourriez obtenir divers codes retour d'état. Certains de ces codes d'état que vous avez vu parce qu'ils font partie de la réponse. Certains d'entre eux, 200 OK, sont probablement assez silencieux. Vous avez probablement jamais vu une page de répondre 200 OK. Vous venez d'obtenir la page. Il est pas comme une erreur 404, qui est généralement assez clair. Vous voyez habituellement qu'il dit 404. Donc, nous allons parler de ce que certains de ces codes d'état pourrait être. Encore une fois, lorsque le serveur répond à nous, ils sont va répondre HTTP statut de version. Habituellement HTTP / 1.1. Quels sont ces codes d'état va être? Eh bien, nous pourrions obtenir un succès. Donc, dans la catégorie de succès, nous pourrait obtenir le code 200 avec le texte OK. Qu'est-ce que cela signifie? Eh bien, tout est bon. Vous avez fait une demande valide. Voici une réponse valide. Je suis en mesure de livrer exactement ce que vous vouliez. Parfois, vous pourriez obtenir d'autres choses que vous ne verrez pas tout de suite mais sont quelque peu échecs. Ils sont appelés les redirections. Il ya deux plus communs ici. 301 Permanently-- Déplacé ce que cela signifie essentiellement, est la page est maintenant à un nouvel emplacement. Il y vivra pour toujours. Et la plupart des navigateurs vous rediriger automatiquement. Donc, vous ne verrez jamais vraiment une 301, soit, sauf si vous êtes utilisant un vraiment hors-of-date navigateur, éventuellement, parce que la réponse 301 fait partie de le point, point, point de la réponse 301. Il vous indique également où la nouvelle page est. Et si la plupart des navigateurs simplement vous rediriger là, en supposant que vous voulez y aller. Parfois, vous aurez également 302 trouvés. Et celui-ci vous fait pourrait encore voir de temps en temps. Parfois pages se déplacent temporairement. Donc, ça ne va pas être intégré dans la demande dire le navigateur à changer de façon permanente tout moment il voit la demande que vous faire pour le changer en quelque chose d'autre. Donc vous pouvez voir 302 Trouvé, qui essentiellement dit cette page vit ailleurs. Mais il ne va pas il vivra éternellement. Il finira probablement aller retour à l'endroit où vous pensez qu'il est. Ensuite, vous aurez des choses comme les erreurs client. Donc, ce sont ceux que vous avez probablement vu, maintenant. Vous avez probablement pas vu les 200s ou les 300s, mais vous êtes probablement familier avec les 400s. Et voilà ce que nous allons parler à propos dans une seconde, 500s ainsi. Vous pouvez voir 401 Unauthorized. Habituellement, cela signifie que vous êtes essayant d'accéder à une page, mais vous ne l'avez pas connecté. Donc, vous essayez et aller à quelques profil ou quelque chose sur Facebook ou vous essayez et l'accès some-- vous êtes au travail. Vous essayez d'accéder à quelque chose sur l'Internet de votre travail, mais vous n'êtes pas connecté. Vous ne pouvez pas voir la page. Vous pourriez obtenir un 401 non autorisé, qui nous signifie probablement sera en mesure de satisfaire cette demande, mais vous devez d'abord vous connecter à le faire. Inversement, vous pourriez obtenir 403 Interdit, ce qui est cela n'a pas vraiment Peu importe si vous êtes connecté ou non. Cette demande est pas autorisé. La ressource existe sur le serveur. Mais vous n'êtes pas autorisé à y accéder. Ceci est habituellement fichiers internes qui vivre sur le serveur pour diverses raisons mais ne sont pas destinés à être accessible depuis le monde extérieur, et donc ils sont interdits. Ils y vivent. Je ne dis pas que je ne peux pas le trouver. Mais je dis que je ne peux pas vous le donner. Et il n'a pas d'importance si vous êtes connecté ou non. Et puis bien sûr, la très commun 404 Not Found. Le fichier ne existe pas sur le serveur. Je tiens à satisfaire votre demande, mais je ne peux pas. Vous voyez aussi parfois serveur erreurs, le plus commun qui est généralement étant de 500 Internal Server Error, qui ne fait rien vous dire du tout sur ce qui a mal tourné. Mais il est pas vraiment vous faire une erreur dans votre demande. Il est en fait le serveur défaillant pour fournir à la demande d'une certaine manière. Donc, 500 est la réponse générale. Vous verrez aussi quelque chose comme Service Unavailable, qui je crois est le code 503. Et la passerelle si Timeout-- vous déjà eu une page seulement assis là chargement et le chargement et le chargement et vous ne savez jamais si ça va charge et puis finalement il says-- juste donne juste place. Voilà une passerelle Timeout 504. Le serveur voulait exécuter votre demande, mais quelque chose a mal tourné sur le serveur de side-- pas sur votre side-- à Parce que ça d'être un problème. Maintenant, nous pourrions finir l'histoire ici, mais ce que je vais effectivement faire maintenant est que je vais ouvrir mon navigateur et vous montrer comment vous pourriez être en mesure de voir certains de ces codes d'état même si vous ne les voyez pas généralement. Et nous allons le faire en prenant Un aperçu de certains outils de développement. Tous droits Donc ici, je suis maintenant dans la fenêtre de mon navigateur. Et je veux apprendre un peu plus sur ces requêtes HTTP. Comment puis-je know-- certainement nous savons si un Page goes-- quand quelque chose va mal, nous obtenons un 404. Nous avons tous vu cela. Nous ne devons pas pour illustrer cela. Mais quelles sont les autres? Et comment pourrions-nous voir ces demandes en action? Donc, première chose que je vais faire est d'ouvrir les outils de développement. Donc Developer Tools sont construits dans la plupart des navigateurs modernes et nous permettent de voir les choses que nous ne le faisons pas autrement see-- quelques informations supplémentaire de tri étant transmis sous notre web demandes. Je suis en utilisant Google Chrome ici. Et pour ouvrir Developer Tools dans Chrome, vous appuyez simplement sur F-12, et il va ouvrir vers le haut sur le côté. Une fois que je tape la demande, je vais zoome afin que nous puissions voir ce qui se passe ici. Mais ce que je vais faire dans mon navigateur BAR est-- et je zoome sur ici-- Je vais faire une demande à www.google.com. Nous avons probablement tous fait cette demande avant. Je vais appuyez sur Entrée. Maintenant, ici dans mon développeur Outils, je ont choisi l'onglet Réseau. Et vous remarquez beaucoup de choses ici. Regardez these-- 200 OK, OK 200, certains de ces codes d'état à venir. Je ne sais pas pourquoi je reçois 302 Trouvé. Je ne savais pas que je verrais que l'un. Mais remarquez essentiellement cette jolie beaucoup, en termes de mon request-- Google Je fis un très simple demande de la page de Google. Et dans le processus de livrer ma demande, Google a apparemment fait beaucoup d'autres demandes sur mon compte. Mais je me suis fait une requête GET pour Google la page et je vais avoir un lot de 200 OKs. Je ne vois pas OK sur 200 mon écran, mais je suis en train de beaucoup de demandes qui ont été faites. Un de plus que je suis assez sûr est d'aller travailler est-- pour ceux d'entre vous qui sont vraiment de la vieille école, vous savez peut-être que Facebook était pas toujours à Facebook.com. À ses débuts, il était au wwww.thefacebook.com. Ils pourraient apparemment pas accéder à Facebook.com depuis un certain temps. Et donc ce que je vais attendre ici est d'obtenir des informations. Et nous verrons si cette casseroles. Ce que je veux attendre ici est d'obtenir des informations que Facebook a déplacé de façon permanente de thefacebook.com à Facebook.com. Je suis donc attendre quelque part près du haut de mes demandes plus dans mes Developer Tools pour obtenir une notification 301 que Facebook a déplacé de façon permanente. Encore une fois, je ne vais pas voir 301 sur l'écran de mon navigateur. Et parce qu'il est un 301, il est un mouvement permanent. Mon navigateur, étant que il est un navigateur moderne, va probablement rediriger moi de toute façon Facebook.com. Mais nous allons voir ce qui se passe. Et maintenant, je vais aller à thefacebook.com. Et oui, il est tout en haut. Il alla, mais il était là. Permettez-moi de défiler vers le haut ici. Juste ici au sommet. Je fis une demande à thefacebook.com, et je me fais une réponse que cette page a été déplacée de façon permanente. Et puis ici est 307 une redirection interne. Et c'est ce qui a fait Me déplacé à la beaucoup plus www.facebook.com familier. Donc, ces codes de réponse font encore arriver, même si nous ne les voyons pas. Je ne vais pas illustrer 401, 403, 404, parce que vous avez probablement déjà vu ceux à divers points. Et 500, je serais juste genre de-- nous avions de la chance si a obtenu un 500 parce que nous ne savons pas ce serveurs sont actuellement nulle part. Mais ces codes font existe, et il existe un moyen pour y accéder, même si nous ne le faisons pas voir de première main sur nos systèmes. Je suis Doug Lloyd. Ceci est CS50.