演讲嘉宾:让我们来谈谈另一个 protocol--超文本传输 协议或HTTP。 因此,我们已经谈了IP 和TCP在以前的视频。 而这些都是协议 这决定如何信息 从移动机器对机器和 因程序或服务 通过互联网提供服务,通过 这个网络路由器和机器。 但是,这通常不是 整个画面,对不对? 通常,当我们送 信息,节目 当数据是itself-- 接收,比方说,例如, 在通过TCP端口25或电子邮件 通过端口80的网页请求, 有通常的规则体系存在 处理我刚刚收到。 和HTTP是一个例子 只是这样的协议。 HTTP是唯一 应用层协议 我们要去谈。 但它是另一组 规则支配如何 信息将被发送 并通过互联网处理。 特别是,HTTP 指定究竟如何 其中一个必须做出的请求 一个网页,究竟如何 一个服务器,一个机 承载网页, 提供信息 回馈客户。 所以这个协议不 其实有什么 做怎样的信息 从A点移动 到B点。这真的 规则系统 for--它基本上规则 接合用于与网页的工作, 类似的,当有人 波他们的手在你, 你应该挥手。 这是形式的 传统的人类协议。 HTTP协议只是说,如果 要申请一个网络 页面上,确保您的格式如下 像this--有点像格式化 商业信函等。 和响应将同样 来根据这个协议。 还有其他 应用层协议 我们不打算 视频中谈论。 但是,这其中就包括像 文件传输协议, 简单邮件传输协议 发送电​​子邮件,数据发布 服务,远程桌面 协议,RDP,这 如果你想远程访问使用 您的计算机从另一台计算机, XMPP,这是经常 被称为Jabber的,或聊天, 所以这是协议 使用聊天服务。 还有许多,许多,许多人。 所以每次你使用时间 一种服务,该服务 期待信息 要received--的请求 要received--在 非常特定的格式 并且需要 返回的信息回 在一个非常特定的格式,以及。 因此,让我们回到我们的说明 我们想谈谈互联网。 因此,我们很高兴,我们希望 去cats.com,对不对? 因此,如果我们只是谈论cats.com, 我们可以这样说,嘿, 我可以看到你的主页? 并可能会cats.com 回应,是的,当然。 干得好。 所以这是一个人的排序 的询问和回答。 那是什么样子的HTTP? 那么,它实际上那种翻译 漂亮干净的东西是这样的。 我们可以说GET / HTTP / 1.1 从主机cats.com。 所以基本上我在做什么在这里 请求网页www.cats.com/。 我们通常忽略了斜杠 如今,但这只是 平均cats.com的主页。 哦,对了,我要去 要使用的HTTP版本 1.1与您沟通。 这就是那种类似于 他说,喜欢,顺便说一下, 我要发表演讲 在法国,或通过的方式, 我要在讲英语。 这是该协议的只是格式。 这也是1.0,这是 不常用不再使用。 所以我说HTTP 1.1,和 我想www.cats.com/。 请拿到我。 然后还有其他的信息, too--点,点,点在那里, 这是关于信息 你是谁这么cats.com 就知道在哪里可以发送。 但这些是两个 那种关键的部分 在开始 一个HTTP request-- 当你开始一个活脱脱 信你说,亲爱的,一片空白。 这是在精神非常类似。 并且如果cats.com是要 说,哦,当然,在这里你去。 他们可能会作出反应就像 this--我也在响应。 我也讲HTTP 1.1。 您的申请被批准,200 OK。 什么你即将 收到的HTML,然后 点,点,点了一些额外的信息。 而在的最底部 要求实际上是HTML, 标记语言,所述 cats.com主页的内容。 因此,HTTP / 1.1--我承认你 请求被通过HTTP 1.1接受。 您的请求已获批准。 我可以给你你想要的东西,200确定。 你要接收HTML。 然后这里的 您请求HTML。 但有时我们的要求不 相当按计划总是去。 我能看看你的cats.html页? 好吧,如果他们说什么,我们 没有cats.html页, 这似乎是一种不现实的 因为他们是cats.com。 你会认为他们将不得不cats.html。 但确定。 因此,这是排序 传统的人际交往 我们现在已经与cats.com。 请问该怎么翻译? 这可能是一些熟悉的东西给你。 我们的要求跟以前一样, 除了没有得到斜线 我们现在越来越cats.html。 所以,现在基本上什么这整个 请求要说的是,请给我 www.cats.com/cats.html。 因此主机和中间 该顶线的一部分 有指示准确 哪一页我要求。 但是cats.com在这种情况下是不会 要能够积极回应。 他们不知道我们在说什么。 所以,这是你可能有 看到before-- HTTP 1.1 404未找​​到。 我找不到什么 你问的。 顺便说一句,我要去给你 回一些HTML,并且通常是HTML 一些404页的内容。 和在的情况下 cats.com,它可能 在一篮子与一些可爱的猫 悲伤的脸404在他们旁边, 因为你将要 伤心的时候你没有得到页 你所期待的。 这是什么样的一个基础知识 协议,HTTP协议请求 看起来像。 他们真的很相似,我们如何 将使一个类似相互作用 在短短人约定 问的东西 并获得它或写 信和期望得到响应 信中的特定格式。 这几乎是什么 HTTP是刚刚canonicalizing 对于所有希望接入设备 网页,超文本传输​​。 这样一条线的形式,这在 方法请求目标的HTTP版本, 被称为HTTP请求线。 它通常是第一件事情 作为HTTP请求的一部分发送 或者,如果你要求的HTTP。 那种滋味,就像我说的,他说 亲爱的,在上面你的信的空白。 他们知道,你是 写了一封信给他们。 因此,这是非常相似 据称,我知道 他们正在做一个HTTP请求 这就是该特定格式 他们要求。 HTTP版本可能是 始终将是HTTP / 1/1。 1.0也存在,但并不 真正使用了。 为了CS50的, GET大概是永远 你会是什么 使用时,你其实 进行直接HTTP请求。 但是,POST是,我们的另一种选择 不会谈论现在。 然后请求目标 主机的服务器上的哪一页 你想获得。 正如我所说,该主机名 是一个独立的行,一般 第二行的总体要求。 因此综合考虑,主机 名称和请求目标 指定一个特定的 资源受到追捧。 在我们的404的例子在一秒钟前,我 再次要求www.cats.com, cats.com是主机。 而在我的要求, 我说/cats.html。 这是我的要求的目标。 所以,总体来说,我是问了 内容或位于该资源 在www.cats.com/cats.html。 然后根据是否 这个资源存在 和服务器是否能够提供 根据客户端的所述资源 的要求,你可能会得到 不同的状态代码回来。 你们当中有些人已经看到了这些状态码 因为他们是响应的一部分。 他们中的一些,200行,是 可能是相当沉默。 你可能从未见过 一个页面响应200 OK。 你刚才得到的页面。 它不象一个404错误, 这通常是很清楚的。 大家平时看到的,它说404。 因此,让我们来谈谈一些 这些状态码可能。 再次,服务器时 回应我们,他们是 要响应HTTP版本状态。 通常是HTTP / 1.1。 这些是什么状态码会是什么? 好了,我们可能会取得成功。 所以在成功的品类,我们 可能会得到200码的文字确定。 这是什么意思? 好了,一切都很好。 你犯了一个有效的请求。 这里有一个有效的响应。 我能救 正是你想要的。 有时候,你可能会得到其他的东西 你不会马上通知 但有些失败。 他们是所谓的重定向。 有两种最常见的在这里。 301动了Permanently-- 这是什么基本上意味着 是页是现在在新的位置。 这将生活永远存在。 和大多数浏览器将 自动重定向。 所以,你永远不会真正看到 301,或者,除非你是 使用真正走出过期 浏览器,可能的话, 因为301响应的一部分 圆点,圆点,301响应点。 它还告诉你在哪里新的页面。 所以大多数的浏览器将 只是重新定位你在那里, 假设你想去那里。 有时你也得302找到。 而这一次你真的 可能还会看到一些偶尔为之。 有时,页面之间移动暂时的。 所以它不会被建成 请求告诉浏览器 永久改变任何时间 它认为该请求你 令将其更改为别的东西。 所以,你可能会看到302 研究发现,基本上 说这页住在别处。 但它不会 住在这里,直到永远。 这最终将可能会去 回到你认为它是。 然后你会得到的东西 像客户端错误。 因此,这些都是那些你已经 可能看到,现在。 你可能没见过 200到299或300秒, 但你可能 熟悉400S。 而这正是我们将讨论 大约在一秒钟,500秒为好。 您可能会看到401未授权。 通常,这意味着你 试图访问一个页面, 但你还没有登录。 所以,你试着去一些 配置文件什么的在Facebook 或者你尝试和访问 some--你在工作。 你试图访问的东西 你的工作的互联网上, 但你不能登录。 你看不到的页面。 你可能会得到一个401未经授权, 这意味着我们可能 将能满足这个要求, 但首先你需要登录这样做。 相反,你可能会得到403 紫禁城,它并没有真正是 如果你登录或没有关系。 这个请求是不允许的。 资源存在于服务器上。 但是,你不能访问它。 这通常是内部文件 活服务器出于各种原因在 但并不意在 从外界访问, 所以他们是被禁止的。 他们生活在那里。 我不是说我不能找到它。 但我说我不能给你。 它并不重要,如果无所谓 你或没有登录。 然后当然, 很常见的404未找​​到。 该文件不存在于服务器上。 我想,以满足 你的要求,但我不能。 也有时会看到服务器 错误,最常见的一般 是500内部服务器错误,这 实际上并没有告诉你什么 在所有关于什么错误。 但它实际上不是你做 一个错误在你的要求。 它实际上是服务器故障 对请求提供某种方式。 所以500是一般的反应。 您还可以看到一些东西 像服务不可用, 我相信这是代码503。 和网关Timeout--如果 你曾经有一个网页只是 坐在那里装, 载荷和载荷 你永远不知道,如果它要 负载,然后最终它只是says-- 只是放弃。 这是一个504网关超时。 服务器要 执行您的要求, 但出事了 在服务器side-- 不是你side--到 导致该是一个问题。 现在,我们可以在这里结束的故事, 但实际上,我现在要做的 是我要去开拓 我的浏览器,并告诉你 你怎么可能能看到 一些状态码 即使你通常不会看到它们。 而我们要做的,通过采取 看看一些开发工具。 好吧所以我在这里 现在在我的浏览器窗口。 我想学一点点 更多有关这些HTTP请求。 我怎么知道 - 当然,我们知道,如果一个 页面goes--出问题的时候, 我们得到了404。 我们都看到了。 我们并不需要以说明。 但是,有一些其他的? 而我们怎么能看到 在行动中,这些要求? 我要去所以第一件事情 要做的就是打开开发人员工具。 因此,开发工具是建立 到最现代的浏览器 并让我们看到的东西 我们不以其他方式 see--一些额外的信息排序 下面我们的网络传输 要求。 我使用谷歌浏览器在这里。 并开放开发工具 在浏览器,您只需点击F-12, 而这将打开 它挂在侧。 当我输入的要求,我会放大 因此,我们可以看到是怎么回事。 但我会做我的浏览器 酒吧is--我会放大在这里 - 我会主动要求到www.google.com。 我们都可能发 这一要求之前。 我要敲回车。 现在,在这里我开发 工具,我选择了网络选项卡。 而且你发现很多东西在这里。 看看these-- 200行,200行,一些 状态代码上来。 我不知道为什么我得到302找到。 我不知道我看到那一个。 但基本上注意到,漂亮 多,我的谷歌request--方面 我做了一个非常简单的 要求谷歌的网页。 和在过程中 提供我的要求, 谷歌显然已经做了很多 代表我的其他请求。 但是我做了谷歌的GET请求 页面,我得到了很多的200 OKS。 我没有看到200 OK的 我的屏幕,但我发现 大量的请求已作出的。 还有一个,我敢 肯定是去工作 is--对于那些你们谁 真的是老学校, 你可能知道Facebook 不总是在Facebook.com。 在它的早期它是 在wwww.thefacebook.com。 他们显然无法得到接入 到Facebook.com很长一段时间。 所以我很期待 这里是获取信息。 我们会看到,如果这个盘子。 我很期待在这里 是为了获取信息 称Facebook已被永久移动 从thefacebook.com到Facebook.com。 所以,我期待的地方 靠近我请求顶部 在我的开发工具 获得301通知 称Facebook已被永久移动。 同样,我不会看301 在我的浏览器屏幕。 而且因为它是一个301, 这是一个永久转会。 我的浏览器,在于 这是一个现代的浏览器, 很可能会重定向 我Facebook.com反正。 但是,让我们看看会发生什么。 现在我要去 去thefacebook.com。 而且是的,那里是正确的顶部。 它走了,但它在那里。 让我在这里滚动起来。 就在这里在顶部。 我提出申请,要求thefacebook.com, 而我得到的回应 这个页面已被永久移动。 在这里,那么307 内部重定向。 所以这是有实际 让我感动的更 熟悉www.facebook.com。 因此,这些响应代码做的还是 发生,即使我们没有看到他们。 我不打算 示401,403,404, 因为你可能已经看到了 那些在不同的点。 500,我也只是 一种of--我们会得到幸运 如果有一个5​​00,因为我们不知道是什么 服务器目前在任何地方。 但是,这些代码做 存在,并且有一种方法 访问他们,即使我们不这样做 看到他们亲眼我们的系统上。 我是道格·劳埃德。 这是CS50。