COLUNA: Vamos falar sobre outro protocol-- de Transferência de Hipertexto Protocolo ou HTTP. Então, nós já conversamos sobre IP e TCP em vídeos anteriores. E esses são os protocolos que ditam como informações movimentos de máquina para máquina e de programa para programa ou serviço ao serviço através da internet, via esta rede de roteadores e máquinas. Mas isso não é geralmente a imagem inteira, certo? Normalmente quando enviamos informação, o programa itself-- quando dados é recebido, digamos, por exemplo, no e-mail via porta TCP 25 ou um solicitação de página web via porta 80, há geralmente um sistema de regras lá para processar o que eu acabei de receber. E HTTP é um exemplo de apenas um tal protocolo. O HTTP é a única protocolo de camada de aplicação que vamos falar. Mas é um outro conjunto das regras que ditam como a informação deve ser transmitida e processada através da internet. Em particular, o HTTP especifica exatamente como deve-se fazer um pedido uma página web e exatamente como um servidor, uma máquina que hospeda páginas da web, entrega essa informação voltar aos clientes. Portanto, este protocolo não faz realmente tem nada a ver com a forma como as informações se move do ponto A ao ponto B. É realmente o sistema de regras for-- é basicamente as regras do engajamento para trabalhar com uma página web, semelhante a quando alguém ondas de sua mão em você, você deveria acenar de volta. Isso é uma espécie de humano protocolo convencional. Protocolo HTTP apenas diz que, se você deseja solicitar uma web página, certificar-se de sua aparência formato como isto-- tipo de formatação como uma carta de negócios, por exemplo. E a resposta será semelhante vir de acordo com este protocolo. Há outra protocolos da camada de aplicação que não estamos indo para falar em vídeos. Mas estes incluem coisas como o File Transfer Protocol, Simple Mail Transfer Protocol para enviar e-mails, a distribuição de dados Serviço, ambiente de trabalho remoto Protocolo, RDP, que é usado se você deseja acessar remotamente seu computador a partir de outro computador, XMPP, que é freqüentemente conhecido como Jabber ou bate-papo, por isso este é o protocolo para a utilização de serviços de chat. E há muitos, muitos, muitos outros. Então, toda vez que você está usando um serviço, o serviço está esperando informações para ser received-- um pedido para ser received-- numa formato específico muito e é necessária a retornar informações de volta em particular, um formato muito bem. Então, vamos voltar para a nossa ilustração de nós querendo falar com a internet. Então, nós estamos felizes, e nós queremos para ir para cats.com, certo? Então, se estamos apenas conversando com cats.com, poderíamos dizer algo como hey, Eu posso ver sua home page? E, provavelmente, cats.com responder, sim, com certeza. Aqui vai você. Então, isso é uma espécie humana de pedir e respostas. O que isso se parece em HTTP? Bem, é realmente tipo de traduz muito limpa para algo como isto. Poderíamos dizer GET / HTTP / 1.1 cats.com do hospedeiro. Então, basicamente o que estou fazendo aqui é pedindo a página web www.cats.com/. Nós geralmente omitir a barra hoje em dia, mas que seria apenas significa a página de cats.com. Ah, e por falar nisso, eu vou estar usando a versão HTTP 1.1 para se comunicar com você. Isso é análogo ao tipo de dizendo, como, aliás, Eu vou estar falando em francês, ou, a propósito, Eu vou estar falando em Inglês. Isso é apenas o formato do protocolo. Também é 1,0, que é que normalmente não são mais usados. Então, eu estou falando HTTP 1.1, e Eu gostaria www.cats.com/. Por favor, obter isso por mim. E depois há outras informações, demasiado-- a ponto, ponto, ponto lá, qual é a informação sobre que você é tão cats.com saberia onde enviá-lo. Mas estes são os dois tipo de peças críticas no início de um HTTP request-- Assim como quando você iniciar um carta você diz, querida, em branco. Isto é muito semelhante em espírito para isso. E se cats.com vai digo, oh, com certeza, aqui você vai. Eles podem responder como isto-- Eu também estou respondendo. Também falo HTTP 1.1. O seu pedido for aprovado, 200 OK. O que você está prestes a receber é HTML e, em seguida, ponto, ponto, ponto algumas informações extra. E na parte inferior da pedido é realmente o HTML, a linguagem de marcação, o conteúdo da página inicial da cats.com. Então, HTTP / 1.1-- Eu reconheço o seu pedido foi aceite via HTTP 1.1. O seu pedido foi aprovado. Eu posso te dar o que você quer, 200 OK. Você está prestes a receber HTML. E então aqui está a HTML que você solicitou. Mas às vezes os nossos pedidos não fazer sempre ir bastante conforme o planejado. Posso ver sua página cats.html? Bem, o que se costuma dizer, nós não tem uma página cats.html, que parece meio irreal porque eles são cats.com. Você acha que eles teriam cats.html. Mas sim. Portanto, esta é uma espécie de interação humana convencional temos agora tivemos com cats.com. Como é que se traduzem? Isso pode ser algo familiar para você. Nosso pedido parecia exatamente o mesmo, exceto em vez de ficar barra nós estamos começando agora cats.html. Então agora o que basicamente toda esta pedido está dizendo é por favor me dê www.cats.com/cats.html. Então o anfitrião e meio parte dessa linha superior não indicar com precisão que página estou pedindo. Mas cats.com neste caso não vai para ser capaz de responder positivamente. Eles não sabem que estamos falando. E então isso é algo que você pode ter visto HTTP antes-- 1.1 404 Not Found. Eu não poderia encontrar o que você estava pedindo. By the way, eu estou indo dar-lhe de volta um pouco de HTML, e, geralmente, que o HTML é o conteúdo de alguns página 404. E no caso de cats.com, é provavelmente alguns gatos bonitos em uma cesta com a 404 rosto triste ao lado deles, porque você está indo para ser triste quando você não obter página que você estava procurando. Isso é meio o básico do que um Protocolo, as solicitações de protocolo HTTP parece. Eles são muito semelhante à forma como nós faria uma interacção semelhante em convenções apenas humanos pedindo algo e coloca-lo de volta ou escrever um carta e esperando uma resposta carta em um formato particular. Isso é muito bonito o que HTTP é apenas Canonicalização para todos os dispositivos que pretende aceder páginas da web, transferências de hipertexto. Assim, uma linha do formulário, este a método de solicitação HTTP versão alvo, é chamado de linha de solicitação de HTTP. É geralmente a primeira coisa que é transmitida como parte de uma solicitação HTTP ou se você está pedindo HTTP. É uma espécie de gosto, como eu disse, dizendo querida, branco na parte superior a sua carta. Eles sabem que você é escrever-lhes uma carta. Então isso é muito semelhante para dizer, eu sei que eles estão fazendo uma solicitação HTTP e este é o formato específico eles estão pedindo. Versão HTTP é provavelmente sempre vai ser HTTP / 1/1. 1.0 também existe mas não está realmente mais usado. Para fins de CS50, GET é provavelmente sempre o que você está indo ser usar quando você está na verdade fazer solicitações HTTP diretas. Mas POST é outra opção que nós somos Não vou falar sobre isso agora. E, em seguida, pedido-alvo é qual página no servidor do anfitrião você gostaria de obter. Como eu disse, esse nome de host é uma linha separada, normalmente a segunda linha do pedido global. E assim tomados em conjunto, o anfitrião nome e o alvo pedido especificar um específico recurso que está sendo procurado. No nosso exemplo, 404 um segundo atrás, eu estava pedindo novamente para www.cats.com, cats.com ser o anfitrião. E na minha linha de solicitação, Eu disse /cats.html. Esse era o meu destino pedido. Assim, no geral eu estava pedindo a conteúdo ou o recurso localizado em www.cats.com/cats.html. E, em seguida, com base no facto existe o recurso e se o servidor pode entregar o recurso de acordo com o cliente do pedido, você pode ter vários códigos de status de volta. Alguns desses códigos de status que você já viu porque eles são parte da resposta. Alguns deles, 200 OK, são provavelmente bastante silencioso. Você provavelmente nunca visto uma página de responder 200 OK. Você só obter a página. Não é como um erro 404, que normalmente é bastante claro. Você normalmente ver que ele diz 404. Então vamos falar sobre o que alguns desses códigos de status pode ser. Mais uma vez, quando o servidor responde a nós, eles são vai responder status da versão HTTP. Normalmente HTTP / 1.1. Quais são esses códigos de status vai ser? Bem, poderíamos obter um sucesso. Assim, na categoria de sucesso, pode obter o código 200 com o texto OK. O que isto significa? Bem, tudo é bom. Você fez um pedido válido. Aqui está uma resposta válida. Eu era capaz de entregar exatamente o que você queria. Às vezes você pode obter outras coisas que você não vai notar de imediato mas são um pouco falhas. Eles são chamados de redirecionamentos. Há dois mais comuns aqui. 301 Permanently-- Movido o que isso significa, basicamente, é a página está agora em um novo local. Ele vai viver ali para sempre. E a maioria dos navegadores automaticamente redireccionado. Então você nunca realmente ver um 301, ou, a menos que você é usando realmente um out-of-date navegador, possivelmente, porque a resposta 301 é parte de o ponto, ponto, ponto 301 da resposta. Ele também informa que a nova página é. E assim a maioria dos navegadores apenas redirecioná-lo lá, supondo que você quer ir para lá. Às vezes, você também vai receber 302 encontrados. E isso que você realmente ainda pode ver ocasionalmente. Às vezes, páginas deslocar-se temporariamente. Por isso, não vai ser construído em o pedido dizendo ao navegador para alterar permanentemente qualquer momento ele vê a solicitação que você fazer para mudá-lo para outra coisa. Então você pode ver 302 Encontrado, que, basicamente, diz que esta página vive em outro lugar. Mas não vai viver ali para sempre. Ele acabará provavelmente ir de volta para onde você pensa que é. Então você vai fazer as coisas como erros de cliente. Então, esses são os que você provavelmente já viu, agora. Você provavelmente não viu 200s ou 300s, mas provavelmente você está familiarizado com os 400s. E é isso que vamos falar em cerca de um segundo, 500s bem. Você pode ver 401 não autorizado. Normalmente, isso significa que você é a tentar aceder a uma página, mas você ainda não identificado. Então você tentar ir a algum perfil ou algo no Facebook ou você tentar e acesso some-- você está no trabalho. Você está tentando acessar algo na internet do seu trabalho, mas você não está logado. Você não pode ver a página. Você pode obter um 401 não autorizado, o que significa que, provavelmente, será capaz de satisfazer este pedido, mas primeiro você precisa fazer login para fazê-lo. Por outro lado, você pode ter 403 Proibida, que é ele realmente não importa se você está conectado ou não. Este pedido não é permitido. O recurso existe no servidor. Mas você não tem permissão para acessá-lo. Este é normalmente ficheiros internos que viver no servidor por várias razões mas não se pretende que sejam acessado a partir do mundo exterior, e por isso eles são proibidos. Eles vivem lá. Não estou dizendo que eu não posso encontrá-lo. Mas eu estou dizendo que eu não posso dar a você. E não importa se você está logado ou não. E, em seguida, é claro, o muito comum 404 Not Found. O arquivo não existe no servidor. Eu gostaria de satisfazer seu pedido, mas eu não posso. Você também vê às vezes servidor erros, o mais comum geralmente sendo 500 Internal Server Error, que na verdade, não lhe dizer nada em tudo sobre o que deu errado. Mas não é, na verdade, você está fazendo um erro em seu pedido. É realmente o servidor com falha para cumprir a solicitação de alguma forma. Assim, 500 é a resposta geral. Você também verá algo como Service Unavailable, que eu acredito que é o código 503. E Timeout-- gateway se Você já teve uma página apenas sentar-se lá de carga e carga e carregamento e você nunca sabe se ele vai carga e, eventualmente, ele só says-- apenas desiste. Isso é um gateway 504 Timeout. O servidor queria executar o seu pedido, mas algo deu errado no servidor side-- não em seu side-- para provocar que seja um problema. Agora, nós poderíamos terminar a história aqui, mas o que eu estou indo realmente para fazer agora é que eu vou abrir meu navegador e mostrar-lhe como você pode ser capaz de ver alguns desses códigos de status mesmo se você geralmente não vê-los. E vamos fazer isso por tomar uma olhada em algumas ferramentas para desenvolvedores. Tudo bem Então aqui estou eu agora em minha janela do navegador. E eu quero aprender um pouco mais sobre essas solicitações HTTP. Como faço para sabe-- certamente sabemos se um página goes-- quando algo dá errado, temos um 404. Nós todos vimos isso. Nós não precisamos para ilustrar isso. Mas o que são alguns outros? E como é que nós vemos estes pedidos em ação? Então a primeira coisa que eu vou fazer é abrir Developer Tools. Então Developer Tools são construídas na maioria dos navegadores modernos e nos permite ver as coisas que não fazer o contrário see-- alguma informação extra de sorte sendo transmitidos sob o nosso web pedidos. Estou usando o Google Chrome aqui. E para abrir Ferramentas de Desenvolvimento no Chrome, você acabou de bater F-12, e ele vai abrir -lo na lateral. Uma vez que eu escreva o pedido, eu vou fazer zoom para que possamos ver o que está acontecendo aqui. Mas o que eu vou fazer no meu navegador bar é-- e eu vou fazer zoom sobre aqui-- Eu vou fazer um pedido para www.google.com. Nós todos provavelmente feitos este pedido antes. Eu vou bater Enter. Agora, aqui no meu desenvolvedor Ferramentas, eu escolhi o separador Rede. E você notar um monte de coisas aqui. Olhe para these-- 200 OK, 200 OK, alguns destes códigos de status chegando. Eu não sei por que estou recebendo 302 Found. Eu não sabia que eu ia ver isso. Mas, basicamente, perceber que muito muito, em termos de meu request-- Google Eu fiz uma forma muito simples pedido de página do Google. E no processo de entregar o meu pedido, Google tem, aparentemente, fez um monte de outras solicitações em meu nome. Mas eu fiz um pedido GET para o Google página e estou recebendo um lote de 200 OKs. Eu não estou vendo em 200 OK minha tela, mas estou ficando uma grande quantidade de solicitações que foram feitas. Mais um que eu sou bonito certeza vai funcionar é-- para aqueles de vocês que são realmente old-school, você pode saber que o Facebook era nem sempre no Facebook.com. Em seus primeiros dias era em wwww.thefacebook.com. Eles aparentemente não poderia obter acesso para Facebook.com por um bom tempo. E então o que eu estou esperando aqui é obter informações. E vamos ver se este garimpa para fora. O que eu estou esperando aqui é obter informações que o Facebook mudou permanentemente de thefacebook.com para Facebook.com. Então, eu estou esperando em algum lugar perto do topo dos meus pedidos mais em meus Ferramentas de Desenvolvimento para obter uma notificação 301 que o Facebook mudou permanentemente. Mais uma vez, eu não verei 301 na tela do meu navegador. E porque é um 301, é um movimento permanente. Meu navegador, sendo que é um navegador moderno, é provavelmente vai redirecionar me para Facebook.com de qualquer maneira. Mas vamos ver o que acontece. E agora eu vou ir para thefacebook.com. E sim, ele está lá no topo. Ele foi embora, mas estava lá. Deixe-me rolar para cima aqui. Aqui mesmo no topo. Eu fiz um pedido para thefacebook.com, e eu estou recebendo uma resposta que esta página foi movida permanentemente. E, em seguida, 307 é aqui um redirecionamento interno. E então é isso que tem, na verdade, me mudei para o muito mais www.facebook.com familiar. Então, esses códigos de resposta fazer ainda acontecer, mesmo se nós não vê-los. Eu não estou indo ilustram 401, 403, 404, porque você provavelmente já viu aqueles em vários pontos. E 500, eu estaria apenas tipo de-- teríamos sorte se tem um 500 porque não sabemos o que servidores estão atualmente para baixo em qualquer lugar. Mas esses códigos fazer existem, e não há uma maneira para acessá-los mesmo que não fazer vê-los em primeira mão em nossos sistemas. Eu sou Doug Lloyd. Este é CS50.