[Powered by Google Translate] 第7周,续] 戴维·J·马兰,哈佛大学] 这是CS50。[CS50.TV] 好的。欢迎回来。这是CS50, 这是结束的第7周。 因此,这些愚蠢的小东西,在互联网 和我们咕噜咕噜起来,它现在应该有点令人讨厌的意义。 嗯,这是滑稽的,这家伙比你们。 说到,好了,伙计们, 今天是Nate的生日。 为了让你的感觉是多么好的内特和我 在周一类网站发展的基础上,根据现在这个, 我想我会拉Nate的主页,如果你还没有看到它。 我们在这里可以看到,这IA Nate的HTML。 所以,看他的源代码,如果你想看看如何做到这一点,和Nate, 如果我们能够难堪你只是简单,工作人员给你买了一点东西 如果你想与这里的孩子们在课堂上与大家分享一些甜点。 如果你想下来吧。 大家都鼓掌,是很不错的,但没有人坐在附近的任何地方,内特 - 由于某些原因,在该后区。 因此,也许你可以找到一些人来享受这些。 祝你生日快乐,内特。 其他打着招呼:我们发现一对夫妇的片段从我们的CS50x的学生。 如果你想看看还有谁是世界上 的关注着你,你可以前往这个URL, 约瑟夫,我们的转录因子之一,已建立了蒙太奇的各种 每个人都提交这些影片,其中瑞克Astley。 如果你浏览这些,它真的很鼓舞人心 看的多样性的国家和城市,人都欢呼。 所以,如果你想借此看看那个,那将是通过学期结束的时候。 今天,我们继续我们看看在Web,Web编程,HTML之类的, ,我们也吃午餐来了这个星期五 如果你想,特别的是,还没有这样做之前。 这个星期五的主题将是Nate的生日, 所以,如果你想和Nate的生日午餐 和其他一些行业的朋友, 请头部有该URL。 空间,始终是有限的。另外,如果你忘了, 认识到下周的截止日期是问题设置4的寻宝, ,据此恢复后,从card.raw所有那些JPEGS的, 你和你的部分队友,如果你愿意,可以尝试拍摄 许多计算机科学家,记忆卡可能, 你和你的部分将赢取丰富奖品。 请参阅什么以及何时提交pset中的规范。 另外,如果你想有你的手工永生 该课程的网站和它的历史的服装, 知道你是欢迎现在就开始提交设计 今年的T-恤和运动衫和类似。 我们将竭尽所能,包括尽可能多的,因为我们可以, 但我们还会有一些工作人员审查所有成员的设计 以确保它们符合规格, 然后我们一般挑了一把他们将要展出。 所以,如果你的设计类型,只知道要求 图形PNG,至少有200 DPI, 它们不应该超过4000 x 4000像素, 不超过10 MB,但是你欢迎使用类的东西 Photoshop或GIMP或各种图形的程序, 无论您在您的处置。 此外,在地平线上的是项目的决赛。最后的项目真的是50的高潮, 据此,所有任务的过程中, 这是你的机会,真正做自己的事情。 这可以简单地做一些乐趣, 它可以解决一些紧迫的问题,学生组, 一些新的网站​​,一些新的数据收集机制。 它可以是一个移动的Andr​​oid应用程序,适用于iOS。 说真的,天空是极限,在未来的几个星期中, 我们从C到这些高级语言,如PHP和JavaScript的过渡, 你会发现自己越来越熟悉一些真实世界的技术, 一些现实世界的工具,并补充说, 知道,当然是有历史的研讨会, 在未来的几个星期中,一些教学人员 从校园和我们的朋友提供了可选的研讨会 这超出的部分通常是在 给你介绍Android编程类的东西, 向您介绍的iOS编程等 或更高级的Web开发技术。 这些已经在网上有一个整体的历史。 如果你去cs50.net/seminars,我们一直这样做,很长一段年, 你会看到这里的PDF文件和视频存档和 研讨会的几十个视频。 例如,去年,我们有一个研讨会技术面试上acing, 如果你实际上是在寻找离开,去实习或全职演出。 Windows Mobile的开发,Android的发展,谷歌地图, API,CSS,黑莓,Emacs的发展。 真的,欢迎您来看一看在您方便的在任何这些研讨会。 我们将举行一些新的学期,也是如此。 那么,什么是提前与最终的项目? 嗯,首先,即使这个日期是有些迫在眉睫, 这真的只是一个机会,开始思考最后的项目很切实。 我们只知道一些什么,我们还是会覆盖在使用过程中的开端, HTML,PHP之类的,但你都熟悉网络, 我和偏见,只是因为这次谈话向网络 大多数人做的基于Web的最后项目, 但绝不是必要的。 使用C是好的,客观的C,Java, 你可能知道或想知道的任何其他语言是相当的精细。 但是,为了得到的源源不断最初,我们将期待提交的preproposal 其中,按照网站上的PDF,这是目前在cs50.net, 在左上角,你会看到最终的项目 是规范最终的项目, 并在那里是上preproposal细节和类似物。 它几乎可以归结为一封电子邮件给您的教学研究员 只是为了与他或她搭讪,你在想什么。 ,在projects.cs50.net是一个仓库,从人们的思想在校园 如果你努力想出一些想法, 和manual.cs50.net/APIs是一个仓库,对API的链接。 什么,虽然是API? 什么是API?我已经说过了至少两次, 在过去几个星期的成绩单。 那是什么? [学生,不知所云] >>好,好。因此,一些编程接口。 应用程序编程接口,这样就可以采取几种形式, 但是这真的归结为是代码 别人海关书面或别人已收集的数据 是由一些编程的方式提供给您的。 您可以编写代码,在C,PHP,Python和Ruby, 无论您选择的语言通常来说, 你能以某种建立在别人的功能 或其他人的数据集。 举例来说,如果我去这个链接, 在随后出现的页面中,你会看到一个链接对 据此,我们有CS50自己的API,这是非常哈佛大学为中心,然后第三方的API。 其中第三方API是真正有用的东西 如能够发送短信的人, 能接收短信的人。 之类的东西,你可能不知道如何实现自己, 但由于服务,一些免费的,有些商业, 你可以这些基础之上,做你感兴趣的东西。 在CS50的API,这些校园为中心的东西,如 哈佛大学的课程,能源,事件,食物,地图,新闻,推特和Shuttleboy自己的, 而这些,看起来有点像这样的API。 让我拉起HarvardFood API。 如果你曾经HUD的网站,你可能已经在那里 只是看看有什么吃晚餐或看一些D-大厅小时。 嗯,这是特别不容易进行导航, 所以我们没有前一段时间我们编写软件, 它正好是在PHP中,实际屏幕擦伤整个HUD的网站。 筛选刮的东西,就是写一个程序的语言,如PHP 伪装成浏览器,即使你可能在命令提示符下运行它, 伪装成浏览器,连接到一个网站, 下载它的HTML,它的书面语言, 然后读取它,或者更具体地说,分析它 从上到下,从左到右。 我们做的这样一种方式,我们写我们的代码中 任何时候,我们看到的东西在HTML菜单上的东西,看起来像, 像汉堡包,然后将其导入我们自己的数据库。 任何时候,我们看到了营养成分,我们将导入到我们自己的数据库。 我们所做的就是利用一个事实,即HUD的网站, 即使它可能是一个有点挑战我们人类导航 引擎盖下的,所有的HTML生成自己的计算机程序。 所以,在所有的HTML,即使它可能显得凌乱, 引擎盖下的最喜欢的网站,它遵循一个模式。 所以我们只花了几个小时,计算出该模式 因此,在年底,我们扔掉所有的杂乱HTML, 所有的美学大胆的面向和斜体之类的, 然后,我们能够做的是暴露相同的数据。 例如,以这种方式。 所以我们,根据这里的文档, 向世界,如果你请求一个URL 像这样的,food.cs50.net /的东西, 和你提供的某些参数,我们今天来谈谈, 像结束日期时间,开始日期时间,吃饭等等, 我们的服务器会返回给你,例如, 是像一个Excel文件,CSV文件,的逗号separted值, 在这个特殊的日期为早餐包含一切在去年3月 当我偶然写了这个文件。 对于那些熟悉,CSV文件格式是不是唯一的。 还有另一种更通用的格式 被称为JSON,JavaScript对象表示法。 这种格式的数据可以回来。 因此,这里的外卖是,无论你潜入这个API 或任何其他CS50或任何在互联网上, 或根本没有认识到,世界已经开始越来越多的规范 机互通。 我们使用标准的数据格式,如CSV或JSON。 这意味着什么给你的,是你可以写一个程序有趣的部分 允许用户在搜索的用餐大厅的菜单, ,让他们创建的收藏夹列表,让他们得到文字提示 当他们最喜爱的食物是曾在一些D-大厅 通过使用别人的数据集和建设他们的API上。 所以,在研讨会的形式和文档,你必须在网上。 因此,那些话,这些API。 这把我们带回到HTML。快速回顾一下。 HTML是什么? [学生,不知所云] >>好。超文本标记语言。 别人的,超文本标记语言是什么? 超文本标记语言。 好吧。因此,HTML,超文本。 超文本仅仅是指到Web上,在大多数情况下。 标记意味着它不是真正的编程语言,HTML。 这是不是一种语言,你可以表示逻辑英寸 它不具有循环。它不具备的条件。 它不具有的功能,本身。 相反,它有这些东西叫做标签,或者更恰当的元素。 这些元素的开始标记和结束标记, 或打开标签和关闭标签,这些标签通常是指为一个浏览器, 开始做的东西,然后停止做某事,但也有例外那个。 有时,它只是把一个换行符,例如。 我们看到的例子,日前,之间大胆的面向, 换行,然后一对夫妇的其他标签。 因此,HTML是网页被写入所用的语言。 所以,如果我去像Google.com 拉了他们的主页, 记得,如果您右键单击或控制点击 并期待在查看页面源代码,通常 引擎盖下面的这些日子里,它是一个完整的一塌糊涂,但是那是因为 电脑不关心空白,所以这并没有使自己显得漂亮。 但是,如果我们放大部分, 注意到,Chrome浏览器,只是对我好,颜色编码的东西。 事实上,这是第一个在网页中,我们看到的标签。 再次,HTML 5,这个语言的最新版本, 确实有这样的事情在一开始, <!DOCTYPE HTML,是否小写或大写, 但是这只是说,世界哎,来了一个HTML文件,在版本5的标准。 最有趣的部分从这里开始。因此,>是的,我们已经解决了这个前 通过明确地告诉浏览器的线在这里休息一下。“ 那是因为,再次,浏览器的唯一要做的事情 明确的标记语言告诉它做什么, 因此,即使你可能击中输入一次或两次,甚至十几倍, 它会结合成一个单一的空间,只是按照惯例。 所以,如果你真的想要一个换行符,你必须使用br标签, 现在通知,周一一样,我把/这个标签内的, 不仅是因​​为这只是感觉不对 开始一个换行符,然后停止它没有在两者之间。 因此,在HTML中约定,同时打开和关闭标签。 顺便说一句,你会看到很多网站在书本上没有这样做。 做或不这样做,但我们认为这是正确的 ,在设计上和风格,这仅仅是更好的 因为那时每一个标签都莫名其妙地打开和关闭。 现在让我们来保存和重新加载。返回到浏览器,还行。 现在,我们取得了一些进展,但还远远不够。 让我们继续前进,并开始输入一些较长的文本正文。 因此,让我们说,'A敏捷的棕色狐狸跳过了一只懒惰的狗。“ 现在让我只需复制并粘贴了几次 所以,我们有一个段落的文字。 让我回去在这里。因此,它看起来很不错。 我有一个换行符,所以没关系, 但现在,一旦我们得到的点有一个网页 有大量的内容,不只是单一的线,展示HTML, 我们就可以开始考虑这些事情的实际段。 我们就可以开始构建我们的网页更干净一点。 事实上,我能做的就是在这里,我的身体标记内的, 你知道吗,如果这是CS50。 。 “。真的demarks一个段落的开始, 好了,让这样的标签。 让我缩进文本,只是按照惯例,让我说“ 这一段在这里结束, 然后,而不是做这行的休息,让我只想说, 这属于那里,作为一个新的段落, 我就很快缩进只是弄错所有的这些东西。 所以,现在我们有一个缩进的段落, 现在我们的标记开始得到多一点 语义上一致,我们正在试图做的是什么。 我们有一个段落,所以我们称它为一个段落p标签的。 我们有第二个段落,让我们称它为一个段落p标签的。 现在,浏览器通常会做 就像是一本英语书或文章, 你通常会看到一些换行段落之间。 浏览器会自动为你做的。 所以,现在我们有两个段落,我们可以继续。 但是,当然,在网络上,当你有机构文本 它不是通常的文字是巨大的斑点。 在那里经常有超链接。 因此,如果我们想,比如,包括一些链接, 假设我在这里创建的网页的兴趣可能是什么 - 让我去到Google.com, 让我寻找一个敏捷的棕色狐狸。 谷歌图片,怎么样 - 这是可爱的。 我们会与此有关。所以,我们在这里有一个快速的棕色狐狸跳过了一只懒惰的狗。 那么,我要在这里做,只是为了证明, 是假设图像,这是我的服务器上, 和我一直在创造这些图像。 我只是做了右键单击或控制点击图片, 在大多数浏览器,你会看到的是一个小菜单 - 停止这样做 - 一个小菜单,允许你选择复制链接位置或复制网址。 因此,让我回去,现在我的HTML,和假设,我想 超链接到另一个网页。 要求,标签是什么? [学生,不知所云] >>呀。因此,超A HREF参考。 让我继续前进,粘贴,在。 这是一个很长的URL,所以让我放大了。 关闭括号,所以现在看到我来这里的路上 ,因为这的URL发生在相当长的。 让我滚动敏捷的棕色狐狸年底, 然后让我关闭这个标签。 因此,在顶部的蓝色的一切只是一个评论。 这是我的DOCTYPE声明,这再次, 你可以复制和粘贴的信仰,现在。 这只是告诉浏览器“,来了一些HTML 5。 下面说,在第14行,是我的第一个实际的标签, 这只是说,像以前一样,来这里的一些HTML, 来这里的头,我的网页,来这里的标题, ,然后,相反,这是它的标题,这是它的头。 这里现在的身体我的网页。 所以一对夫妇的新标签:H1表示为标题1。 有一个传统的HTML多年 具有不同尺寸的文本。 早在一天,每一个的意思,一般情况下,只有大和大胆的。 但也有H2,这是大的,但不太大,大胆。 H3,这是一种大的,但几乎没有大的和大胆的, 等等,一路下滑到h6。 不过,这些天来,H1,H2和H3的真正含义 他们有更多的语义含义, 据此,h1是真正的标题:一个网页的标题, 标题的列或类似的文字。 所以,我故意说H1 CS50搜索> H1 到指定要,这是真正的标题,我的网页的标题。 不是标题,在标题栏意义上的, 但您实际看到的标题,在网页本身,在体内。 现在这种情况,你可能已经猜到它是什么, 即使我们有一些新的语法。 这是一种形式。因此,网络真正变得有趣 当网站用户的输入。 在这个类中,Web编程设置的问题, 我们不打算做一个网站,本身, 与静态内容显示你的照片, 或者这是我的简历,关于我的事情, 因为这些东西都比较容易放在一起。 在网络上,这是很难做的东西漂亮, 但至少内容是非常简单。 但是,事情变得非常有趣,当有人访问您的网站 ,并提供输入,可以填写表格, 可以检查复选框,并可以与您的网站。 事实上,大概每一个网站,你关心 这些天来,在任何一个细节,是某种互动。 Facebook,谷歌和喜欢,接受用户输入 生成自定义输出。 因此,让我们现在开始做。现在让我们的过渡 只是用HTML标记的静态内容 作为代替动态内容的交付机制。 为此,让我们来实现我们自己的搜索引擎。 让我们做如下的工作。这里的表单标签。 action属性指定,当用户填写该表单 他们的键盘,它会在这里提交此URL。 所以我一种欺骗。这将带我们一点时间 不止一个类来实现整个搜索引擎, 所以我们就做前端,可以这么说。 我们会做的部分,让用户搜索,我们将排序的平底船谷歌 发现搜索结果的最困难的部分, 但是,具体而言,我要谈谷歌的Web服务器 使用两个非常流行的方法之一。 一个是得到,另外,我们最终会看到,后, 尽管还有其它不太常用的。 因此,得到的只是让人想起了主意,我希望得到一些内容,一些搜索结果。 这一点,你也许可以猜到这是什么做的。 这是某种形式的输入,它,其实,看起来像一个文本字段, 和该输入的名称,该变量的名称,可以这么说, 将按照惯例为Q的查询。 再次,输入的类型,这不会是一个复选框; 它不会是一个菜单,这将是一个文本字段 表示此属性在这里,这个文本框, 像换​​行,要么是有或没有。 因此,我们有一个空元素,该标签内的斜线。 然后,我打算把一个换行符,你可以,也许,你猜怎么着,这是要做的。 这是另一种形式的输入。 这是怎么回事用于提交表单。 因此,这将是大按钮,用户可以单击“提交表单”, 和该按钮上的标签将是“CS50搜索”。 关闭形式,靠近身体,靠近HTML。 让我们看看我们在本网页的形式。 所以,让我去我的浏览器, 让我走,还是到本地主机。 这仍然是index.html的,所以如果我想看到此文件称为搜索0, 我可以简单地做/ search0.html,输入 - 我的错误。 这是怎么回事呢?我很清楚没有权限 访问该文件,因为某些原因。 但是,这是因为,不同的工作,我们已经做了迄今为止在C中, 你写的程序被认为是可运行的, 由你的可执行文件,这是不确实的情况下在网络上, 据此,有时您可能希望在服务器上创建文件, 但你不希望全世界的人都能够看到他们。 相反,你希望世界看到一些文件 但不是别人,只是对隐私的缘故。 所以,更重要的是当你在做的事情在网络上的一个选择的基础。 因此,让我居然在这里输入ls, 和你看到的我的文件,但记得,如果我做ls-l的长, 我会得到一个更长的上市,给了我一些有关这些文件的详细信息 现在,真的,为相关的第一时间,我们。 请注意,最右边的是我的文件的名称, 然后时间,在该时间的最后修改或复制。 这个数字是什么?你还记得吗? 大小(以字节为单位),该文件是多大。 所以,我似乎有某种标志,在这里,大于所有其他文件。 这是我是谁,这是我和我哪个组英寸 但随后,在这里,左边是一个有点神秘的序列, 和我们谈过,我认为,简单介绍一下在过去, 但做的权限。 而且,即使这是一个有点朦胧, RW可能意味着读取和写入。 因此,原来,这些虚线表示对不同的人不同的权限集。 和图案,本质上,如下所示。 当你看到一个序列的破折号,如下所示。 有一个破折号,然后有三个以上的破折号, 然后有另外三个,那么还有另外三个。 第一个是破折号或它的广告目录。 因此,一个人是很容易的。如果它是一个文件夹,它说,D,否则这是一个连字符。 其他情况下,有一对夫妇,但现在我们只关心文件和目录。 这接下来的三个破折号 - 我一直人为地插入空格。 ,显然,他们不存在,当我们看到他们刚才。 这些文件所有者的权限, 和记得一秒钟前,它被读取和写入。 那是因为我,刚才谁创造了这个文件的人, 我,只是默认情况下,在Linux计算机上, 有能力继续读取和写入该文件。 因此,操作系统只是给了我RW自动。 中间涉及到我的小组,学生, 这是一种毫无意义的设备上,因为我是唯一的人使用该设备。 因此,让我现在只是挥挥手。 但最后一个是最重要的网络。 这是在世界上的其他人,而事实上 那就是---意味着没有人在世界上的其他 有这个文件的任何权限。 显然,这是一个问题,所以我需要解决这个问题 以某种方式给世界什么?读与写吗? 这可能是愚蠢的,对不对?我不想让任何人在网络上 去访问我的网页,并以某种方式更改该文件, 即使他们实在无法用一个HTML文件, 但只是在原则上,可能只是希望他们能够读它。 是什么意思看呢?这并不意味着他们要关心的实际HTML, 但浏览器必须能够解析该标记语言, 从上到下,从左到右。 因此,有人在网络上需要能够读取它,所以我最低限度需要给R型。 我可以在几个不同的方式来做到这一点,但或许 最简单的就是在这里运行此命令。 文件模式,改变模式,那么+ R,每个人都在世界+读, 然后的名称的文件,search0.html。 现在,如果我做的ls-l再次,请注意,该文件已经改变, 而事实上,我已经拒绝对r的每一个人。 我也把它为我的团队,但是没有关系, 因为如果我交了就为大家,我是一个子集。 所以,这是一件好事。这也就意味着现在可读的计算机。 现在让我回到我的浏览器中,单击“重新加载。 啊哈。我们现在有CS50搜索。 我在一个小人为地 - 相当可怕的搜索引擎已经放大。 但是,让我们看看它的实际工作。 首先,请允许我做一个快速的完整性检查让我控制点击,并查看页面的源代码。 请注意,在Chrome中,我们看到了同样的HTML,我自己创建。 不要混淆这里,虽然。我不能改变这里的代码, 因为这段代码的浏览器有一个只读视图。 浏览器只是问当地一个名为search0.html的主机。 现在是纯属巧合设备 恰好是我的浏览器在同一台计算机上。 我可能只是等价地,输入的www.facebook.com/search0.html, ,如果Facebook有一个文件叫,我将看到他们的HTML。 而且,当然,我不能改变从Facebook回来的文件,无论是。 所以,现在,我们的界限模糊。 该设备是一台服务器,提供网页, 但它也是一个在这个意义上,我使用的是浏览器的客户端 其实跟到该服务器。 因此,让我们来看看,如果我的谷歌搜索引擎的工作原理。 让我继续前进,寻找敏捷的棕色狐狸,进入。 瞧,我现在有我自己的搜索引擎。 但如何工作的呢? 有点夸张,但是 - 现在你可以看到,准确地说,这是利益的部分。 请注意会发生什么。 请注意在URL。事实证明,这个方法, 叫得到的,是超简单。 当你的形式指定要'get'的结果从一些服务器, 它会做什么,不管你的形式输入到 并把它的URL。 这将规范投入如何得到如下的URL。 请注意,这是URL,这是我的action属性值。 这就是我想要的形式结束了。 但后来发现这个问号。 这是一个约定,在网络上,从而提供用户输入 一个网站,你附加到URL的问号, 然后你有一大堆的键 - 值对。 一个键,否则参数作为已知的在Web的名称, 然后你有一个等号,那么你该参数的值。 因此,它本质上是一个变量名和变量值, 但这些变量的名称和值从HTML表单。 为什么是那里的长处,你觉得呢? 因为我没有键入+之间我的话。 [学生,不知所云] 是的,它只是为间距。奇怪的是,每当你看到一个URL, 从未有任何空格,如果仅仅是因为 如果有,你能不能真的复制和粘贴 到IM或到电子邮件中,因为这将打破。 你想整个事情是一个连续的字符串中的字符。 因此,浏览器是明智地意识到,嗯,嗯。 不要只是把一个空间里。让我的空间在一些标准的方式进行编码。 这样的约定是让浏览器 自动把一个+,否则你将有一个空间。 所以,现在,谷歌通知,已经种用户友好。 当然,我没有创建这个网页, 但他们会预先填入自己的文本字段 什么,确切地说,我输入的字词。 假设我要搜索其他的东西,就像一个懒惰的狗。 我可以只需键入此,重新搜索。 请注意,这里的URL改变了, 但是请注意,我可以搜索任何我想要的东西 只是了解URL的工作。 我可以做懒的猫,输入, 并注意现在我得到一个非常懒惰 - 我们应该吗?我觉得我们应该。 我得到一个非常懒惰的猫。 好的。这是我们所做的最愚蠢的事情之一。 但是,这是一个懒惰的猫。 总之,这里的关键是什么外卖? 现在,我们在世界上的HTTP玩。 HTML是眼前这个标记语言,开放标签,关闭标签, ,告诉浏览器如何呈现内容的网页上。 但是当你开始在互联网上的数据传输 Web浏览器和服务器之间,这就是此协议 被称为超文本传输​​协议接管。 这是那种人的约定,当山姆和我握手,上周一, 开始一个连接,然后关闭连接,同样的想法。 谷歌的结果是如何回来给我吗? 我的表单提交是如何去谷歌吗? 好了,还记得,有一天,到底发生了什么上 当你请求一个网页时,是引擎盖下的, 您的浏览器发送一个有点神秘的信息,如 GET / HTTP/1.1的默认主页。 或者,在这种情况下,因为我特别要求更早 sea​​rch0.html,这将是有点晦涩的消息 我的浏览器发送到设备上。 或者,在这种情况下,谷歌,什么实际发送 是一种请求/搜索,然后Q =懒惰的猫,用加有。 所以这条消息,我的人,我永远不会打字, 但我的浏览器发送的,这是怎么了HTTP发生。 这相当于我们握手。 这是一个请求,并的服务器有关发送一个响应。 因此,让我们来看看下面的这个发动机罩。 像以前一样,我们可以打开这个特殊的领域,在浏览器中。 查看页面,检查元素。 所以在检查的元素,注意到发生了什么事在Chrome中, IE和Firefox也有类似的机制, 我们有访问我们这些开发工具。 正常的人不要使用这些标签。 但是,我们现在这是怎么回事,有兴趣的 在网络层面的引擎盖下面。 所以,如果我拉起来的网络水平, 让我继续和扩大这个窗口, 打开此项目,并期待在头。 那么,当我请求一个文件从Web服务器 是我的浏览器发送了一大堆的东西。 让我查看源代码。因此,根据请求头, 而这仅仅是镀铬向我展示一些诊断输出, 有点像某种形式的调试器, 注意,我这里强调的恰恰是什么 Chrome浏览器向服务器发送,以要求称为search0.html的文件。 这是告诉服务器它认为它的名字是什么, 由于这台主机结肠领域,有一些 相当深奥的东西在这里,日期和时间做喜欢的事, 东西做的浏览器理解的语言, 但真正重要的行前两个这里。 什么是服务器响应?那么,如果我们向下滚动 这件事情和查看源代码,请注意服务器 已作出回应,以及一个晦涩的消息,304不会被修改。 这是一个有点陌生,让我真正尝试解决这个问题。 让我按住shift键,然后单击“重新加载在这里 强制浏览器,实际上使这第一次请求。 然后让我放大,我们现在可以看到,服务器的响应, 因为我持有的转变,是200 OK。 所以,你可能从未见过的数量200 网络的上下文中,但什么号码 你有时会看到意外地从一台服务器呢? 404文件未找到; 403,故宫,500,服务器错误。 因此,有世界上使用这些数字代码在Web 表示错误,就像C语言功能 可以返回错误,主要可以返回退出代码。 200,虽然你很少看到的,因为这意味着一切都很好。 和304,你可能永远不会看到的,因为它意味着什么? 什么事都没有 - 让我们看看我们是否可以模拟这再次 - 哦,现在不是合作。 304说不能修改, 那么,为什么即使服务器响应? 好了,为了提高效率,Web服务器会自动为你, 如果该文件并没有改变,它不会重发整个HTML文件。 它会告诉浏览器,它并没有改变。 只要使用你已经拥有的副本。 因此,有这种观念的缓存在Web上 的性能,让你不浪费时间,浪费带宽 下载文件一次又一次不必要的。 但,现在,这个网页是超级简单, 只显示我的HTML回来。 让我们实际使用的网络“选项卡,现在做谷歌搜索一样敏捷的棕色狐狸。 让我单击CS50搜索, 现在,请注意这里的底部一大堆东西回来 因为当我访问一个真正的网站,如Google.com, 他们有图像,有文字,有语言JavaScript有。 因此,本表中的每一行到这里 表示,谷歌的东西吐了出来,我的单个请求的响应。 我所关心的,不过,这是第一个。 如果我去搜索请求,请点击这里查看源代码, 注意到,实际上,晦涩的消息,我的浏览器发送 谷歌是这两条线在这里, 到这里,我们会忽略了一些神秘的信息。 但要注意,太,什么浏览器是非常方便的, 它也显示出我的查询字符串被送往英寸 因此,而不是告诉我,这是从字面上发送, 如果我认为它解码,铬,只是为了调试的目的, 像我们这样的开发人员,它只是向我展示一个人性化的版本 - 那是不是你拼狐狸,显然。 我只是注意到这个现在 - 但它显示你看看我,显然,键入。 同时,再次从服务器返回的响应是200 OK。 但是,包含在该响应中,当然 如果我们查看页面的HTML - 遗憾的是,这是一个有点歪了今天的键盘快捷键。 稍后我会处理这。因此,如果我们查看页面的源代码, 我可以做下来在这里通过点击响应, 这是什么吐回,除了那个神秘的200 OK邮件从服务器。 有点神秘,但在这一切的呢? 好吧,让我们在这里做的另一件事情。另外一个有点神秘的命令, 但一个人的一种整齐的,因为它向我们揭示了到底发生了什么引擎盖下的。 所以,我回到我的Mac上,我已连接 通过了一项名为SSH,安全壳,到另一台服务器 因为大多数哈佛的电脑封锁的命令,我们即将运行 因为有这条命令在某些服务器上称为traceroute的 允许您跟踪点A和B之间的路由, 到目前为止,我们已经采取完全是理所当然的 我可以在Google.com键入并以某种方式得到的数据 从中途在全国或世界各地的一半。 ,通过traceroute的,我们可以潜得更深一些, 互联网是如何工作的,看看下面的引擎盖上发生了什么事情。 因此,让我们继续前进,任意跟踪路线,说,Stanford.edu, 这是遍布全国各地,并按下回车键。 此命令可以超快速或超慢, 但我们现在看到,一行行, 是每一个我们之间和Palo Alto,或斯坦福的步骤或跳, 他们有他们的网络服务器。 那么,是什么每一行代表更具体的是,虽然? 一块从互联网上的专业术语吗? [学生,不知所云] >>那是什么? [学生,不知所云] “哦,那是时间,但每一行 - 什么是什么我的意思是跳? 好了,这些东西在互联网上被称为路由器。 路由器,顾名思义,路由信息从a点到b。 但也有一些超越A和B点。 有c和d,e和f之间的第1行中, 这恰好是我的电脑的IP地址, 我的数字地址,它唯一标识了我的电脑, 第15步,这实际上是第六Web服务器, 显然,我从这个推断,或在斯坦福大学的Web服务器第6版。 但是,什么样的清爽,我们可以看到路径 我的0和1的从我的电脑正在斯坦福大学。 因此,第1步是我自己的电脑的地址。 互联网上的每台计算机都有一个唯一的标识符看起来像这样。 Number.number.number.number。 在这个校园里的某个地方,可能在科学中心, 是一台路由器被称为核心网关2 te83,这意味着什么, 所以这是一个哈佛的大花式路由器的路由了很多他们的交通。 下面是哈佛大学的另一个路由器,这个人是边界网关, 边界的意义,它可能是对校园周边的地方。 有氮氧化物,第4行,这是北方的十字路口, 这是一个大的ISP,互联网服务提供商, 像哈佛,地方连接起来。 但接下来的事情得到一个有趣的小线6。 哪里是我的位一下子吗?堪萨斯州。 世界上有使用机场代码在很多这些东西的习惯, 或者至少对国家或城市的缩写, 所以,在短短的60毫秒,它看起来像 一个信息包,0和1的从我的笔记本电脑 得到了所有的方式,堪萨斯州,并再次,在60毫秒。 此外,堪萨斯州后,他们采取了游到休斯敦,可能, 所建议的这台服务器的名称。 因此,正如在互联网上的服务器必须有一个数字地址, (可选),它也可以有一个更人性化的地址,人类想出了。 现在,在第8步中,我们不知道这是什么。 有时候,路由器只是一种不理你, 他们只是不回答问题,所以这很好。 第8步一前一后显然是哪里?洛杉矶 请注意,只有78毫秒,正是这一点让我们像6小时以上的人,做物理, 信息的数据包在互联网上78毫秒要走那么远。 第10步是在LA,似乎已经北部,靠近斯坦福大学和步骤11。 这是他们的边界路由器或边界路由器。 在斯坦福大学的一对夫妇步骤都不理我们, 最后,我们到达Web服务器在短短的87毫秒。 现在,所有这些数字,顺便说一句, 只是告诉你,从我这里得到的数据需要多长时间 这些路由器,它是不累计。 这是什么程序,它首先发送一个消息,从本质上讲,到了第一个路由器。 然后第二个路由器,然后一到第三个路由器, 每次测量。因此,在理论上,这些时间会越来越大 或至少​​非常接近彼此, 而事实上,就在这里的校园超级小。 只要你开始在全国各地,它需要的数据 一点时间来旅游,接近100毫秒,或采取。 但是,让我们现在去另一个方向。在英国剑桥大学怎么样? 让我代替运行traceroute的www.cam剑桥, 这里学术交流。英国,并按下回车键。 这是非常该死的快。 我的数据从字面上去英国剑桥,在那一刹那的时间。 所以,让我们来看看,它采取了路径。 哈佛大学,哈佛大学,哈佛,北十字路口, 这是一个ISP,那么这是北十字路口,然后咣当。 在步骤6和7中,路由器6和7之间的是什么? 大西洋。我们推断的事实, 我们从这里毫秒20日至80毫秒。 因此就花了60毫秒,给予或采取克服。 这可能是一个大的水体。 在那之后的什么“?那么,在这里,我们是在伦敦, 只需88 ms后。更多伦敦,伦敦, 不知道这是哪里,但我们会假设它是除伦敦以外, 剑桥在这里,最后我们 - 从字面上看,英国剑桥大学 。something.net,然后,最后,在第16行, 他们的网络服务器显然是被称为天蝎座 引擎盖下的,即使我们知道它如www。 一种心灵吹,我想。我第一次这样做,它完全炸毁了我的脑海。 不幸的是,哈佛的流量,通常情况下,在网络上阻止这种。 所以,你不能做到这一点的超级容易。 实现,不过,这是可能的。 好的。让我们以我们在这里休息5分钟。我们会回来潜水更深。 因此,我们回来了,我们已经种缓步在几个不同的方向。 因此,让我们正是一直在这里总结。 我们开始谈话,谈论称为HTML语言。 同样,不是一种编程语言。这只是一种标记语言 在很大程度上这是一个网页形式的美学和结构的内容。 但是,HTML,因此,需要某种机制 Web浏览器和服务器之间的旅行。 HTML因此本其他语言类的游乐设施, 或者更确切地说,一个协议,被称为HTTP。 和HTTP,正如我们已经看到它迄今, 是一种类似于此人握手的惯例。 当浏览器从服务器请求页面时, 它发送“get”请求从浏览器到服务器, 然后服务器的响应与200这样的数字,一切正常, 以及HTML或一些不好的数字,例如404,未找到文件。 但与此同时,HTTP本身是不能上网,本身。 HTTP是一种服务,一种功能的互联网 像G聊天,很像电子邮件是另一种服务是另一种服务。 在互联网上做的事情,我们可以有各种。 HTTP是只是其中一个应用程序。 因此,在顶部 - HTTP是别的东西上 这是我们没有提到的名字,你可能听说过的名字,TCP / IP。 这样的故事,我们只是告诉所有关于 数据如何从点a到点b的。 在这种情况下,我们看到,在非常低的水平 路由器到路由器到路由器到路由器, 实际被发送的数据是如何。 但前进的道路上,会遇到各种各样的障碍,这是怎么回事。 除了这些路由器中,有一些事情在互联网上的防火墙, 等数据,例如我们刚刚发射 我从我到剑桥,斯坦福大学, 发送到,在这个层面上的东西,称为IP地址。 我们看到这一刻前,一个IP地址 只是一个数字的形式w.x.y.z地址, 这些之间,给予或采取,0和255之间, 虽然你不能完全使用所有这些数字。 但这些地方持有人是0和255之间的一个数字。 因此,一个IP地址,这些天是32位。 现在,让我们多少可以在世界上的IP地址? 大约4亿美元,因为任何时候,我们要计算2的幂 所有的方式多达32个的东西,为我们提供了四十亿美元。 所以这是一个很大的IP地址,但您可能已经阅读, 现在,你可能注意到在大众媒体, 一个推向一个新版本的IP IPV6。 现在我们正在使用的版本4。 其实一直没有一个版本5,我们只是跳右6。 6版本使用128位的IP地址,这真是太巨大。 我们不应该运行了相当长的一段时间, 但我们已经开始运行第4版IP地址, 因为我们不是唯一的东西,如笔记本电脑和台式机, 我们很多人有手机,我们很多人有其他设备 如TiVo和这样的IP地址。 哈佛本身有成千上万的数千台计算机。 世界真正运行的IP地址,至少这种形式。 因此,在未来的几年中,你将看到的地址 在自己的计算机上可能会慢慢改变 随着越来越多的公司和大学开始支持较新的版本。 但电脑一个请求数据从计算机B的IP地址是不够的。 由于计算机b可以是一个服务器, 和服务器,正如我前面提到的,可以做的事情束。 它可以承载的网页,也可以是一台邮件服务器, 它可以是一个Skype服务器,它可以是一个G的聊天服务器。 所有这些不同的服务,可以在服务器上提供 都可以,身体,是在同一台机器上。 因此,除了IP地址, 世界上有东西叫做互联网上的端口。 一个端口只是一个数字,所以有一个唯一的编号为HTTP。 它的数字是80。 HTTP也使用443号,但更具体地,用于加密的HTTPS。 每当你看到了s,安全,使用不同的数字。 有其他数字,如25,用于称为SMTP的东西,否则被称为电子邮件。 有一种叫22 SSH, 有一大堆其他港口,在那里。 现在,我们人类很少看到这些数字。 然而,当你键入一个地址,如http://www.facebook.com, 浏览器被偷偷插入80,因为你使用的是HTTP。 如果你,而不是键入HTTPS,它偷偷插入443。 我们可以看到这个手动的,如果我拉了一个的浏览器 并去http://www.facebook.com:80。 因此明确引用不只是的网站名称 但我想谈的端口,并按下回车键。 请注意,它会消失,因为浏览器假设, 哦,80,我也不去打扰显示,给你。 但这样做的原因是,如果我真的想向某人发送一封电子邮件, 我真的会被发送给他们在端口25上,这是SMTP。 有点过于简单了,但你有一些朋友 究竟是谁在Facebook上,同样,他们的接收邮件的服务器。 任何时候您发送一封电子邮件,Gmail是为你做 或Outlook或使用的程序, 它的排序,偷偷将这个数字为好,25日,在这种情况下。 这是这个组合的IP地址和数字,唯一标识 一个Internet上的计算机,该计算机上的一个特定的服务。 现在,当然,我们大多数人可能永远手动键入IP地址。 也许你已经在家电,但在现实世界中,没有这么多。 为什么我们不能到浏览器中输入IP地址吗? 它的工作,事实上,我们可以看到这一点,让我告诉你 另外一个命令,应该在哈佛大学校园的Mac或PC上的大多数地方。 此命令NSLOOKUP,域名服务器查询。 如果我抬头一看www.cnn.com,事实证明,CNN - 呵呵,有意思。 CNN已经开始使用Amazon Web Services。 你可能知道,云计算,亚马逊的云计算的大牌球星之一。 我只是做了,我说,'给我的地址的CNN的Web服务器, 但事实证明,亚马逊,CNN的Web服务器管理 亚马逊网络服务,这表明。 该服务器的地址是在这里。 所以我不知道这是否会工作,因为他们没有使用Amazon。 但是,让我们尝试http://相似,IP地址,输入和 - 它是去上班吗? 是。这是行不通的。互联网今天是超慢。 但是,在某一时刻,你会看到一些新闻故事。 我们走吧。美国银行(Bank of America)被起诉。好的。 这是因为这个IP地址恰好的代名词,www.cnn.com。 当然,这将是可怕的营销,说,请访问我们的网站50.112.94.127。 你从来不记得了。因此,即使这些日子里,你可能还记得的事情 如1-800-COLLECT或记忆的世界想出了电话号码。 其中,前手机,而难记 ,直到你可以只需键入它,把它抛在脑后。 因此,Web,也有本公约的名称和IP地址, 有这些东西有所谓的DNS服务器, 域名系统服务器,IP地址转换为名称,反之亦然。 所以,这是怎么回事引擎盖下的。 最后,我们有TCP / IP,这是非常低级别的协议 ,真的,只得到0和1的在互联网上, 它这样做,把它们放入一个虚拟的信封, 如果你愿意,写在外面的信封 目的地的IP地址,以及数字端口号 该目标,它想告诉的服务。 同时,在信封上也有一些被称为作为返回地址, 这是你的IP地址,这样,当CNN,你得到一个信息包 打开这个虚拟的信封,看到你想要的主页, 它知道这个虚拟的信封发送HTML回到从发件人的一部分。 因此,让我们一起来看看这款在一些更详细的。 这是从一家名为埃里克松,从几年前。 如何在互联网的实际工作中,他们采取了一些自由 但它比单纯的粉笔在这里描绘了一个更直观的图片。 所以我给你的互联网“有点。” [旁白]第一次在历史上, 人与机器一起工作,实现梦想。 一个团结的力量,知道没有地理界限的。 在不考虑种族,信仰或肤色。 通信真正给人们带来了一个新的时代。 这是 黎明的净。 想知道它是如何工作的?点击这里开始你的旅程,到网上。 现在,到底发生了什么,当你点击链接? 你开始的信息流。 这一信息传播到您的个人邮件收发室 先生IP包,标示它,并把它发送的道路上。 每个数据包是在它的大小的限制。 收发室必须决定如何划分的信息 以及如何将它打包。 现在,该软件包需要包含重要信息的标签 如发送者的地址,接收器的地址,和数据包的类型,它是。 因为这个特定的数据包是走出去到互联网上, 还获得了代理服务器的地址, 其中有一个特殊的功能,我们将在后面看到。 现正推出到您的局域网或局域网的数据包。 该网络用于连接本地计算机“ 路由器,打印机,等等,在物理墙的建设的信息交流。 LAN是一个漂亮的不受控制的地方,不幸的是, 事故发生。 这条公路的局域网是挤满了所有类型的信息。 这是Novell公司的数据包,IP数据包,AppleTalk协议。 他们将针对交通,像往常一样。 本地路由器读取的地址,如果有必要, 升降机的数据包到另一个网络。 啊,路由器。控制在一个看似杂乱无章的世界的象征。 [路由器喃喃自语,自说自话] [旁白]有他的,系统的,不仁不义,有条不紊, 保守,有时不太加快速度。 但至少他是确切的,在大多数情况下。 由于数据包离开路由器,他们自己的方式进入企业互联网 头路由器交换机。 多一点效率比路由器,路由器交换机起着与IP数据包朝三暮四, 他们沿着自己的方式巧妙地路由。 数字的弹球向导“,如果你愿意。 路由器交换机自说自话] [旁白]当数据包到达目的地时, 他们拾起由网络接口​​, 准备好要发送到下一级。 在这种情况下,代理服务器。 许多公司使用代理,作为中间人的排序 ,以减轻在因特网上连接的负载 出于安全原因,也是如此。 正如你可以看到的,数据包是所有各种大小取决于其内容。 代理打开包,看起来的网站地址或URL。 根据该地址是否是可以接受的, 的数据包被发送到互联网上。 然而,一些不符合批准的代理地址。 也就是说,企业或管理的指导方针。 这些简易程序处理。 我们会的,有没有。 对于那些谁使,这是在路上了。 接下来,防火墙。 在企业防火墙的目的有两个。 它可以防止一些比较讨厌的东西从Internet到Intranet, 它也可以防止企业的敏感信息被发送到网际网路。 一旦通过防火墙,路由器拿起包 ,并把它放到一个更窄的道路,或带宽,因为我们说的。 显然,道路不宽,足以把他们所有。 现在,你可能想知道所有这些数据包,不让它前进的道路上会发生什么。 那么,当叶先生没有收到确认 已收到一个包在适当的时候, 他简单地发送一个更换包。 我们现在已经准备好进入互联网的世界。 蜘蛛网互联网络跨越整个地球。 在这里,路由器和交换机的网络之间建立联系。 现在,网络是一个完全不同的环境,你会发现 在你的局域网的防护墙。 在这里,它的狂野西部。 充足的空间,有的是机会, 大量的探索和去的地方。 由于非常小的控制和调节, 新的想法找到肥沃的土壤,把信封其可能性。 但是,由于这种自由,也潜藏着一定的危险。 你永远不会知道什么时候你会遇到可怕的死亡之Ping, 一个正常的请求平的一个特殊版本, 一些白痴想出来的乱不知情的主机。 我们的数据包采取的路径可能是通过卫星, 电话线,无线,甚至跨洋电缆。 他们并不总是最快或最短路径, 但他们会得到有最终的。 也许这就是为什么它有时也被称为“万维网等待。” 但是,当一切工作进展顺利, 在下拉的帽子,可以规避地球的5倍以上,从字面上。 本地电话或更低的成本。 我们的目的地接近尾声时,我们会找到另一个防火墙。 根据你的观点,作为一个数据包, 防火墙可能是一个安全的堡垒,是一个可怕的对手。 这一切都取决于你站在哪一边,你的意图是什么。 防火墙的目的是让只有那些符合其标准的数据包。 这个防火墙上的端口80和25。 尝试通过其他端口都关闭的业务。 使用端口25的邮件数据包, 而端口80是从互联网上的Web服务器的数据包的入口。 在防火墙内,数据包筛选更彻底。 某些数据包,很容易通关, 而其他人看起来只是有点可疑。 现在,防火墙人员不容易上当, 例如,当这个ping的死亡数据包试图把自己伪装成一个正常的ping数据包。 [防火墙的数据包的官员说] [旁白]幸运足以让这对于那些数据包, 几乎是过去的旅程。 这只是一个接口上应采取到Web服务器。 如今,Web服务器可以运行在许多事情上, 从大型机到你的办公桌上的电脑的网络摄像头。 为什么不是你的冰箱? 通过适当的设置,你可以找到,如果你有气质 鸡Cacciatore酒店,或者如果你有去购物。 请记住,这是净的曙光。 几乎任何事情都是可能的。 一个接一个的数据包被接收, 打开,并解压缩。 它们包含的信息,也就是说,你的信息请求, 被发送到Web服务器的应用程序。 包本身是循环使用的, 准备再次使用,洋溢着您要求的信息, 处理,并发出了在返回的途中给你。 返回过去防火墙,路由器,并通过到Internet。 通过您的企业防火墙 和你的界面上, 准备你的网络浏览器提供您所要求的信息。 也就是说,该膜。 与他们的努力感到高兴,并相信更美好的世界, 我们的可靠的数据包,骑幸福地进入新的一天的日落, 完全知道,他们曾担任他们的主人。 现在,是不是一个快乐的结局? [马兰]好吧,这就够了。我们会下周见。 [CS50.TV]