1 00:00:00,000 --> 00:00:02,620 [Powered by Google Translate] 第7周,续] 2 00:00:02,620 --> 00:00:05,090 戴维·J·马兰,哈佛大学] 3 00:00:05,090 --> 00:00:07,780 这是CS50。[CS50.TV] 4 00:00:07,780 --> 00:00:09,810 好的。欢迎回来。这是CS50, 5 00:00:09,810 --> 00:00:12,100 这是结束的第7周。 6 00:00:12,100 --> 00:00:15,460 因此,这些愚蠢的小东西,在互联网 7 00:00:15,460 --> 00:00:24,080 和我们咕噜咕噜起来,它现在应该有点令人讨厌的意义。 8 00:00:24,080 --> 00:00:28,330 嗯,这是滑稽的,这家伙比你们。 9 00:00:28,330 --> 00:00:32,619 说到,好了,伙计们, 10 00:00:32,619 --> 00:00:42,550 今天是Nate的生日。 11 00:00:42,550 --> 00:00:46,630 为了让你的感觉是多么好的内特和我 12 00:00:46,630 --> 00:00:50,140 在周一类网站发展的基础上,根据现在这个, 13 00:00:50,140 --> 00:00:53,170 我想我会拉Nate的主页,如果你还没有看到它。 14 00:00:53,170 --> 00:00:57,020 我们在这里可以看到,这IA Nate的HTML。 15 00:00:57,020 --> 00:00:59,380 所以,看他的源代码,如果你想看看如何做到这一点,和Nate, 16 00:00:59,380 --> 00:01:02,250 如果我们能够难堪你只是简单,工作人员给你买了一点东西 17 00:01:02,250 --> 00:01:06,080 如果你想与这里的孩子们在课堂上与大家分享一些甜点。 18 00:01:06,080 --> 00:01:10,150 如果你想下来吧。 19 00:01:10,150 --> 00:01:14,350 大家都鼓掌,是很不错的,但没有人坐在附近的任何地方,内特 - 20 00:01:14,350 --> 00:01:17,560 由于某些原因,在该后区。 21 00:01:17,560 --> 00:01:24,020 因此,也许你可以找到一些人来享受这些。 22 00:01:24,020 --> 00:01:33,380 祝你生日快乐,内特。 23 00:01:33,380 --> 00:01:37,660 >> 其他打着招呼:我们发现一对夫妇的片段从我们的CS50x的学生。 24 00:01:37,660 --> 00:01:39,710 如果你想看看还有谁是世界上 25 00:01:39,710 --> 00:01:41,850 的关注着你,你可以前往这个URL, 26 00:01:41,850 --> 00:01:45,780 约瑟夫,我们的转录因子之一,已建立了蒙太奇的各种 27 00:01:45,780 --> 00:01:50,290 每个人都提交这些影片,其中瑞克Astley。 28 00:01:50,290 --> 00:01:53,010 如果你浏览这些,它真的很鼓舞人心 29 00:01:53,010 --> 00:01:56,890 看的多样性的国家和城市,人都欢呼。 30 00:01:56,890 --> 00:02:00,830 所以,如果你想借此看看那个,那将是通过学期结束的时候。 31 00:02:00,830 --> 00:02:05,370 今天,我们继续我们看看在Web,Web编程,HTML之类的, 32 00:02:05,370 --> 00:02:08,280 ,我们也吃午餐来了这个星期五 33 00:02:08,280 --> 00:02:11,360 如果你想,特别的是,还没有这样做之前。 34 00:02:11,360 --> 00:02:13,630 这个星期五的主题将是Nate的生日, 35 00:02:13,630 --> 00:02:15,700 所以,如果你想和Nate的生日午餐 36 00:02:15,700 --> 00:02:17,500 和其他一些行业的朋友, 37 00:02:17,500 --> 00:02:19,300 请头部有该URL。 38 00:02:19,300 --> 00:02:22,510 空间,始终是有限的。另外,如果你忘了, 39 00:02:22,510 --> 00:02:26,460 认识到下周的截止日期是问题设置4的寻宝, 40 00:02:26,460 --> 00:02:30,070 ,据此恢复后,从card.raw所有那些JPEGS的, 41 00:02:30,070 --> 00:02:32,880 你和你的部分队友,如果你愿意,可以尝试拍摄 42 00:02:32,880 --> 00:02:36,100 许多计算机科学家,记忆卡可能, 43 00:02:36,100 --> 00:02:39,070 你和你的部分将赢取丰富奖品。 44 00:02:39,070 --> 00:02:44,470 请参阅什么以及何时提交pset中的规范。 45 00:02:44,470 --> 00:02:47,650 另外,如果你想有你的手工永生 46 00:02:47,650 --> 00:02:51,400 该课程的网站和它的历史的服装, 47 00:02:51,400 --> 00:02:54,010 知道你是欢迎现在就开始提交设计 48 00:02:54,010 --> 00:02:57,180 今年的T-恤和运动衫和类似。 49 00:02:57,180 --> 00:02:59,200 我们将竭尽所能,包括尽可能多的,因为我们可以, 50 00:02:59,200 --> 00:03:01,440 但我们还会有一些工作人员审查所有成员的设计 51 00:03:01,440 --> 00:03:04,180 以确保它们符合规格, 52 00:03:04,180 --> 00:03:07,500 然后我们一般挑了一把他们将要展出。 53 00:03:07,500 --> 00:03:10,620 所以,如果你的设计类型,只知道要求 54 00:03:10,620 --> 00:03:14,030 图形PNG,至少有200 DPI, 55 00:03:14,030 --> 00:03:16,520 它们不应该超过4000 x 4000像素, 56 00:03:16,520 --> 00:03:19,010 不超过10 MB,但是你欢迎使用类的东西 57 00:03:19,010 --> 00:03:22,430 Photoshop或GIMP或各种图形的程序, 58 00:03:22,430 --> 00:03:24,590 无论您在您的处置。 59 00:03:24,590 --> 00:03:28,280 >> 此外,在地平线上的是项目的决赛。最后的项目真的是50的高潮, 60 00:03:28,280 --> 00:03:30,560 据此,所有任务的过程中, 61 00:03:30,560 --> 00:03:33,170 这是你的机会,真正做自己的事情。 62 00:03:33,170 --> 00:03:35,280 这可以简单地做一些乐趣, 63 00:03:35,280 --> 00:03:38,160 它可以解决一些紧迫的问题,学生组, 64 00:03:38,160 --> 00:03:40,980 一些新的网站​​,一些新的数据收集机制。 65 00:03:40,980 --> 00:03:43,420 它可以是一个移动的Andr​​oid应用程序,适用于iOS。 66 00:03:43,420 --> 00:03:46,030 说真的,天空是极限,在未来的几个星期中, 67 00:03:46,030 --> 00:03:50,900 我们从C到这些高级语言,如PHP和JavaScript的过渡, 68 00:03:50,900 --> 00:03:55,150 你会发现自己越来越熟悉一些真实世界的技术, 69 00:03:55,150 --> 00:03:57,800 一些现实世界的工具,并补充说, 70 00:03:57,800 --> 00:04:00,170 知道,当然是有历史的研讨会, 71 00:04:00,170 --> 00:04:02,880 在未来的几个星期中,一些教学人员 72 00:04:02,880 --> 00:04:06,160 从校园和我们的朋友提供了可选的研讨会 73 00:04:06,160 --> 00:04:08,540 这超出的部分通常是在 74 00:04:08,540 --> 00:04:11,090 给你介绍Android编程类的东西, 75 00:04:11,090 --> 00:04:13,450 向您介绍的iOS编程等 76 00:04:13,450 --> 00:04:15,950 或更高级的Web开发技术。 77 00:04:15,950 --> 00:04:17,970 这些已经在网上有一个整体的历史。 78 00:04:17,970 --> 00:04:25,000 如果你去cs50.net/seminars,我们一直这样做,很长一段年, 79 00:04:25,000 --> 00:04:28,740 你会看到这里的PDF文件和视频存档和 80 00:04:28,740 --> 00:04:33,090 研讨会的几十个视频。 81 00:04:33,090 --> 00:04:37,380 例如,去年,我们有一个研讨会技术面试上acing, 82 00:04:37,380 --> 00:04:40,980 如果你实际上是在寻找离开,去实习或全职演出。 83 00:04:40,980 --> 00:04:43,450 Windows Mobile的开发,Android的发展,谷歌地图, 84 00:04:43,450 --> 00:04:47,700 API,CSS,黑莓,Emacs的发展。 85 00:04:47,700 --> 00:04:52,610 真的,欢迎您来看一看在您方便的在任何这些研讨会。 86 00:04:52,610 --> 00:04:57,080 我们将举行一些新的学期,也是如此。 87 00:04:57,080 --> 00:04:59,020 >> 那么,什么是提前与最终的项目? 88 00:04:59,020 --> 00:05:01,090 嗯,首先,即使这个日期是有些迫在眉睫, 89 00:05:01,090 --> 00:05:06,460 这真的只是一个机会,开始思考最后的项目很切实。 90 00:05:06,460 --> 00:05:10,550 我们只知道一些什么,我们还是会覆盖在使用过程中的开端, 91 00:05:10,550 --> 00:05:13,470 HTML,PHP之类的,但你都熟悉网络, 92 00:05:13,470 --> 00:05:16,270 我和偏见,只是因为这次谈话向网络 93 00:05:16,270 --> 00:05:18,380 大多数人做的基于Web的最后项目, 94 00:05:18,380 --> 00:05:20,260 但绝不是必要的。 95 00:05:20,260 --> 00:05:22,260 使用C是好的,客观的C,Java, 96 00:05:22,260 --> 00:05:25,350 你可能知道或想知道的任何其他语言是相当的精细。 97 00:05:25,350 --> 00:05:29,370 但是,为了得到的源源不断最初,我们将期待提交的preproposal 98 00:05:29,370 --> 00:05:33,520 其中,按照网站上的PDF,这是目前在cs50.net, 99 00:05:33,520 --> 00:05:36,080 在左上角,你会看到最终的项目 100 00:05:36,080 --> 00:05:38,920 是规范最终的项目, 101 00:05:38,920 --> 00:05:41,470 并在那里是上preproposal细节和类似物。 102 00:05:41,470 --> 00:05:44,760 它几乎可以归结为一封电子邮件给您的教学研究员 103 00:05:44,760 --> 00:05:48,450 只是为了与他或她搭讪,你在想什么。 104 00:05:48,450 --> 00:05:52,510 ,在projects.cs50.net是一个仓库,从人们的思想在校园 105 00:05:52,510 --> 00:05:54,480 如果你努力想出一些想法, 106 00:05:54,480 --> 00:06:01,140 和manual.cs50.net/APIs是一个仓库,对API的链接。 107 00:06:01,140 --> 00:06:06,710 >> 什么,虽然是API? 108 00:06:06,710 --> 00:06:09,790 什么是API?我已经说过了至少两次, 109 00:06:09,790 --> 00:06:12,640 在过去几个星期的成绩单。 110 00:06:12,640 --> 00:06:17,050 那是什么? [学生,不知所云] 111 00:06:17,050 --> 00:06:19,340 >>好,好。因此,一些编程接口。 112 00:06:19,340 --> 00:06:22,710 应用程序编程接口,这样就可以采取几种形式, 113 00:06:22,710 --> 00:06:25,850 但是这真的归结为是代码 114 00:06:25,850 --> 00:06:29,660 别人海关书面或别人已收集的数据 115 00:06:29,660 --> 00:06:33,670 是由一些编程的方式提供给您的。 116 00:06:33,670 --> 00:06:36,630 您可以编写代码,在C,PHP,Python和Ruby, 117 00:06:36,630 --> 00:06:38,760 无论您选择的语言通常来说, 118 00:06:38,760 --> 00:06:42,240 你能以某种建立在别人的功能 119 00:06:42,240 --> 00:06:44,440 或其他人的数据集。 120 00:06:44,440 --> 00:06:47,210 举例来说,如果我去这个链接, 121 00:06:47,210 --> 00:06:50,750 在随后出现的页面中,你会看到一个链接对 122 00:06:50,750 --> 00:06:56,093 据此,我们有CS50自己的API,这是非常哈佛大学为中心,然后第三方的API。 123 00:06:56,930 --> 00:06:59,300 其中第三方API是真正有用的东西 124 00:06:59,300 --> 00:07:01,780 如能够发送短信的人, 125 00:07:01,780 --> 00:07:04,690 能接收短信的人。 126 00:07:04,690 --> 00:07:08,160 之类的东西,你可能不知道如何实现自己, 127 00:07:08,160 --> 00:07:10,440 但由于服务,一些免费的,有些商业, 128 00:07:10,440 --> 00:07:14,000 你可以这些基础之上,做你感兴趣的东西。 129 00:07:14,000 --> 00:07:16,990 在CS50的API,这些校园为中心的东西,如 130 00:07:16,990 --> 00:07:21,480 哈佛大学的课程,能源,事件,食物,地图,新闻,推特和Shuttleboy自己的, 131 00:07:21,480 --> 00:07:23,940 而这些,看起来有点像这样的API。 132 00:07:23,940 --> 00:07:26,990 >> 让我拉起HarvardFood API。 133 00:07:26,990 --> 00:07:30,620 如果你曾经HUD的网站,你可能已经在那里 134 00:07:30,620 --> 00:07:35,410 只是看看有什么吃晚餐或看一些D-大厅小时。 135 00:07:35,410 --> 00:07:38,000 嗯,这是特别不容易进行导航, 136 00:07:38,000 --> 00:07:41,100 所以我们没有前一段时间我们编写软件, 137 00:07:41,100 --> 00:07:47,270 它正好是在PHP中,实际屏幕擦伤整个HUD的网站。 138 00:07:47,270 --> 00:07:51,400 筛选刮的东西,就是写一个程序的语言,如PHP 139 00:07:51,400 --> 00:07:55,270 伪装成浏览器,即使你可能在命令提示符下运行它, 140 00:07:55,270 --> 00:07:58,180 伪装成浏览器,连接到一个网站, 141 00:07:58,180 --> 00:08:01,480 下载它的HTML,它的书面语言, 142 00:08:01,480 --> 00:08:04,300 然后读取它,或者更具体地说,分析它 143 00:08:04,300 --> 00:08:06,140 从上到下,从左到右。 144 00:08:06,140 --> 00:08:08,870 我们做的这样一种方式,我们写我们的代码中 145 00:08:08,870 --> 00:08:12,910 任何时候,我们看到的东西在HTML菜单上的东西,看起来像, 146 00:08:12,910 --> 00:08:16,470 像汉堡包,然后将其导入我们自己的数据库。 147 00:08:16,470 --> 00:08:20,410 任何时候,我们看到了营养成分,我们将导入到我们自己的数据库。 148 00:08:20,410 --> 00:08:23,090 我们所做的就是利用一个事实,即HUD的网站, 149 00:08:23,090 --> 00:08:27,280 即使它可能是一个有点挑战我们人类导航 150 00:08:27,280 --> 00:08:32,559 引擎盖下的,所有的HTML生成自己的计算机程序。 151 00:08:32,559 --> 00:08:35,159 所以,在所有的HTML,即使它可能显得凌乱, 152 00:08:35,159 --> 00:08:38,026 引擎盖下的最喜欢的网站,它遵循一个模式。 153 00:08:38,260 --> 00:08:40,799 所以我们只花了几个小时,计算出该模式 154 00:08:40,799 --> 00:08:44,240 因此,在年底,我们扔掉所有的杂乱HTML, 155 00:08:44,240 --> 00:08:47,340 所有的美学大胆的面向和斜体之类的, 156 00:08:47,340 --> 00:08:52,350 然后,我们能够做的是暴露相同的数据。 157 00:08:52,350 --> 00:08:54,870 例如,以这种方式。 158 00:08:54,870 --> 00:08:56,840 所以我们,根据这里的文档, 159 00:08:56,840 --> 00:08:59,190 向世界,如果你请求一个URL 160 00:08:59,190 --> 00:09:03,310 像这样的,food.cs50.net /的东西, 161 00:09:03,310 --> 00:09:07,220 和你提供的某些参数,我们今天来谈谈, 162 00:09:07,220 --> 00:09:11,780 像结束日期时间,开始日期时间,吃饭等等, 163 00:09:11,780 --> 00:09:14,090 我们的服务器会返回给你,例如, 164 00:09:14,090 --> 00:09:18,740 是像一个Excel文件,CSV文件,的逗号separted值, 165 00:09:18,740 --> 00:09:23,140 在这个特殊的日期为早餐包含一切在去年3月 166 00:09:23,140 --> 00:09:25,450 当我偶然写了这个文件。 167 00:09:25,450 --> 00:09:27,870 >> 对于那些熟悉,CSV文件格式是不是唯一的。 168 00:09:27,870 --> 00:09:30,610 还有另一种更通用的格式 169 00:09:30,610 --> 00:09:32,670 被称为JSON,JavaScript对象表示法。 170 00:09:32,670 --> 00:09:34,770 这种格式的数据可以回来。 171 00:09:34,770 --> 00:09:38,110 因此,这里的外卖是,无论你潜入这个API 172 00:09:38,110 --> 00:09:41,170 或任何其他CS50或任何在互联网上, 173 00:09:41,170 --> 00:09:45,560 或根本没有认识到,世界已经开始越来越多的规范 174 00:09:45,560 --> 00:09:47,670 机互通。 175 00:09:47,670 --> 00:09:50,660 我们使用标准的数据格式,如CSV或JSON。 176 00:09:50,660 --> 00:09:54,320 这意味着什么给你的,是你可以写一个程序有趣的部分 177 00:09:54,320 --> 00:09:56,580 允许用户在搜索的用餐大厅的菜单, 178 00:09:56,580 --> 00:10:00,010 ,让他们创建的收藏夹列表,让他们得到文字提示 179 00:10:00,010 --> 00:10:02,480 当他们最喜爱的食物是曾在一些D-大厅 180 00:10:02,480 --> 00:10:07,090 通过使用别人的数据集和建设他们的API上。 181 00:10:07,090 --> 00:10:13,600 所以,在研讨会的形式和文档,你必须在网上。 182 00:10:13,600 --> 00:10:16,450 因此,那些话,这些API。 183 00:10:16,450 --> 00:10:18,900 >> 这把我们带回到HTML。快速回顾一下。 184 00:10:18,900 --> 00:10:22,920 HTML是什么? 185 00:10:22,920 --> 00:10:25,000 [学生,不知所云] >>好。超文本标记语言。 186 00:10:25,000 --> 00:10:31,300 别人的,超文本标记语言是什么? 187 00:10:31,300 --> 00:10:37,340 超文本标记语言。 188 00:10:37,340 --> 00:10:40,330 好吧。因此,HTML,超文本。 189 00:10:40,330 --> 00:10:43,100 超文本仅仅是指到Web上,在大多数情况下。 190 00:10:43,100 --> 00:10:45,730 标记意味着它不是真正的编程语言,HTML。 191 00:10:45,730 --> 00:10:48,120 这是不是一种语言,你可以表示逻辑英寸 192 00:10:48,120 --> 00:10:50,710 它不具有循环。它不具备的条件。 193 00:10:50,710 --> 00:10:52,820 它不具有的功能,本身。 194 00:10:52,820 --> 00:10:56,680 相反,它有这些东西叫做标签,或者更恰当的元素。 195 00:10:56,680 --> 00:10:59,970 这些元素的开始标记和结束标记, 196 00:10:59,970 --> 00:11:04,300 或打开标签和关闭标签,这些标签通常是指为一个浏览器, 197 00:11:04,300 --> 00:11:09,270 开始做的东西,然后停止做某事,但也有例外那个。 198 00:11:09,270 --> 00:11:12,480 有时,它只是把一个换行符,例如。 199 00:11:12,480 --> 00:11:15,150 我们看到的例子,日前,之间大胆的面向, 200 00:11:15,150 --> 00:11:17,430 换行,然后一对夫妇的其他标签。 201 00:11:17,430 --> 00:11:19,880 因此,HTML是网页被写入所用的语言。 202 00:11:19,880 --> 00:11:23,760 所以,如果我去像Google.com 203 00:11:23,760 --> 00:11:26,180 拉了他们的主页, 204 00:11:26,180 --> 00:11:29,690 记得,如果您右键单击或控制点击 205 00:11:29,690 --> 00:11:32,140 并期待在查看页面源代码,通常 206 00:11:32,140 --> 00:11:34,420 引擎盖下面的这些日子里,它是一个完整的一塌糊涂,但是那是因为 207 00:11:34,420 --> 00:11:38,170 电脑不关心空白,所以这并没有使自己显得漂亮。 208 00:11:38,170 --> 00:11:40,240 但是,如果我们放大部分, 209 00:11:40,240 --> 00:11:43,460 注意到,Chrome浏览器,只是对我好,颜色编码的东西。 210 00:11:43,460 --> 00:11:48,460 事实上,这是第一个在网页中,我们看到的标签。 211 00:11:48,460 --> 00:11:51,750 再次,HTML 5,这个语言的最新版本, 212 00:11:51,750 --> 00:11:53,830 确实有这样的事情在一开始, 213 00:11:53,830 --> 00:11:57,820 <!DOCTYPE HTML,是否小写或大写, 214 00:11:57,820 --> 00:12:03,580 但是这只是说,世界哎,来了一个HTML文件,在版本5的标准。 215 00:12:03,580 --> 00:12:08,920 >> 最有趣的部分从这里开始。因此, 00:12:11,640 最后一次的HTML元素。 217 00:12:11,640 --> 00:12:14,630 这两个孩子是什么? 218 00:12:14,630 --> 00:12:17,170 头和身体,就像纹身的家伙,刚才。 219 00:12:17,170 --> 00:12:19,640 有两部分,头部和身体的网页, 220 00:12:19,640 --> 00:12:23,750 和回忆,那么,这也许是最简单的网页,我们可以像这样。 221 00:12:23,750 --> 00:12:27,460 我缩进它只是一种干净整洁,我的代码, 222 00:12:27,460 --> 00:12:30,710 但什么是真正重要的是,有一些层次。 223 00:12:30,710 --> 00:12:35,420 任何标签,我已经打开了,我已经关闭,因此,有这种对称性 224 00:12:35,420 --> 00:12:38,300 ,我已经创建的所有的标记。 225 00:12:38,300 --> 00:12:41,620 所以我们最后一次开始写我自己的笔记本电脑上的网页。 226 00:12:41,620 --> 00:12:45,470 我打开文本编辑,我将文件保存为hello.html, 227 00:12:45,470 --> 00:12:50,190 然后,我拖着我的浏览器上的文件,瞧,我有一个网页在互联网上。 228 00:12:50,190 --> 00:12:53,110 现在,它是不完全的情况下,我有我的硬盘驱动器上的页面, 229 00:12:53,110 --> 00:12:58,260 我简直是在世界上唯一的人,会看到网页在浏览器中。 230 00:12:58,260 --> 00:13:00,670 >> 所以,今天,我们介绍了一个实际的Web服务器 231 00:13:00,670 --> 00:13:02,750 和的概念,其实在互联网上的服务内容 232 00:13:02,750 --> 00:13:04,970 这一切是如何开始结合在一起。 233 00:13:04,970 --> 00:13:08,350 因此,原来,这一切都是时间在CS50设备 234 00:13:08,350 --> 00:13:11,590 你有你的计算机上的Web服务器。 235 00:13:11,590 --> 00:13:16,560 ,在公平,我们只用它gedit中,铛,GDB和, 236 00:13:16,560 --> 00:13:21,000 但也由我们为你安装的家电是一个Web服务器, 237 00:13:21,000 --> 00:13:23,940 发生该Web服务器是免费的,开放的源, 238 00:13:23,940 --> 00:13:26,580 一个在世界上最流行的,称为Apache。 239 00:13:26,580 --> 00:13:31,340 更多的技术名称是httpd,d为守护在这里, 240 00:13:31,340 --> 00:13:34,110 这是一个技术性的词语为一个服务器。 241 00:13:34,110 --> 00:13:38,690 因此,安装在CS50设备是一个Web服务器,这是什么意思呢? 242 00:13:38,690 --> 00:13:43,740 那么,Web服务器,从理论上讲,一些服务器在互联网上提供的网页内容。 243 00:13:43,740 --> 00:13:48,630 当记者问一个文件,它吐出组成的HTML文件,瞧。 244 00:13:48,630 --> 00:13:51,370 你看一些网站的主页。 245 00:13:51,370 --> 00:13:54,970 但是,一台服务器,更准确地说,是一块软件。 246 00:13:54,970 --> 00:13:59,190 它不必在物理机上,它只是一块运行的软件。 247 00:13:59,190 --> 00:14:01,980 所以CS50设备,当然,是一片片的软件 248 00:14:01,980 --> 00:14:04,270 即使它的排序,假装自己是一台机器。 249 00:14:04,270 --> 00:14:06,960 它假装是电脑里面的一台电脑, 250 00:14:06,960 --> 00:14:11,140 但是这只是意味着该设备可以肯定,如Web服务器上运行的东西。 251 00:14:11,140 --> 00:14:13,260 实际上,它可以运行电子邮件服务器。 252 00:14:13,260 --> 00:14:16,440 如果我们想,我们可以运行一个即时消息服务器在家电, 253 00:14:16,440 --> 00:14:20,780 而事实上,我们运行其他类型的服务器作为数据库服务器,MySQL的。 254 00:14:20,780 --> 00:14:22,620 但更多的是下周。 255 00:14:22,620 --> 00:14:26,400 这意味着我可以访问网页 256 00:14:26,400 --> 00:14:30,480 内的我的设备内的设备通过使用浏览器 257 00:14:30,480 --> 00:14:33,600 甚至在我自己的笔记本电脑,我的Mac或我的电脑。 258 00:14:33,600 --> 00:14:37,780 所以,这是什么意思呢?事实证明,任何时候,当你运行的是Linux电脑, 259 00:14:37,780 --> 00:14:40,910 它的绰号是“本地主机”。 260 00:14:40,910 --> 00:14:43,370 没有一个域名,因为我们还没有买了一个域名 261 00:14:43,370 --> 00:14:46,590 类似设备,所以它的默认名称是本地主机。 262 00:14:46,590 --> 00:14:50,470 >> 但是,为了获得设备开始提供网页, 263 00:14:50,470 --> 00:14:52,270 我们必须先创建它们。 264 00:14:52,270 --> 00:14:55,200 因此,让我们做到这一点。让我进入一个终端窗口,在这里 265 00:14:55,200 --> 00:14:58,190 请注意,我在我的典型的约翰·哈佛提示。 266 00:14:58,190 --> 00:15:01,670 让我继续前进,并输入ls,从这个学期,我们将看到一些熟悉的东西, 267 00:15:01,670 --> 00:15:04,580 桌面,下载,Dropbox和等等, 268 00:15:04,580 --> 00:15:07,540 但现在我们开始把我们的注意力转移到一对夫妇。 269 00:15:07,540 --> 00:15:11,530 在许多Linux Web服务器的公共html文件夹,名为 270 00:15:11,530 --> 00:15:15,630 但是我们要跳过,现在专注于这一点,虚拟主机。 271 00:15:15,630 --> 00:15:18,850 任何人都知道一个虚拟主机是什么? 272 00:15:18,850 --> 00:15:21,110 只是愚蠢的行话虚拟主机, 273 00:15:21,110 --> 00:15:23,850 这是什么意思的是,在一台典型服务器 274 00:15:23,850 --> 00:15:26,810 实际上,你可以架设多个网站。 275 00:15:26,810 --> 00:15:31,500 你可以买一个域名,如foo.com,你可以在服务器上承载它。 276 00:15:31,500 --> 00:15:36,100 但你也可以买bar.com,并将它承载在同一服务器上。 277 00:15:36,100 --> 00:15:40,250 原因是,浏览器有足够的智慧来通知服务器 278 00:15:40,250 --> 00:15:45,880 当一个用户请求一些网页时,用户想要什么样的域名的主页。 279 00:15:45,880 --> 00:15:48,760 那么,有什么好有关你并不需要一台物理服务器 280 00:15:48,760 --> 00:15:52,040 CS50家电的每一个网站,你可能想要创建。 281 00:15:52,040 --> 00:15:55,520 您可以使用相同的服务器和开发出上百种不同的网站。 282 00:15:55,520 --> 00:15:58,770 事实上,如果你是一个人试图启动一个网站, 283 00:15:58,770 --> 00:16:02,100 是否为乐趣或为企业,通常你会在互联网上, 284 00:16:02,100 --> 00:16:04,650 ,你会花钱找人十块钱一个月,一百元一个月 285 00:16:04,650 --> 00:16:06,670 你的网站为你​​举办。 286 00:16:06,670 --> 00:16:11,060 而有效的方式,是他们向其他人收费 287 00:16:11,060 --> 00:16:13,160 10块钱一个月或一个月一百块钱 288 00:16:13,160 --> 00:16:17,200 举办​​其他人的网站,他们的同一台服务器上。 289 00:16:17,200 --> 00:16:20,740 他们之所以能够做到这一点是此功能称为bhosts, 290 00:16:20,740 --> 00:16:23,790 但更多的,当它的时间用于最后的项目。 291 00:16:23,790 --> 00:16:28,360 >> 现在,让我们的只是潜水在那里。因此,CD虚拟主机,如果我现在输入ls, 292 00:16:28,360 --> 00:16:31,370 请注意,有一个文件夹中有名为本地主机。 293 00:16:31,370 --> 00:16:33,440 这是因为,在默认情况下,该设备的数字 294 00:16:33,440 --> 00:16:36,160 你对你的设备上运行一个网站。 295 00:16:36,160 --> 00:16:38,970 这是不是真正的现实世界,它不是一个真实世界的Web服务器。 296 00:16:38,970 --> 00:16:41,690 因此,让我进入本地主机,现在我们可以看到在那里 297 00:16:41,690 --> 00:16:44,290 最后一个目录称为HTML。 298 00:16:44,290 --> 00:16:47,080 所以,这是一个有点深,层次结构,但如果和当 299 00:16:47,080 --> 00:16:51,230 你决定开始开发多个网站在未来的n个月或数年, 300 00:16:51,230 --> 00:16:54,370 这种文件夹结构往往是有帮助的。 301 00:16:54,370 --> 00:16:56,560 现在,让我们进入HTML,我只是做了, 302 00:16:56,560 --> 00:16:59,010 输入ls,无所不有。 303 00:16:59,010 --> 00:17:01,390 所以,现在让我们继续前进,并做到这一点。让我打开Chrome浏览器 304 00:17:01,390 --> 00:17:07,300 里面的设备,并让我去到http://localhost。 305 00:17:07,300 --> 00:17:14,440 因此,从字面上我的产品的名称,输入,和/我得到的指数。 306 00:17:14,440 --> 00:17:18,290 这是不是真的我什么好玩的东西, 307 00:17:18,290 --> 00:17:23,400 但事实证明,我们所看到的是,文件夹,HTML。 308 00:17:23,400 --> 00:17:25,770 该文件夹里面什么都没有,现在, 309 00:17:25,770 --> 00:17:28,750 所以不是,我什么都做的是首先创建一个文件。 310 00:17:28,750 --> 00:17:33,530 像我们一样在周一,创建一个HTML文件,但这个时候把它里面的设备。 311 00:17:33,530 --> 00:17:36,830 对于那些你谁是试图跟随笔记本电脑现在, 312 00:17:36,830 --> 00:17:42,040 让我做一个一边在基于Web的pset中,就被遮住了, 313 00:17:42,040 --> 00:17:44,280 但为了得到这个工作的第一次, 314 00:17:44,280 --> 00:17:49,830 你要运行这个命令:sudo服务的httpd开始。 315 00:17:49,830 --> 00:17:52,670 而这一点,再次将重复在过去的pset, 316 00:17:52,670 --> 00:17:55,460 但是,如果你现在在家里玩,Web服务器 317 00:17:55,460 --> 00:17:58,660 关闭设备,这就是,它不削弱了RAM 318 00:17:58,660 --> 00:18:01,960 和7个星期了本学期的内存时,我们并不需要它。 319 00:18:01,960 --> 00:18:05,190 所以,你需要运行一次该命令,你会得到这样的输出。 320 00:18:05,190 --> 00:18:07,920 然后,你应该能够在这里一起玩。 321 00:18:07,920 --> 00:18:10,330 现在,让我们回到到这个文件夹。 322 00:18:10,330 --> 00:18:12,770 此文件夹是空的,所以让我先创建一个文件, 323 00:18:12,770 --> 00:18:16,360 gedit的hello.html。 324 00:18:16,360 --> 00:18:20,930 >> 好的。 gedit是开放的,像往常一样。让我做的DOCTYPE,HTML, 325 00:18:20,930 --> 00:18:25,270 HTML,让我对自己获得成功,并开始提前关闭我的标签。 326 00:18:25,270 --> 00:18:28,380 现在我的头。让我继续前进,接近头部, 327 00:18:28,380 --> 00:18:32,450 让我现在做网页的标题,你好,世界像上次一样, 328 00:18:32,450 --> 00:18:34,790 接近冠军,现在让我做一个身体。 329 00:18:34,790 --> 00:18:38,130 在这里我会说你好,世界上一些exclams 330 00:18:38,130 --> 00:18:40,550 明确指出,这是一个不同的字符串。 331 00:18:40,550 --> 00:18:45,800 关闭的身体,现在让我去和文件保存。 332 00:18:45,800 --> 00:18:48,470 让我回到我的终端窗口,如果我输入ls, 333 00:18:48,470 --> 00:18:51,830 我应该,大概,hello.html。我做的。 334 00:18:51,830 --> 00:18:55,070 所以,现在让我们回到我的浏览器中,单击“重新加载, 335 00:18:55,070 --> 00:18:58,930 你可以看到我们确实是在这里面,HTML文件夹。 336 00:18:58,930 --> 00:19:02,310 我没有看到一个网页,这是Apache的Web服务器, 337 00:19:02,310 --> 00:19:04,670 只是我列出这个目录。 338 00:19:04,670 --> 00:19:08,260 就像Mac OS或Windows通常会做自己的本地硬盘驱动器上。 339 00:19:08,260 --> 00:19:12,730 所以,如果我想看到这个网页,我可以点击这个链接在这里,hello.html, 340 00:19:12,730 --> 00:19:15,160 而事实上,这就是我期待看到的。 341 00:19:15,160 --> 00:19:18,080 现在,再次,这是不是一个URL,你可以参观,现在, 342 00:19:18,080 --> 00:19:20,760 因为,你的本地主机,如果你有一台笔记本电脑, 343 00:19:20,760 --> 00:19:23,050 它指的是你自己的实例的设备。 344 00:19:23,050 --> 00:19:25,900 这是我自己的个人设备, 345 00:19:25,900 --> 00:19:29,080 但是这是一种愚蠢的我有,有 346 00:19:29,080 --> 00:19:34,480 像我这样的用户点击hello.html真正看到这个页面的内容。 347 00:19:34,480 --> 00:19:42,590 事实证明,Web服务器,如Apache,让你有任何Web服务器的默认文件。 348 00:19:42,590 --> 00:19:44,640 注意这里我们有hello.html。 349 00:19:44,640 --> 00:19:48,410 什么命令在Linux中重命名一个文件? 350 00:19:48,410 --> 00:19:50,870 >> MV,为的举动。因此,让我做到这一点, 351 00:19:50,870 --> 00:19:55,870 让我重命名hello.html的index.html。 352 00:19:55,870 --> 00:19:58,610 让我输入ls,以确认它现在被重新命名。 353 00:19:58,610 --> 00:20:03,250 现在这是怎么回事 - 如果我回到本地主机, 354 00:20:03,250 --> 00:20:06,710 注意到,现在,我自动看到该网页。 355 00:20:06,710 --> 00:20:11,740 这是相同的,我实际上做/ index.html的, 356 00:20:11,740 --> 00:20:14,740 但现在是很好的事情,Web服务器的盘算, 357 00:20:14,740 --> 00:20:18,830 哦,如果你有一个文件,由人约定,被称为index.html, 358 00:20:18,830 --> 00:20:21,200 让我告诉用户该文件默认情况下, 359 00:20:21,200 --> 00:20:25,290 而不是一些愚蠢的目录清单,这是不是在所有用户友好。 360 00:20:25,290 --> 00:20:28,900 事实上,您访问的网站在互联网上没有的文件列表,点击, 361 00:20:28,900 --> 00:20:34,040 他们只是向你展示的内容。所以,这就是我们如何能做到这一点,index.html的。 362 00:20:34,040 --> 00:20:37,000 因此,这是所有的乐趣和好,但是这是一个非常简单的网页。 363 00:20:37,000 --> 00:20:41,640 让我去进取,不断开拓的index.html在我的虚拟主机, 364 00:20:41,640 --> 00:20:47,620 本地主机,html目录中,让我们添加一些更大的兴趣。 365 00:20:47,620 --> 00:20:56,120 因此,有你好世界,让我们,而不是说:“这是CS50,即哈佛学院。 。 “。 366 00:20:56,120 --> 00:21:00,000 所以一开始有某种形式的课程目录描述。 367 00:21:00,000 --> 00:21:03,780 现在,如果我重装,我应该看到在我的主页。 368 00:21:03,780 --> 00:21:09,560 好了,我看到的,但假设我现在想在这个文件中列出一些内容。 369 00:21:09,560 --> 00:21:15,160 在这里,我可以去说,先决条件没有, 370 00:21:15,160 --> 00:21:18,740 虽然你们当中有些人可能会喜欢,哈哈哈,没有先决条件。“ 371 00:21:18,740 --> 00:21:24,320 但是 - 正式。因此,重新加载,而现在我们有相同的怪癖,我们看到了最后的时间。 372 00:21:24,320 --> 00:21:26,240 但是,这是为什么?这是一个简单的解决办法。 373 00:21:26,240 --> 00:21:31,440 这是为什么页面坏了吗? 374 00:21:31,440 --> 00:21:34,170 [学生,不知所云] >>是的,我们已经解决了这个前 375 00:21:34,170 --> 00:21:37,440 通过明确地告诉浏览器的线在这里休息一下。“ 376 00:21:37,440 --> 00:21:39,440 那是因为,再次,浏览器的唯一要做的事情 377 00:21:39,440 --> 00:21:42,610 明确的标记语言告诉它做什么, 378 00:21:42,610 --> 00:21:45,730 因此,即使你可能击中输入一次或两次,甚至十几倍, 379 00:21:45,730 --> 00:21:49,870 它会结合成一个单一的空间,只是按照惯例。 380 00:21:49,870 --> 00:21:52,770 所以,如果你真的想要一个换行符,你必须使用br标签, 381 00:21:52,770 --> 00:21:56,840 现在通知,周一一样,我把/这个标签内的, 382 00:21:56,840 --> 00:22:00,090 不仅是因​​为这只是感觉不对 383 00:22:00,090 --> 00:22:02,990 开始一个换行符,然后停止它没有在两者之间。 384 00:22:02,990 --> 00:22:07,740 >> 因此,在HTML中约定,同时打开和关闭标签。 385 00:22:07,740 --> 00:22:11,050 顺便说一句,你会看到很多网站在书本上没有这样做。 386 00:22:11,050 --> 00:22:14,240 做或不这样做,但我们认为这是正确的 387 00:22:14,240 --> 00:22:17,430 ,在设计上和风格,这仅仅是更好的 388 00:22:17,430 --> 00:22:20,540 因为那时每一个标签都莫名其妙地打开和关闭。 389 00:22:20,540 --> 00:22:23,370 现在让我们来保存和重新加载。返回到浏览器,还行。 390 00:22:23,370 --> 00:22:26,680 现在,我们取得了一些进展,但还远远不够。 391 00:22:26,680 --> 00:22:33,210 让我们继续前进,并开始输入一些较长的文本正文。 392 00:22:33,210 --> 00:22:40,610 因此,让我们说,'A敏捷的棕色狐狸跳过了一只懒惰的狗。“ 393 00:22:40,610 --> 00:22:42,700 现在让我只需复制并粘贴了几次 394 00:22:42,700 --> 00:22:45,040 所以,我们有一个段落的文字。 395 00:22:45,040 --> 00:22:47,780 让我回去在这里。因此,它看起来很不错。 396 00:22:47,780 --> 00:22:50,000 我有一个换行符,所以没关系, 397 00:22:50,000 --> 00:22:52,140 但现在,一旦我们得到的点有一个网页 398 00:22:52,140 --> 00:22:55,640 有大量的内容,不只是单一的线,展示HTML, 399 00:22:55,640 --> 00:22:58,570 我们就可以开始考虑这些事情的实际段。 400 00:22:58,570 --> 00:23:01,590 我们就可以开始构建我们的网页更干净一点。 401 00:23:01,590 --> 00:23:05,120 事实上,我能做的就是在这里,我的身体标记内的, 402 00:23:05,120 --> 00:23:09,400 你知道吗,如果这是CS50。 。 “。真的demarks一个段落的开始, 403 00:23:09,400 --> 00:23:11,310 好了,让这样的标签。 404 00:23:11,310 --> 00:23:13,570 让我缩进文本,只是按照惯例,让我说“ 405 00:23:13,570 --> 00:23:15,710 这一段在这里结束, 406 00:23:15,710 --> 00:23:18,320 然后,而不是做这行的休息,让我只想说, 407 00:23:18,320 --> 00:23:23,300 这属于那里,作为一个新的段落, 408 00:23:23,300 --> 00:23:27,610 我就很快缩进只是弄错所有的这些东西。 409 00:23:27,610 --> 00:23:30,660 >> 所以,现在我们有一个缩进的段落, 410 00:23:30,660 --> 00:23:33,510 现在我们的标记开始得到多一点 411 00:23:33,510 --> 00:23:37,070 语义上一致,我们正在试图做的是什么。 412 00:23:37,070 --> 00:23:40,130 我们有一个段落,所以我们称它为一个段落p标签的。 413 00:23:40,130 --> 00:23:43,370 我们有第二个段落,让我们称它为一个段落p标签的。 414 00:23:43,370 --> 00:23:45,850 现在,浏览器通常会做 415 00:23:45,850 --> 00:23:48,490 就像是一本英语书或文章, 416 00:23:48,490 --> 00:23:51,280 你通常会看到一些换行段落之间。 417 00:23:51,280 --> 00:23:53,720 浏览器会自动为你做的。 418 00:23:53,720 --> 00:23:56,680 所以,现在我们有两个段落,我们可以继续。 419 00:23:56,680 --> 00:23:58,770 但是,当然,在网络上,当你有机构文本 420 00:23:58,770 --> 00:24:01,370 它不是通常的文字是巨大的斑点。 421 00:24:01,370 --> 00:24:04,040 在那里经常有超链接。 422 00:24:04,040 --> 00:24:07,250 因此,如果我们想,比如,包括一些链接, 423 00:24:07,250 --> 00:24:10,760 假设我在这里创建的网页的兴趣可能是什么 - 424 00:24:10,760 --> 00:24:12,780 让我去到Google.com, 425 00:24:12,780 --> 00:24:16,540 让我寻找一个敏捷的棕色狐狸。 426 00:24:16,540 --> 00:24:22,150 谷歌图片,怎么样 - 这是可爱的。 427 00:24:22,150 --> 00:24:27,420 我们会与此有关。所以,我们在这里有一个快速的棕色狐狸跳过了一只懒惰的狗。 428 00:24:27,420 --> 00:24:30,560 那么,我要在这里做,只是为了证明, 429 00:24:30,560 --> 00:24:32,950 是假设图像,这是我的服务器上, 430 00:24:32,950 --> 00:24:35,240 和我一直在创造这些图像。 431 00:24:35,240 --> 00:24:38,720 我只是做了右键单击或控制点击图片, 432 00:24:38,720 --> 00:24:42,370 在大多数浏览器,你会看到的是一个小菜单 - 433 00:24:42,370 --> 00:24:48,800 停止这样做 - 一个小菜单,允许你选择复制链接位置或复制网址。 434 00:24:48,800 --> 00:24:52,750 因此,让我回去,现在我的HTML,和假设,我想 435 00:24:52,750 --> 00:24:56,420 超链接到另一个网页。 436 00:24:56,420 --> 00:24:58,640 >> 要求,标签是什么? 437 00:24:58,640 --> 00:25:01,650 [学生,不知所云] >>呀。因此,超A HREF参考。 438 00:25:01,650 --> 00:25:04,660 让我继续前进,粘贴,在。 439 00:25:04,660 --> 00:25:07,290 这是一个很长的URL,所以让我放大了。 440 00:25:07,290 --> 00:25:09,950 关闭括号,所以现在看到我来这里的路上 441 00:25:09,950 --> 00:25:11,960 ,因为这的URL发生在相当长的。 442 00:25:11,960 --> 00:25:15,180 让我滚动敏捷的棕色狐狸年底, 443 00:25:15,180 --> 00:25:18,830 然后让我关闭这个标签 00:25:21,280 我只关闭该标签的名称。 445 00:25:21,280 --> 00:25:24,470 现在让我走吧,并保存该文件,重新载入网页, 446 00:25:24,470 --> 00:25:27,880 现在,默认情况下,会以蓝色我必须强调, 447 00:25:27,880 --> 00:25:31,980 但事实上,我现在可以点击这个,瞧。还有的图像。 448 00:25:31,980 --> 00:25:33,990 和它没有为图像,它可能已经链接 449 00:25:33,990 --> 00:25:36,270 其他一些随机的网站在互联网上。 450 00:25:36,270 --> 00:25:39,610 例如,我可以做到这一点,与CS50,所以最后一个例子在这里。 451 00:25:39,610 --> 00:25:42,730 “这是CS50可能是有意义的走了,HREF = 452 00:25:42,730 --> 00:25:50,340 http://www.cs50.net,靠近报价,靠近锚。 453 00:25:50,340 --> 00:25:53,990 所以,现在是一个更短的URL,而这一次,我们不会链接到的图像。 454 00:25:53,990 --> 00:25:57,880 相反,我们要链接到另一个页面。 455 00:25:57,880 --> 00:25:59,840 现在,我们在这里有一个形象。 456 00:25:59,840 --> 00:26:02,970 我觉得我们可以做的更好一点,不只​​是链接到的图像。 457 00:26:02,970 --> 00:26:05,760 如果我们要真正体现它在我们自己的网页? 458 00:26:05,760 --> 00:26:09,290 >> 好了,我可以在这里做什么,而不是链接到这个图形, 459 00:26:09,290 --> 00:26:14,690 让我,而不是削减的URL,我们可以摆脱该超链接和清理它。 460 00:26:14,690 --> 00:26:17,190 ,我们会在这里和摆脱这一点。 461 00:26:17,190 --> 00:26:20,910 我们并不真的需要所有这些句子,让我一点点缩短页面。 462 00:26:20,910 --> 00:26:24,530 然后,在这里,让我继续在一个新的段落, 463 00:26:24,530 --> 00:26:30,100 说我不想要的文字现在,我想将是该URL的源图像。 464 00:26:30,100 --> 00:26:33,100 的图像,就像一个换行符,是或不是这样的。 465 00:26:33,100 --> 00:26:35,900 因此,让我立即关闭该标签。 466 00:26:35,900 --> 00:26:39,440 让我继续和关闭的段落,我在里面, 467 00:26:39,440 --> 00:26:43,010 如果一切顺利的话你好,世界,如果我现在重新加载, 468 00:26:43,010 --> 00:26:45,520 事实上,我在我自己的网页中看到的图像。 469 00:26:45,520 --> 00:26:48,570 所以,现在我们有一个形象的标记,锚标记和, 470 00:26:48,570 --> 00:26:51,320 和良好的措施,让我做其他的事情,往往被忽视 471 00:26:51,320 --> 00:26:55,900 网站上的这些天,让我们为这个图象提供一些描述性文字 472 00:26:55,900 --> 00:26:58,090 在移动设备上的人谁是 473 00:26:58,090 --> 00:27:00,640 ,因此可能无法下载这个图片的速度非常快, 474 00:27:00,640 --> 00:27:03,310 人是盲目的,可能无法看到图像 475 00:27:03,310 --> 00:27:06,480 但他们可能有一个屏幕阅读器,可以告诉他们,这个形象是什么。 476 00:27:06,480 --> 00:27:09,100 要做到这一点,还有另外一个属性的图像标签 477 00:27:09,100 --> 00:27:11,290 丙氨酸转氨酶(ALT),替代文本。 478 00:27:11,290 --> 00:27:14,650 我可以在这里做什么,说,“这是一个敏捷的棕色狐狸”。 479 00:27:14,650 --> 00:27:17,650 这样,即使人类无法在屏幕上查看该图像, 480 00:27:17,650 --> 00:27:20,560 他或她可以至少听到,与一些软件的一块, 481 00:27:20,560 --> 00:27:23,080 究竟是什么在屏幕上。 482 00:27:23,080 --> 00:27:25,040 >> 这不会改变的美学的页面, 483 00:27:25,040 --> 00:27:27,640 但它肯定是为用户提供很好的做法。 484 00:27:27,640 --> 00:27:31,760 好吧,让我们离开这个网页在其目前的形式, 485 00:27:31,760 --> 00:27:33,890 但让我们来看看,如果我们现在不能介绍 486 00:27:33,890 --> 00:27:36,210 一些更好的方法来编写这些网页, 487 00:27:36,210 --> 00:27:39,980 要为我们以及我们的网页获得更多和更复杂的一些经验教训。 488 00:27:39,980 --> 00:27:42,220 我们不打算在未来几周内 489 00:27:42,220 --> 00:27:46,810 走你所有的几十个HTML标签,有。 490 00:27:46,810 --> 00:27:49,800 就像在从头开始在0周,很可能就足够了 491 00:27:49,800 --> 00:27:52,120 给一个高层次的概述一些概念, 492 00:27:52,120 --> 00:27:54,530 一个块,你很可能能够快速浏览, 493 00:27:54,530 --> 00:27:58,240 漂亮舒适,导航自己的,不同的拼图。 494 00:27:58,240 --> 00:28:00,460 这会再次发生在HTML中,最有可能的, 495 00:28:00,460 --> 00:28:04,320 据此,有足够的资源在网络上,我们将指向你, 496 00:28:04,320 --> 00:28:06,920 各种教科书,如果你喜欢阅读一本教科书, 497 00:28:06,920 --> 00:28:10,560 将引导您完成所有的各种事情,你可以用HTML, 498 00:28:10,560 --> 00:28:16,100 不过说真的,我们已经看到迄今为止在HTML的基本概念。 499 00:28:16,100 --> 00:28:19,900 我们的概念被打开的标签,标签被关闭。 500 00:28:19,900 --> 00:28:22,100 一些标签都被打开和关闭 501 00:28:22,100 --> 00:28:24,620 在这个意义上,它们是空的,里面什么都没有,他们应该是 502 00:28:24,620 --> 00:28:27,490 像一个图像标记或一个换行符,这只是存在的。 503 00:28:27,490 --> 00:28:32,330 我们也看过了属性的概念,像Alt或来源。 504 00:28:32,330 --> 00:28:36,410 请注意,这些话往往按照惯例,短而简洁。 505 00:28:36,410 --> 00:28:39,140 >> 我们没有这些东西是什么叫自由裁量权, 506 00:28:39,140 --> 00:28:42,060 别人是谁发明的HTML想出了这些名字。 507 00:28:42,060 --> 00:28:44,710 所以,你只需要知道或仰视,任何你需要他们的时候, 508 00:28:44,710 --> 00:28:47,160 这些标记和属性的名称是什么。 509 00:28:47,160 --> 00:28:49,510 在这些属性的情况下,属性一般 510 00:28:49,510 --> 00:28:52,900 修改一些标记的行为。 511 00:28:52,900 --> 00:28:55,710 在这种情况下,源属性告诉图片标签 512 00:28:55,710 --> 00:28:57,940 源的图像应该是什么。 513 00:28:57,940 --> 00:29:04,460 href属性告诉它实际上应该被链接到的锚定标记。 514 00:29:04,460 --> 00:29:06,800 但是,在Web页面的结构而言,即使Facebook的 515 00:29:06,800 --> 00:29:09,680 和谷歌之类的一塌糊涂的样子 516 00:29:09,680 --> 00:29:12,560 引擎盖下方的第一眼,如果你开始读通过 517 00:29:12,560 --> 00:29:16,950 更有条理,它们都遵循此基础上,基本的结构。 518 00:29:16,950 --> 00:29:19,660 但我们可以改善这些东西的程式化。 519 00:29:19,660 --> 00:29:24,180 因此,让我去一些例子,我提前做好准备。 520 00:29:24,180 --> 00:29:27,280 让我继续前进,将它们从另一个文件夹 521 00:29:27,280 --> 00:29:29,380 并把它们放到这个目录。 522 00:29:29,380 --> 00:29:32,210 在前进,我所做的就是准备几个文件: 523 00:29:32,210 --> 00:29:35,670 搜索0,搜索1,搜索2和search3和4。 524 00:29:35,670 --> 00:29:38,740 让我去进取,不断开拓的这些文件, 525 00:29:38,740 --> 00:29:42,570 让我们来看看,如果我们不能开始创建自己的搜索引擎。 526 00:29:42,570 --> 00:29:46,530 在该文件的顶部,通常情况下在课堂上,只是一堆意见。 527 00:29:46,530 --> 00:29:49,760 然而,在HTML中,以何种方式启动一个评论 528 00:29:49,760 --> 00:29:55,640 <! - 然后你里面的注释,多行注释。 529 00:29:55,640 --> 00:29:59,800 当你准备好停止评论,你可以做 - >。 530 00:29:59,800 --> 00:30:02,380 因此,在顶部的蓝色的一切只是一个评论。 531 00:30:02,380 --> 00:30:04,620 >> 这是我的DOCTYPE声明,这再次, 532 00:30:04,620 --> 00:30:07,080 你可以复制和粘贴的信仰,现在。 533 00:30:07,080 --> 00:30:10,410 这只是告诉浏览器“,来了一些HTML 5。 534 00:30:10,410 --> 00:30:13,600 下面说,在第14行,是我的第一个实际的标签, 535 00:30:13,600 --> 00:30:16,900 这只是说,像以前一样,来这里的一些HTML, 536 00:30:16,900 --> 00:30:19,460 来这里的头,我的网页,来这里的标题, 537 00:30:19,460 --> 00:30:23,900 ,然后,相反,这是它的标题,这是它的头。 538 00:30:23,900 --> 00:30:26,460 这里现在的身体我的网页。 539 00:30:26,460 --> 00:30:31,040 所以一对夫妇的新标签:H1表示为标题1。 540 00:30:31,040 --> 00:30:33,850 有一个传统的HTML多年 541 00:30:33,850 --> 00:30:37,990 具有不同尺寸的文本。 542 00:30:37,990 --> 00:30:41,980 早在一天,每一个的意思,一般情况下,只有大和大胆的。 543 00:30:41,980 --> 00:30:45,860 但也有H2,这是大的,但不太大,大胆。 544 00:30:45,860 --> 00:30:49,320 H3,这是一种大的,但几乎没有大的和大胆的, 545 00:30:49,320 --> 00:30:52,380 等等,一路下滑到h6。 546 00:30:52,380 --> 00:30:55,550 不过,这些天来,H1,H2和H3的真正含义 547 00:30:55,550 --> 00:30:57,980 他们有更多的语义含义, 548 00:30:57,980 --> 00:31:01,100 据此,h1是真正的标题:一个网页的标题, 549 00:31:01,100 --> 00:31:04,210 标题的列或类似的文字。 550 00:31:04,210 --> 00:31:09,030 所以,我故意说H1 CS50搜索> H1 551 00:31:09,030 --> 00:31:12,640 到指定要,这是真正的标题,我的网页的标题。 552 00:31:12,640 --> 00:31:14,850 不是标题,在标题栏意义上的, 553 00:31:14,850 --> 00:31:18,960 但您实际看到的标题,在网页本身,在体内。 554 00:31:18,960 --> 00:31:20,990 现在这种情况,你可能已经猜到它是什么, 555 00:31:20,990 --> 00:31:23,110 即使我们有一些新的语法。 556 00:31:23,110 --> 00:31:25,930 这是一种形式。因此,网络真正变得有趣 557 00:31:25,930 --> 00:31:28,770 当网站用户的输入。 558 00:31:28,770 --> 00:31:31,700 在这个类中,Web编程设置的问题, 559 00:31:31,700 --> 00:31:33,880 我们不打算做一个网站,本身, 560 00:31:33,880 --> 00:31:37,570 与静态内容显示你的照片, 561 00:31:37,570 --> 00:31:40,010 或者这是我的简历,关于我的事情, 562 00:31:40,010 --> 00:31:42,450 因为这些东西都比较容易放在一起。 563 00:31:42,450 --> 00:31:44,400 在网络上,这是很难做的东西漂亮, 564 00:31:44,400 --> 00:31:46,390 但至少内容是非常简单。 565 00:31:46,390 --> 00:31:49,380 但是,事情变得非常有趣,当有人访问您的网站 566 00:31:49,380 --> 00:31:52,260 ,并提供输入,可以填写表格, 567 00:31:52,260 --> 00:31:55,800 可以检查复选框,并可以与您的网站。 568 00:31:55,800 --> 00:31:57,780 事实上,大概每一个网站,你关心 569 00:31:57,780 --> 00:32:00,710 这些天来,在任何一个细节,是某种互动。 570 00:32:00,710 --> 00:32:03,110 Facebook,谷歌和喜欢,接受用户输入 571 00:32:03,110 --> 00:32:05,100 生成自定义输出。 572 00:32:05,100 --> 00:32:07,780 >> 因此,让我们现在开始做。现在让我们的过渡 573 00:32:07,780 --> 00:32:11,150 只是用HTML标记的静态内容 574 00:32:11,150 --> 00:32:14,790 作为代替动态内容的交付机制。 575 00:32:14,790 --> 00:32:17,350 为此,让我们来实现我们自己的搜索引擎。 576 00:32:17,350 --> 00:32:20,820 让我们做如下的工作。这里的表单标签。 577 00:32:20,820 --> 00:32:24,090 action属性指定,当用户填写该表单 578 00:32:24,090 --> 00:32:28,400 他们的键盘,它会在这里提交此URL。 579 00:32:28,400 --> 00:32:31,230 所以我一种欺骗。这将带我们一点时间 580 00:32:31,230 --> 00:32:33,780 不止一个类来实现整个搜索引擎, 581 00:32:33,780 --> 00:32:35,880 所以我们就做前端,可以这么说。 582 00:32:35,880 --> 00:32:38,650 我们会做的部分,让用户搜索,我们将排序的平底船谷歌 583 00:32:38,650 --> 00:32:40,950 发现搜索结果的最困难的部分, 584 00:32:40,950 --> 00:32:43,520 但是,具体而言,我要谈谷歌的Web服务器 585 00:32:43,520 --> 00:32:46,710 使用两个非常流行的方法之一。 586 00:32:46,710 --> 00:32:50,000 一个是得到,另外,我们最终会看到,后, 587 00:32:50,000 --> 00:32:52,660 尽管还有其它不太常用的。 588 00:32:52,660 --> 00:32:56,440 因此,得到的只是让人想起了主意,我希望得到一些内容,一些搜索结果。 589 00:32:56,440 --> 00:32:58,440 这一点,你也许可以猜到这是什么做的。 590 00:32:58,440 --> 00:33:01,900 这是某种形式的输入,它,其实,看起来像一个文本字段, 591 00:33:01,900 --> 00:33:05,200 和该输入的名称,该变量的名称,可以这么说, 592 00:33:05,200 --> 00:33:08,610 将按照惯例为Q的查询。 593 00:33:08,610 --> 00:33:11,700 再次,输入的类型,这不会是一个复选框; 594 00:33:11,700 --> 00:33:13,890 它不会是一个菜单,这将是一个文本字段 595 00:33:13,890 --> 00:33:18,060 表示此属性在这里,这个文本框, 596 00:33:18,060 --> 00:33:20,680 像换​​行,要么是有或没有。 597 00:33:20,680 --> 00:33:24,480 因此,我们有一个空元素,该标签内的斜线。 598 00:33:24,480 --> 00:33:28,050 然后,我打算把一个换行符,你可以,也许,你猜怎么着,这是要做的。 599 00:33:28,050 --> 00:33:30,210 这是另一种形式的输入。 600 00:33:30,210 --> 00:33:32,350 >> 这是怎么回事用于提交表单。 601 00:33:32,350 --> 00:33:36,140 因此,这将是大按钮,用户可以单击“提交表单”, 602 00:33:36,140 --> 00:33:40,800 和该按钮上的标签将是“CS50搜索”。 603 00:33:40,800 --> 00:33:44,170 关闭形式,靠近身体,靠近HTML。 604 00:33:44,170 --> 00:33:46,280 让我们看看我们在本网页的形式。 605 00:33:46,280 --> 00:33:48,260 所以,让我去我的浏览器, 606 00:33:48,260 --> 00:33:50,360 让我走,还是到本地主机。 607 00:33:50,360 --> 00:33:54,650 这仍然是index.html的,所以如果我想看到此文件称为搜索0, 608 00:33:54,650 --> 00:33:59,710 我可以简单地做/ search0.html,输入 - 609 00:33:59,710 --> 00:34:01,880 我的错误。 610 00:34:01,880 --> 00:34:04,400 这是怎么回事呢?我很清楚没有权限 611 00:34:04,400 --> 00:34:06,430 访问该文件,因为某些原因。 612 00:34:06,430 --> 00:34:10,170 但是,这是因为,不同的工作,我们已经做了迄今为止在C中, 613 00:34:10,170 --> 00:34:14,340 你写的程序被认为是可运行的, 614 00:34:14,340 --> 00:34:17,590 由你的可执行文件,这是不确实的情况下在网络上, 615 00:34:17,590 --> 00:34:21,010 据此,有时您可能希望在服务器上创建文件, 616 00:34:21,010 --> 00:34:23,310 但你不希望全世界的人都能够看到他们。 617 00:34:23,310 --> 00:34:25,469 相反,你希望世界看到一些文件 618 00:34:25,469 --> 00:34:27,730 但不是别人,只是对隐私的缘故。 619 00:34:27,730 --> 00:34:30,730 所以,更重要的是当你在做的事情在网络上的一个选择的基础。 620 00:34:30,730 --> 00:34:32,810 因此,让我居然在这里输入ls, 621 00:34:32,810 --> 00:34:37,440 和你看到的我的文件,但记得,如果我做ls-l的长, 622 00:34:37,440 --> 00:34:41,520 我会得到一个更长的上市,给了我一些有关这些文件的详细信息 623 00:34:41,520 --> 00:34:45,139 现在,真的,为相关的第一时间,我们。 624 00:34:45,139 --> 00:34:47,840 请注意,最右边的是我的文件的名称, 625 00:34:47,840 --> 00:34:50,690 然后时间,在该时间的最后修改或复制。 626 00:34:50,690 --> 00:34:54,370 这个数字是什么?你还记得吗? 627 00:34:54,370 --> 00:34:56,400 大小(以字节为单位),该文件是多大。 628 00:34:56,400 --> 00:34:59,520 >> 所以,我似乎有某种标志,在这里,大于所有其他文件。 629 00:34:59,520 --> 00:35:03,610 这是我是谁,这是我和我哪个组英寸 630 00:35:03,610 --> 00:35:07,430 但随后,在这里,左边是一个有点神秘的序列, 631 00:35:07,430 --> 00:35:10,040 和我们谈过,我认为,简单介绍一下在过去, 632 00:35:10,040 --> 00:35:12,050 但做的权限。 633 00:35:12,050 --> 00:35:14,020 而且,即使这是一个有点朦胧, 634 00:35:14,020 --> 00:35:17,270 RW可能意味着读取和写入。 635 00:35:17,270 --> 00:35:22,560 因此,原来,这些虚线表示对不同的人不同的权限集。 636 00:35:22,560 --> 00:35:24,730 和图案,本质上,如下所示。 637 00:35:24,730 --> 00:35:27,650 当你看到一个序列的破折号,如下所示。 638 00:35:27,650 --> 00:35:30,450 有一个破折号,然后有三个以上的破折号, 639 00:35:30,450 --> 00:35:33,390 然后有另外三个,那么还有另外三个。 640 00:35:33,390 --> 00:35:36,800 第一个是破折号或它的广告目录。 641 00:35:36,800 --> 00:35:40,220 因此,一个人是很容易的。如果它是一个文件夹,它说,D,否则这是一个连字符。 642 00:35:40,220 --> 00:35:44,080 其他情况下,有一对夫妇,但现在我们只关心文件和目录。 643 00:35:44,080 --> 00:35:48,090 这接下来的三个破折号 - 我一直人为地插入空格。 644 00:35:48,090 --> 00:35:50,490 ,显然,他们不存在,当我们看到他们刚才。 645 00:35:50,490 --> 00:35:52,900 这些文件所有者的权限, 646 00:35:52,900 --> 00:35:55,840 和记得一秒钟前,它被读取和写入。 647 00:35:55,840 --> 00:35:58,560 那是因为我,刚才谁创造了这个文件的人, 648 00:35:58,560 --> 00:36:01,250 我,只是默认情况下,在Linux计算机上, 649 00:36:01,250 --> 00:36:03,910 有能力继续读取和写入该文件。 650 00:36:03,910 --> 00:36:07,170 >> 因此,操作系统只是给了我RW自动。 651 00:36:07,170 --> 00:36:10,840 中间涉及到我的小组,学生, 652 00:36:10,840 --> 00:36:14,590 这是一种毫无意义的设备上,因为我是唯一的人使用该设备。 653 00:36:14,590 --> 00:36:16,620 因此,让我现在只是挥挥手。 654 00:36:16,620 --> 00:36:19,190 但最后一个是最重要的网络。 655 00:36:19,190 --> 00:36:21,580 这是在世界上的其他人,而事实上 656 00:36:21,580 --> 00:36:24,600 那就是---意味着没有人在世界上的其他 657 00:36:24,600 --> 00:36:26,680 有这个文件的任何权限。 658 00:36:26,680 --> 00:36:29,180 显然,这是一个问题,所以我需要解决这个问题 659 00:36:29,180 --> 00:36:33,830 以某种方式给世界什么?读与写吗? 660 00:36:33,830 --> 00:36:35,850 这可能是愚蠢的,对不对?我不想让任何人在网络上 661 00:36:35,850 --> 00:36:38,530 去访问我的网页,并以某种方式更改该文件, 662 00:36:38,530 --> 00:36:40,800 即使他们实在无法用一个HTML文件, 663 00:36:40,800 --> 00:36:44,110 但只是在原则上,可能只是希望他们能够读它。 664 00:36:44,110 --> 00:36:47,910 是什么意思看呢?这并不意味着他们要关心的实际HTML, 665 00:36:47,910 --> 00:36:51,820 但浏览器必须能够解析该标记语言, 666 00:36:51,820 --> 00:36:53,720 从上到下,从左到右。 667 00:36:53,720 --> 00:36:57,990 因此,有人在网络上需要能够读取它,所以我最低限度需要给R型。 668 00:36:57,990 --> 00:37:00,240 我可以在几个不同的方式来做到这一点,但或许 669 00:37:00,240 --> 00:37:03,080 最简单的就是在这里运行此命令。 670 00:37:03,080 --> 00:37:10,860 文件模式,改变模式,那么+ R,每个人都在世界+读, 671 00:37:10,860 --> 00:37:13,830 然后的名称的文件,search0.html。 672 00:37:13,830 --> 00:37:18,310 >> 现在,如果我做的ls-l再次,请注意,该文件已经改变, 673 00:37:18,310 --> 00:37:21,440 而事实上,我已经拒绝对r的每一个人。 674 00:37:21,440 --> 00:37:23,350 我也把它为我的团队,但是没有关系, 675 00:37:23,350 --> 00:37:27,150 因为如果我交了就为大家,我是一个子集。 676 00:37:27,150 --> 00:37:31,480 所以,这是一件好事。这也就意味着现在可读的计算机。 677 00:37:31,480 --> 00:37:34,430 现在让我回到我的浏览器中,单击“重新加载。 678 00:37:34,430 --> 00:37:36,330 啊哈。我们现在有CS50搜索。 679 00:37:36,330 --> 00:37:39,830 我在一个小人为地 - 相当可怕的搜索引擎已经放大。 680 00:37:39,830 --> 00:37:41,930 但是,让我们看看它的实际工作。 681 00:37:41,930 --> 00:37:45,880 首先,请允许我做一个快速的完整性检查让我控制点击,并查看页面的源代码。 682 00:37:45,880 --> 00:37:50,780 请注意,在Chrome中,我们看到了同样的HTML,我自己创建。 683 00:37:50,780 --> 00:37:55,420 不要混淆这里,虽然。我不能改变这里的代码, 684 00:37:55,420 --> 00:37:59,420 因为这段代码的浏览器有一个只读视图。 685 00:37:59,420 --> 00:38:06,060 浏览器只是问当地一个名为search0.html的主机。 686 00:38:06,060 --> 00:38:09,490 现在是纯属巧合设备 687 00:38:09,490 --> 00:38:13,480 恰好是我的浏览器在同一台计算机上。 688 00:38:13,480 --> 00:38:20,470 我可能只是等价地,输入的www.facebook.com/search0.html, 689 00:38:20,470 --> 00:38:23,830 ,如果Facebook有一个文件叫,我将看到他们的HTML。 690 00:38:23,830 --> 00:38:27,360 而且,当然,我不能改变从Facebook回来的文件,无论是。 691 00:38:27,360 --> 00:38:29,360 所以,现在,我们的界限模糊。 692 00:38:29,360 --> 00:38:32,130 该设备是一台服务器,提供网页, 693 00:38:32,130 --> 00:38:34,870 但它也是一个在这个意义上,我使用的是浏览器的客户端 694 00:38:34,870 --> 00:38:37,630 其实跟到该服务器。 695 00:38:37,630 --> 00:38:39,610 因此,让我们来看看,如果我的谷歌搜索引擎的工作原理。 696 00:38:39,610 --> 00:38:44,930 让我继续前进,寻找敏捷的棕色狐狸,进入。 697 00:38:44,930 --> 00:38:47,540 瞧,我现在有我自己的搜索引擎。 698 00:38:47,540 --> 00:38:51,460 >> 但如何工作的呢? 699 00:38:51,460 --> 00:38:55,380 有点夸张,但是 - 现在你可以看到,准确地说,这是利益的部分。 700 00:38:55,380 --> 00:38:57,370 请注意会发生什么。 701 00:38:57,370 --> 00:39:00,430 请注意在URL。事实证明,这个方法, 702 00:39:00,430 --> 00:39:02,780 叫得到的,是超简单。 703 00:39:02,780 --> 00:39:10,270 当你的形式指定要'get'的结果从一些服务器, 704 00:39:10,270 --> 00:39:13,200 它会做什么,不管你的形式输入到 705 00:39:13,200 --> 00:39:15,290 并把它的URL。 706 00:39:15,290 --> 00:39:18,580 这将规范投入如何得到如下的URL。 707 00:39:18,580 --> 00:39:22,290 请注意,这是URL,这是我的action属性值。 708 00:39:22,290 --> 00:39:24,730 这就是我想要的形式结束了。 709 00:39:24,730 --> 00:39:26,950 但后来发现这个问号。 710 00:39:26,950 --> 00:39:30,230 这是一个约定,在网络上,从而提供用户输入 711 00:39:30,230 --> 00:39:35,320 一个网站,你附加到URL的问号, 712 00:39:35,320 --> 00:39:38,330 然后你有一大堆的键 - 值对。 713 00:39:38,330 --> 00:39:42,380 一个键,否则参数作为已知的在Web的名称, 714 00:39:42,380 --> 00:39:46,380 然后你有一个等号,那么你该参数的值。 715 00:39:46,380 --> 00:39:49,810 因此,它本质上是一个变量名和变量值, 716 00:39:49,810 --> 00:39:54,250 但这些变量的名称和值从HTML表单。 717 00:39:54,250 --> 00:39:56,250 为什么是那里的长处,你觉得呢? 718 00:39:56,250 --> 00:39:59,340 因为我没有键入+之间我的话。 719 00:39:59,340 --> 00:40:01,430 [学生,不知所云] 720 00:40:01,430 --> 00:40:05,080 是的,它只是为间距。奇怪的是,每当你看到一个URL, 721 00:40:05,080 --> 00:40:07,320 从未有任何空格,如果仅仅是因为 722 00:40:07,320 --> 00:40:09,440 如果有,你能不能真的复制和粘贴 723 00:40:09,440 --> 00:40:12,700 到IM或到电子邮件中,因为这将打破。 724 00:40:12,700 --> 00:40:15,420 你想整个事情是一个连续的字符串中的字符。 725 00:40:15,450 --> 00:40:18,450 >> 因此,浏览器是明智地意识到,嗯,嗯。 726 00:40:18,450 --> 00:40:22,610 不要只是把一个空间里。让我的空间在一些标准的方式进行编码。 727 00:40:22,610 --> 00:40:25,170 这样的约定是让浏览器 728 00:40:25,170 --> 00:40:29,350 自动把一个+,否则你将有一个空间。 729 00:40:29,350 --> 00:40:32,140 所以,现在,谷歌通知,已经种用户友好。 730 00:40:32,140 --> 00:40:34,380 当然,我没有创建这个网页, 731 00:40:34,380 --> 00:40:37,200 但他们会预先填入自己的文本字段 732 00:40:37,200 --> 00:40:39,490 什么,确切地说,我输入的字词。 733 00:40:39,490 --> 00:40:43,090 假设我要搜索其他的东西,就像一个懒惰的狗。 734 00:40:43,090 --> 00:40:45,340 我可以只需键入此,重新搜索。 735 00:40:45,340 --> 00:40:47,730 请注意,这里的URL改变了, 736 00:40:47,730 --> 00:40:51,390 但是请注意,我可以搜索任何我想要的东西 737 00:40:51,390 --> 00:40:53,610 只是了解URL的工作。 738 00:40:53,610 --> 00:40:56,840 我可以做懒的猫,输入, 739 00:40:56,840 --> 00:41:01,370 并注意现在我得到一个非常懒惰 - 我们应该吗?我觉得我们应该。 740 00:41:01,370 --> 00:41:09,900 我得到一个非常懒惰的猫。 741 00:41:09,900 --> 00:41:11,930 好的。这是我们所做的最愚蠢的事情之一。 742 00:41:11,930 --> 00:41:17,160 但是,这是一个懒惰的猫。 743 00:41:17,160 --> 00:41:19,730 总之,这里的关键是什么外卖? 744 00:41:19,730 --> 00:41:22,830 现在,我们在世界上的HTTP玩。 745 00:41:22,830 --> 00:41:26,050 HTML是眼前这个标记语言,开放标签,关闭标签, 746 00:41:26,050 --> 00:41:29,490 ,告诉浏览器如何呈现内容的网页上。 747 00:41:29,490 --> 00:41:32,850 但是当你开始在互联网上的数据传输 748 00:41:32,850 --> 00:41:36,290 Web浏览器和服务器之间,这就是此协议 749 00:41:36,290 --> 00:41:39,370 被称为超文本传输​​协议接管。 750 00:41:39,370 --> 00:41:42,630 这是那种人的约定,当山姆和我握手,上周一, 751 00:41:42,630 --> 00:41:48,300 开始一个连接,然后关闭连接,同样的想法。 752 00:41:48,300 --> 00:41:53,100 谷歌的结果是如何回来给我吗? 753 00:41:53,100 --> 00:41:55,290 我的表单提交是如何去谷歌吗? 754 00:41:55,290 --> 00:41:58,160 好了,还记得,有一天,到底发生了什么上 755 00:41:58,160 --> 00:42:02,150 当你请求一个网页时,是引擎盖下的, 756 00:42:02,150 --> 00:42:04,860 您的浏览器发送一个有点神秘的信息,如 757 00:42:04,860 --> 00:42:09,510 GET / HTTP/1.1的默认主页。 758 00:42:09,510 --> 00:42:13,000 >> 或者,在这种情况下,因为我特别要求更早 759 00:42:13,000 --> 00:42:17,340 sea​​rch0.html,这将是有点晦涩的消息 760 00:42:17,340 --> 00:42:20,040 我的浏览器发送到设备上。 761 00:42:20,040 --> 00:42:23,090 或者,在这种情况下,谷歌,什么实际发送 762 00:42:23,090 --> 00:42:33,740 是一种请求/搜索,然后Q =懒惰的猫,用加有。 763 00:42:33,740 --> 00:42:36,790 所以这条消息,我的人,我永远不会打字, 764 00:42:36,790 --> 00:42:40,620 但我的浏览器发送的,这是怎么了HTTP发生。 765 00:42:40,620 --> 00:42:43,240 这相当于我们握手。 766 00:42:43,240 --> 00:42:46,320 这是一个请求,并的服务器有关发送一个响应。 767 00:42:46,320 --> 00:42:48,560 因此,让我们来看看下面的这个发动机罩。 768 00:42:48,560 --> 00:42:55,320 像以前一样,我们可以打开这个特殊的领域,在浏览器中。 769 00:42:55,320 --> 00:42:58,720 查看页面,检查元素。 770 00:42:58,720 --> 00:43:01,550 所以在检查的元素,注意到发生了什么事在Chrome中, 771 00:43:01,550 --> 00:43:04,160 IE和Firefox也有类似的机制, 772 00:43:04,160 --> 00:43:07,370 我们有访问我们这些开发工具。 773 00:43:07,370 --> 00:43:09,630 正常的人不要使用这些标签。 774 00:43:09,630 --> 00:43:11,940 但是,我们现在这是怎么回事,有兴趣的 775 00:43:11,940 --> 00:43:13,890 在网络层面的引擎盖下面。 776 00:43:13,890 --> 00:43:16,130 所以,如果我拉起来的网络水平, 777 00:43:16,130 --> 00:43:18,510 让我继续和扩大这个窗口, 778 00:43:18,510 --> 00:43:21,840 打开此项目,并期待在头。 779 00:43:21,840 --> 00:43:26,010 那么,当我请求一个文件从Web服务器 780 00:43:26,010 --> 00:43:29,410 是我的浏览器发送了一大堆的东西。 781 00:43:29,410 --> 00:43:32,390 让我查看源代码。因此,根据请求头, 782 00:43:32,390 --> 00:43:35,250 而这仅仅是镀铬向我展示一些诊断输出, 783 00:43:35,250 --> 00:43:37,340 有点像某种形式的调试器, 784 00:43:37,340 --> 00:43:40,500 注意,我这里强调的恰恰是什么 785 00:43:40,500 --> 00:43:47,060 Chrome浏览器向服务器发送,以要求称为search0.html的文件。 786 00:43:47,060 --> 00:43:50,160 这是告诉服务器它认为它的名字是什么, 787 00:43:50,160 --> 00:43:52,210 由于这台主机结肠领域,有一些 788 00:43:52,210 --> 00:43:56,950 相当深奥的东西在这里,日期和时间做喜欢的事, 789 00:43:56,950 --> 00:43:59,720 东西做的浏览器理解的语言, 790 00:43:59,720 --> 00:44:02,850 但真正重要的行前两个这里。 791 00:44:02,850 --> 00:44:05,490 >> 什么是服务器响应?那么,如果我们向下滚动 792 00:44:05,490 --> 00:44:08,510 这件事情和查看源代码,请注意服务器 793 00:44:08,510 --> 00:44:13,700 已作出回应,以及一个晦涩的消息,304不会被修改。 794 00:44:13,700 --> 00:44:16,030 这是一个有点陌生,让我真正尝试解决这个问题。 795 00:44:16,030 --> 00:44:18,670 让我按住shift键,然后单击“重新加载在这里 796 00:44:18,670 --> 00:44:22,460 强制浏览器,实际上使这第一次请求。 797 00:44:22,460 --> 00:44:25,700 然后让我放大,我们现在可以看到,服务器的响应, 798 00:44:25,700 --> 00:44:28,950 因为我持有的转变,是200 OK。 799 00:44:28,950 --> 00:44:31,170 所以,你可能从未见过的数量200 800 00:44:31,170 --> 00:44:33,300 网络的上下文中,但什么号码 801 00:44:33,300 --> 00:44:36,760 你有时会看到意外地从一台服务器呢? 802 00:44:36,760 --> 00:44:42,010 404文件未找到; 403,故宫,500,服务器错误。 803 00:44:42,010 --> 00:44:44,890 因此,有世界上使用这些数字代码在Web 804 00:44:44,890 --> 00:44:47,870 表示错误,就像C语言功能 805 00:44:47,870 --> 00:44:51,030 可以返回错误,主要可以返回退出代码。 806 00:44:51,030 --> 00:44:54,160 200,虽然你很少看到的,因为这意味着一切都很好。 807 00:44:54,160 --> 00:44:59,000 和304,你可能永远不会看到的,因为它意味着什么? 808 00:44:59,000 --> 00:45:03,330 什么事都没有 - 让我们看看我们是否可以模拟这再次 - 809 00:45:03,330 --> 00:45:07,170 哦,现在不是合作。 304说不能修改, 810 00:45:07,170 --> 00:45:09,170 那么,为什么即使服务器响应? 811 00:45:09,170 --> 00:45:12,550 好了,为了提高效率,Web服务器会自动为你, 812 00:45:12,550 --> 00:45:16,570 如果该文件并没有改变,它不会重发整个HTML文件。 813 00:45:16,570 --> 00:45:19,150 它会告诉浏览器,它并没有改变。 814 00:45:19,150 --> 00:45:21,220 只要使用你已经拥有的副本。 815 00:45:21,220 --> 00:45:22,650 因此,有这种观念的缓存在Web上 816 00:45:22,650 --> 00:45:25,840 的性能,让你不浪费时间,浪费带宽 817 00:45:25,840 --> 00:45:29,160 下载文件一次又一次不必要的。 818 00:45:29,160 --> 00:45:31,460 >> 但,现在,这个网页是超级简单, 819 00:45:31,460 --> 00:45:34,980 只显示我的HTML回来。 820 00:45:34,980 --> 00:45:40,940 让我们实际使用的网络“选项卡,现在做谷歌搜索一样敏捷的棕色狐狸。 821 00:45:40,940 --> 00:45:43,010 让我单击CS50搜索, 822 00:45:43,010 --> 00:45:46,950 现在,请注意这里的底部一大堆东西回来 823 00:45:46,950 --> 00:45:49,900 因为当我访问一个真正的网站,如Google.com, 824 00:45:49,900 --> 00:45:53,520 他们有图像,有文字,有语言JavaScript有。 825 00:45:53,520 --> 00:45:55,940 因此,本表中的每一行到这里 826 00:45:55,940 --> 00:46:01,490 表示,谷歌的东西吐了出来,我的单个请求的响应。 827 00:46:01,490 --> 00:46:04,160 我所关心的,不过,这是第一个。 828 00:46:04,160 --> 00:46:08,420 如果我去搜索请求,请点击这里查看源代码, 829 00:46:08,420 --> 00:46:11,300 注意到,实际上,晦涩的消息,我的浏览器发送 830 00:46:11,300 --> 00:46:15,010 谷歌是这两条线在这里, 831 00:46:15,010 --> 00:46:18,420 到这里,我们会忽略了一些神秘的信息。 832 00:46:18,420 --> 00:46:20,890 但要注意,太,什么浏览器是非常方便的, 833 00:46:20,890 --> 00:46:24,540 它也显示出我的查询字符串被送往英寸 834 00:46:24,540 --> 00:46:27,410 因此,而不是告诉我,这是从字面上发送, 835 00:46:27,410 --> 00:46:30,800 如果我认为它解码,铬,只是为了调试的目的, 836 00:46:30,800 --> 00:46:34,270 像我们这样的开发人员,它只是向我展示一个人性化的版本 - 837 00:46:34,270 --> 00:46:36,390 那是不是你拼狐狸,显然。 838 00:46:36,390 --> 00:46:40,520 我只是注意到这个现在 - 但它显示你看看我,显然,键入。 839 00:46:40,520 --> 00:46:45,340 同时,再次从服务器返回的响应是200 OK。 840 00:46:45,340 --> 00:46:47,930 但是,包含在该响应中,当然 841 00:46:47,930 --> 00:46:51,920 如果我们查看页面的HTML - 842 00:46:51,920 --> 00:46:55,440 遗憾的是,这是一个有点歪了今天的键盘快捷键。 843 00:46:55,440 --> 00:46:59,020 >> 稍后我会处理这。因此,如果我们查看页面的源代码, 844 00:46:59,020 --> 00:47:02,990 我可以做下来在这里通过点击响应, 845 00:47:02,990 --> 00:47:10,080 这是什么吐回,除了那个神秘的200 OK邮件从服务器。 846 00:47:10,080 --> 00:47:12,520 有点神秘,但在这一切的呢? 847 00:47:12,520 --> 00:47:15,570 好吧,让我们在这里做的另一件事情。另外一个有点神秘的命令, 848 00:47:15,570 --> 00:47:20,530 但一个人的一种整齐的,因为它向我们揭示了到底发生了什么引擎盖下的。 849 00:47:20,530 --> 00:47:22,530 所以,我回到我的Mac上,我已连接 850 00:47:22,530 --> 00:47:25,980 通过了一项名为SSH,安全壳,到另一台服务器 851 00:47:25,980 --> 00:47:28,940 因为大多数哈佛的电脑封锁的命令,我们即将运行 852 00:47:28,940 --> 00:47:31,640 因为有这条命令在某些服务器上称为traceroute的 853 00:47:31,640 --> 00:47:34,810 允许您跟踪点A和B之间的路由, 854 00:47:34,810 --> 00:47:37,020 到目前为止,我们已经采取完全是理所当然的 855 00:47:37,020 --> 00:47:40,170 我可以在Google.com键入并以某种方式得到的数据 856 00:47:40,170 --> 00:47:43,530 从中途在全国或世界各地的一半。 857 00:47:43,530 --> 00:47:45,810 ,通过traceroute的,我们可以潜得更深一些, 858 00:47:45,810 --> 00:47:49,370 互联网是如何工作的,看看下面的引擎盖上发生了什么事情。 859 00:47:49,370 --> 00:47:54,440 因此,让我们继续前进,任意跟踪路线,说,Stanford.edu, 860 00:47:54,440 --> 00:47:57,150 这是遍布全国各地,并按下回车键。 861 00:47:57,150 --> 00:47:59,380 此命令可以超快速或超慢, 862 00:47:59,380 --> 00:48:02,010 但我们现在看到,一行行, 863 00:48:02,010 --> 00:48:08,060 是每一个我们之间和Palo Alto,或斯坦福的步骤或跳, 864 00:48:08,060 --> 00:48:11,010 他们有他们的网络服务器。 865 00:48:11,010 --> 00:48:16,600 那么,是什么每一行代表更具体的是,虽然? 866 00:48:16,600 --> 00:48:19,100 一块从互联网上的专业术语吗? [学生,不知所云] 867 00:48:19,100 --> 00:48:21,570 >>那是什么? [学生,不知所云] 868 00:48:21,570 --> 00:48:25,390 “哦,那是时间,但每一行 - 什么是什么我的意思是跳? 869 00:48:25,390 --> 00:48:29,140 >> 好了,这些东西在互联网上被称为路由器。 870 00:48:29,140 --> 00:48:33,020 路由器,顾名思义,路由信息从a点到b。 871 00:48:33,020 --> 00:48:36,920 但也有一些超越A和B点。 872 00:48:36,920 --> 00:48:40,010 有c和d,e和f之间的第1行中, 873 00:48:40,010 --> 00:48:43,480 这恰好是我的电脑的IP地址, 874 00:48:43,480 --> 00:48:46,890 我的数字地址,它唯一标识了我的电脑, 875 00:48:46,890 --> 00:48:50,300 第15步,这实际上是第六Web服务器, 876 00:48:50,300 --> 00:48:54,640 显然,我从这个推断,或在斯坦福大学的Web服务器第6版。 877 00:48:54,640 --> 00:48:56,680 但是,什么样的清爽,我们可以看到路径 878 00:48:56,680 --> 00:49:00,480 我的0和1的从我的电脑正在斯坦福大学。 879 00:49:00,480 --> 00:49:02,500 因此,第1步是我自己的电脑的地址。 880 00:49:02,500 --> 00:49:05,760 互联网上的每台计算机都有一个唯一的标识符看起来像这样。 881 00:49:05,760 --> 00:49:08,150 Number.number.number.number。 882 00:49:08,150 --> 00:49:10,370 在这个校园里的某个地方,可能在科学中心, 883 00:49:10,370 --> 00:49:16,780 是一台路由器被称为核心网关2 te83,这意味着什么, 884 00:49:16,780 --> 00:49:20,590 所以这是一个哈佛的大花式路由器的路由了很多他们的交通。 885 00:49:20,590 --> 00:49:24,640 下面是哈佛大学的另一个路由器,这个人是边界网关, 886 00:49:24,640 --> 00:49:28,310 边界的意义,它可能是对校园周边的地方。 887 00:49:28,480 --> 00:49:32,790 有氮氧化物,第4行,这是北方的十字路口, 888 00:49:32,790 --> 00:49:35,070 这是一个大的ISP,互联网服务提供商, 889 00:49:35,070 --> 00:49:37,740 像哈佛,地方连接起来。 890 00:49:37,740 --> 00:49:40,760 但接下来的事情得到一个有趣的小线6。 891 00:49:40,760 --> 00:49:45,960 哪里是我的位一下子吗?堪萨斯州。 892 00:49:45,960 --> 00:49:49,300 世界上有使用机场代码在很多这些东西的习惯, 893 00:49:49,300 --> 00:49:52,900 或者至少对国家或城市的缩写, 894 00:49:52,900 --> 00:49:56,490 所以,在短短的60毫秒,它看起来像 895 00:49:56,490 --> 00:49:59,420 一个信息包,0和1的从我的笔记本电脑 896 00:49:59,420 --> 00:50:03,210 得到了所有的方式,堪萨斯州,并再次,在60毫秒。 897 00:50:03,210 --> 00:50:08,180 >> 此外,堪萨斯州后,他们采取了游到休斯敦,可能, 898 00:50:08,180 --> 00:50:10,140 所建议的这台服务器的名称。 899 00:50:10,140 --> 00:50:13,310 因此,正如在互联网上的服务器必须有一个数字地址, 900 00:50:13,310 --> 00:50:18,360 (可选),它也可以有一个更人性化的地址,人类想出了。 901 00:50:18,360 --> 00:50:20,510 现在,在第8步中,我们不知道这是什么。 902 00:50:20,510 --> 00:50:22,550 有时候,路由器只是一种不理你, 903 00:50:22,550 --> 00:50:25,010 他们只是不回答问题,所以这很好。 904 00:50:25,010 --> 00:50:29,290 第8步一前一后显然是哪里?洛杉矶 905 00:50:29,290 --> 00:50:35,290 请注意,只有78毫秒,正是这一点让我们像6小时以上的人,做物理, 906 00:50:35,290 --> 00:50:40,110 信息的数据包在互联网上78毫秒要走那么远。 907 00:50:40,110 --> 00:50:45,890 第10步是在LA,似乎已经北部,靠近斯坦福大学和步骤11。 908 00:50:45,890 --> 00:50:48,750 这是他们的边界路由器或边界路由器。 909 00:50:48,750 --> 00:50:51,240 在斯坦福大学的一对夫妇步骤都不理我们, 910 00:50:51,240 --> 00:50:55,610 最后,我们到达Web服务器在短短的87毫秒。 911 00:50:55,610 --> 00:50:57,760 现在,所有这些数字,顺便说一句, 912 00:50:57,760 --> 00:51:00,640 只是告诉你,从我这里得到的数据需要多长时间 913 00:51:00,640 --> 00:51:03,530 这些路由器,它是不累计。 914 00:51:03,530 --> 00:51:06,960 这是什么程序,它首先发送一个消息,从本质上讲,到了第一个路由器。 915 00:51:06,960 --> 00:51:09,490 然后第二个路由器,然后一到第三个路由器, 916 00:51:09,490 --> 00:51:12,610 每次测量。因此,在理论上,这些时间会越来越大 917 00:51:12,610 --> 00:51:14,860 或至少​​非常接近彼此, 918 00:51:14,860 --> 00:51:18,090 而事实上,就在这里的校园超级小。 919 00:51:18,090 --> 00:51:20,820 只要你开始在全国各地,它需要的数据 920 00:51:20,820 --> 00:51:24,830 一点时间来旅游,接近100毫秒,或采取。 921 00:51:24,830 --> 00:51:28,330 但是,让我们现在去另一个方向。在英国剑桥大学怎么样? 922 00:51:28,330 --> 00:51:32,540 让我代替运行traceroute的www.cam剑桥, 923 00:51:32,540 --> 00:51:36,710 这里学术交流。英国,并按下回车键。 924 00:51:36,710 --> 00:51:38,830 这是非常该死的快。 925 00:51:38,830 --> 00:51:43,300 我的数据从字面上去英国剑桥,在那一刹那的时间。 926 00:51:43,300 --> 00:51:45,340 >> 所以,让我们来看看,它采取了路径。 927 00:51:45,340 --> 00:51:47,520 哈佛大学,哈佛大学,哈佛,北十字路口, 928 00:51:47,520 --> 00:51:52,690 这是一个ISP,那么这是北十字路口,然后咣当。 929 00:51:52,690 --> 00:51:58,320 在步骤6和7中,路由器6和7之间的是什么? 930 00:51:58,320 --> 00:52:02,040 大西洋。我们推断的事实, 931 00:52:02,040 --> 00:52:06,530 我们从这里毫秒20日至80毫秒。 932 00:52:06,530 --> 00:52:10,050 因此就花了60毫秒,给予或采取克服。 933 00:52:10,050 --> 00:52:12,910 这可能是一个大的水体。 934 00:52:12,910 --> 00:52:15,250 在那之后的什么“?那么,在这里,我们是在伦敦, 935 00:52:15,250 --> 00:52:18,860 只需88 ms后。更多伦敦,伦敦, 936 00:52:18,860 --> 00:52:21,730 不知道这是哪里,但我们会假设它是除伦敦以外, 937 00:52:21,730 --> 00:52:26,390 剑桥在这里,最后我们 - 从字面上看,英国剑桥大学 938 00:52:26,390 --> 00:52:29,500 。something.net,然后,最后,在第16行, 939 00:52:29,500 --> 00:52:31,720 他们的网络服务器显然是被称为天蝎座 940 00:52:31,720 --> 00:52:35,500 引擎盖下的,即使我们知道它如www。 941 00:52:35,500 --> 00:52:38,790 一种心灵吹,我想。我第一次这样做,它完全炸毁了我的脑海。 942 00:52:38,790 --> 00:52:41,670 不幸的是,哈佛的流量,通常情况下,在网络上阻止这种。 943 00:52:41,670 --> 00:52:44,340 所以,你不能做到这一点的超级容易。 944 00:52:44,340 --> 00:52:48,500 实现,不过,这是可能的。 945 00:52:48,500 --> 00:52:53,630 好的。让我们以我们在这里休息5分钟。我们会回来潜水更深。 946 00:52:53,630 --> 00:53:00,850 因此,我们回来了,我们已经种缓步在几个不同的方向。 947 00:53:00,850 --> 00:53:03,700 因此,让我们正是一直在这里总结。 948 00:53:03,700 --> 00:53:07,990 我们开始谈话,谈论称为HTML语言。 949 00:53:07,990 --> 00:53:10,680 同样,不是一种编程语言。这只是一种标记语言 950 00:53:10,680 --> 00:53:15,490 在很大程度上这是一个网页形式的美学和结构的内容。 951 00:53:15,490 --> 00:53:19,220 但是,HTML,因此,需要某种机制 952 00:53:19,220 --> 00:53:22,870 Web浏览器和服务器之间的旅行。 953 00:53:22,870 --> 00:53:28,360 HTML因此本其他语言类的游乐设施, 954 00:53:28,360 --> 00:53:31,280 或者更确切地说,一个协议,被称为HTTP。 955 00:53:31,280 --> 00:53:33,730 >> 和HTTP,正如我们已经看到它迄今, 956 00:53:33,730 --> 00:53:37,140 是一种类似于此人握手的惯例。 957 00:53:37,140 --> 00:53:39,940 当浏览器从服务器请求页面时, 958 00:53:39,940 --> 00:53:43,450 它发送“get”请求从浏览器到服务器, 959 00:53:43,450 --> 00:53:48,040 然后服务器的响应与200这样的数字,一切正常, 960 00:53:48,040 --> 00:53:53,290 以及HTML或一些不好的数字,例如404,未找到文件。 961 00:53:53,290 --> 00:53:58,220 但与此同时,HTTP本身是不能上网,本身。 962 00:53:58,220 --> 00:54:01,550 HTTP是一种服务,一种功能的互联网 963 00:54:01,550 --> 00:54:05,530 像G聊天,很像电子邮件是另一种服务是另一种服务。 964 00:54:05,530 --> 00:54:09,180 在互联网上做的事情,我们可以有各种。 965 00:54:09,180 --> 00:54:12,670 HTTP是只是其中一个应用程序。 966 00:54:12,670 --> 00:54:17,210 因此,在顶部 - HTTP是别的东西上 967 00:54:17,210 --> 00:54:21,750 这是我们没有提到的名字,你可能听说过的名字,TCP / IP。 968 00:54:21,750 --> 00:54:25,160 这样的故事,我们只是告诉所有关于 969 00:54:25,160 --> 00:54:28,720 数据如何从点a到点b的。 970 00:54:28,720 --> 00:54:30,950 在这种情况下,我们看到,在非常低的水平 971 00:54:30,950 --> 00:54:33,060 路由器到路由器到路由器到路由器, 972 00:54:33,060 --> 00:54:35,390 实际被发送的数据是如何。 973 00:54:35,390 --> 00:54:40,510 但前进的道路上,会遇到各种各样的障碍,这是怎么回事。 974 00:54:40,510 --> 00:54:43,770 除了这些路由器中,有一些事情在互联网上的防火墙, 975 00:54:43,770 --> 00:54:46,680 等数据,例如我们刚刚发射 976 00:54:46,680 --> 00:54:49,720 我从我到剑桥,斯坦福大学, 977 00:54:49,720 --> 00:54:54,560 发送到,在这个层面上的东西,称为IP地址。 978 00:54:54,560 --> 00:54:57,340 我们看到这一刻前,一个IP地址 979 00:54:57,340 --> 00:55:02,480 只是一个数字的形式w.x.y.z地址, 980 00:55:02,480 --> 00:55:08,070 这些之间,给予或采取,0和255之间, 981 00:55:08,070 --> 00:55:10,080 虽然你不能完全使用所有这些数字。 982 00:55:10,080 --> 00:55:14,220 但这些地方持有人是0和255之间的一个数字。 983 00:55:14,220 --> 00:55:16,820 因此,一个IP地址,这些天是32位。 984 00:55:16,820 --> 00:55:20,780 >> 现在,让我们多少可以在世界上的IP地址? 985 00:55:20,780 --> 00:55:24,420 大约4亿美元,因为任何时候,我们要计算2的幂 986 00:55:24,420 --> 00:55:27,760 所有的方式多达32个的东西,为我们提供了四十亿美元。 987 00:55:27,760 --> 00:55:30,160 所以这是一个很大的IP地址,但您可能已经阅读, 988 00:55:30,160 --> 00:55:32,410 现在,你可能注意到在大众媒体, 989 00:55:32,410 --> 00:55:36,020 一个推向一个新版本的IP IPV6。 990 00:55:36,020 --> 00:55:38,290 现在我们正在使用的版本4。 991 00:55:38,290 --> 00:55:41,060 其实一直没有一个版本5,我们只是跳右6。 992 00:55:41,060 --> 00:55:46,760 6版本使用128位的IP地址,这真是太巨大。 993 00:55:46,760 --> 00:55:49,430 我们不应该运行了相当长的一段时间, 994 00:55:49,430 --> 00:55:52,980 但我们已经开始运行第4版IP地址, 995 00:55:52,980 --> 00:55:56,110 因为我们不是唯一的东西,如笔记本电脑和台式机, 996 00:55:56,110 --> 00:55:58,700 我们很多人有手机,我们很多人有其他设备 997 00:55:58,700 --> 00:56:01,600 如TiVo和这样的IP地址。 998 00:56:01,600 --> 00:56:03,720 哈佛本身有成千上万的数千台计算机。 999 00:56:03,720 --> 00:56:07,970 世界真正运行的IP地址,至少这种形式。 1000 00:56:07,970 --> 00:56:10,340 因此,在未来的几年中,你将看到的地址 1001 00:56:10,340 --> 00:56:12,870 在自己的计算机上可能会慢慢改变 1002 00:56:12,870 --> 00:56:16,740 随着越来越多的公司和大学开始支持较新的版本。 1003 00:56:16,740 --> 00:56:22,770 但电脑一个请求数据从计算机B的IP地址是不够的。 1004 00:56:22,770 --> 00:56:24,950 由于计算机b可以是一个服务器, 1005 00:56:24,950 --> 00:56:27,600 和服务器,正如我前面提到的,可以做的事情束。 1006 00:56:27,600 --> 00:56:29,940 它可以承载的网页,也可以是一台邮件服务器, 1007 00:56:29,940 --> 00:56:32,310 它可以是一个Skype服务器,它可以是一个G的聊天服务器。 1008 00:56:32,310 --> 00:56:35,870 >> 所有这些不同的服务,可以在服务器上提供 1009 00:56:35,870 --> 00:56:38,330 都可以,身体,是在同一台机器上。 1010 00:56:38,330 --> 00:56:40,380 因此,除了IP地址, 1011 00:56:40,380 --> 00:56:43,250 世界上有东西叫做互联网上的端口。 1012 00:56:43,250 --> 00:56:47,830 一个端口只是一个数字,所以有一个唯一的编号为HTTP。 1013 00:56:47,830 --> 00:56:50,280 它的数字是80。 1014 00:56:50,280 --> 00:56:55,870 HTTP也使用443号,但更具体地,用于加密的HTTPS。 1015 00:56:55,870 --> 00:57:00,030 每当你看到了s,安全,使用不同的数字。 1016 00:57:00,030 --> 00:57:06,580 有其他数字,如25,用于称为SMTP的东西,否则被称为电子邮件。 1017 00:57:06,580 --> 00:57:09,620 有一种叫22 SSH, 1018 00:57:09,620 --> 00:57:11,850 有一大堆其他港口,在那里。 1019 00:57:11,850 --> 00:57:14,460 现在,我们人类很少看到这些数字。 1020 00:57:14,460 --> 00:57:21,970 然而,当你键入一个地址,如http://www.facebook.com, 1021 00:57:21,970 --> 00:57:26,560 浏览器被偷偷插入80,因为你使用的是HTTP。 1022 00:57:26,560 --> 00:57:30,630 如果你,而不是键入HTTPS,它偷偷插入443。 1023 00:57:30,630 --> 00:57:35,180 我们可以看到这个手动的,如果我拉了一个的浏览器 1024 00:57:35,180 --> 00:57:41,850 并去http://www.facebook.com:80。 1025 00:57:41,850 --> 00:57:44,550 因此明确引用不只是的网站名称 1026 00:57:44,550 --> 00:57:47,650 但我想谈的端口,并按下回车键。 1027 00:57:47,650 --> 00:57:50,170 请注意,它会消失,因为浏览器假设, 1028 00:57:50,170 --> 00:57:53,360 哦,80,我也不去打扰显示,给你。 1029 00:57:53,360 --> 00:57:56,400 但这样做的原因是,如果我真的想向某人发送一封电子邮件, 1030 00:57:56,400 --> 00:58:02,340 我真的会被发送给他们在端口25上,这是SMTP。 1031 00:58:02,340 --> 00:58:04,890 有点过于简单了,但你有一些朋友 1032 00:58:04,890 --> 00:58:09,290 究竟是谁在Facebook上,同样,他们的接收邮件的服务器。 1033 00:58:09,290 --> 00:58:12,610 >> 任何时候您发送一封电子邮件,Gmail是为你做 1034 00:58:12,610 --> 00:58:14,960 或Outlook或使用的程序, 1035 00:58:14,960 --> 00:58:19,270 它的排序,偷偷将这个数字为好,25日,在这种情况下。 1036 00:58:19,270 --> 00:58:24,490 这是这个组合的IP地址和数字,唯一标识 1037 00:58:24,490 --> 00:58:29,190 一个Internet上的计算机,该计算机上的一个特定的服务。 1038 00:58:29,190 --> 00:58:33,460 现在,当然,我们大多数人可能永远手动键入IP地址。 1039 00:58:33,460 --> 00:58:37,340 也许你已经在家电,但在现实世界中,没有这么多。 1040 00:58:37,340 --> 00:58:42,750 为什么我们不能到浏览器中输入IP地址吗? 1041 00:58:42,750 --> 00:58:45,860 它的工作,事实上,我们可以看到这一点,让我告诉你 1042 00:58:45,860 --> 00:58:50,000 另外一个命令,应该在哈佛大学校园的Mac或PC上的大多数地方。 1043 00:58:50,000 --> 00:58:53,970 此命令NSLOOKUP,域名服务器查询。 1044 00:58:53,970 --> 00:58:59,960 如果我抬头一看www.cnn.com,事实证明,CNN - 呵呵,有意思。 1045 00:58:59,960 --> 00:59:03,180 CNN已经开始使用Amazon Web Services。 1046 00:59:03,180 --> 00:59:06,380 你可能知道,云计算,亚马逊的云计算的大牌球星之一。 1047 00:59:06,380 --> 00:59:10,240 我只是做了,我说,'给我的地址的CNN的Web服务器, 1048 00:59:10,240 --> 00:59:14,090 但事实证明,亚马逊,CNN的Web服务器管理 1049 00:59:14,090 --> 00:59:16,030 亚马逊网络服务,这表明。 1050 00:59:16,030 --> 00:59:19,680 该服务器的地址是在这里。 1051 00:59:19,680 --> 00:59:22,350 所以我不知道这是否会工作,因为他们没有使用Amazon。 1052 00:59:22,350 --> 00:59:32,830 但是,让我们尝试http://相似,IP地址,输入和 - 1053 00:59:32,830 --> 00:59:35,690 它是去上班吗? 1054 00:59:35,690 --> 00:59:39,280 是。这是行不通的。互联网今天是超慢。 1055 00:59:39,280 --> 00:59:43,680 但是,在某一时刻,你会看到一些新闻故事。 1056 00:59:43,680 --> 00:59:48,360 我们走吧。美国银行(Bank of America)被起诉。好的。 1057 00:59:48,360 --> 00:59:54,000 >> 这是因为这个IP地址恰好的代名词,www.cnn.com。 1058 00:59:54,000 --> 00:59:59,920 当然,这将是可怕的营销,说,请访问我们的网站50.112.94.127。 1059 00:59:59,920 --> 01:00:02,370 你从来不记得了。因此,即使这些日子里,你可能还记得的事情 1060 01:00:02,370 --> 01:00:07,210 如1-800-COLLECT或记忆的世界想出了电话号码。 1061 01:00:07,210 --> 01:00:09,540 其中,前手机,而难记 1062 01:00:09,540 --> 01:00:11,800 ,直到你可以只需键入它,把它抛在脑后。 1063 01:00:11,800 --> 01:00:15,730 因此,Web,也有本公约的名称和IP地址, 1064 01:00:15,730 --> 01:00:17,770 有这些东西有所谓的DNS服务器, 1065 01:00:17,770 --> 01:00:23,870 域名系统服务器,IP地址转换为名称,反之亦然。 1066 01:00:23,870 --> 01:00:26,340 所以,这是怎么回事引擎盖下的。 1067 01:00:26,340 --> 01:00:29,540 最后,我们有TCP / IP,这是非常低级别的协议 1068 01:00:29,540 --> 01:00:32,570 ,真的,只得到0和1的在互联网上, 1069 01:00:32,570 --> 01:00:36,030 它这样做,把它们放入一个虚拟的信封, 1070 01:00:36,030 --> 01:00:38,820 如果你愿意,写在外面的信封 1071 01:00:38,820 --> 01:00:43,930 目的地的IP地址,以及数字端口号 1072 01:00:43,930 --> 01:00:47,520 该目标,它想告诉的服务。 1073 01:00:47,520 --> 01:00:51,060 同时,在信封上也有一些被称为作为返回地址, 1074 01:00:51,060 --> 01:00:55,600 这是你的IP地址,这样,当CNN,你得到一个信息包 1075 01:00:55,600 --> 01:00:58,710 打开这个虚拟的信封,看到你想要的主页, 1076 01:00:58,710 --> 01:01:04,630 它知道这个虚拟的信封发送HTML回到从发件人的一部分。 1077 01:01:04,630 --> 01:01:07,470 因此,让我们一起来看看这款在一些更详细的。 1078 01:01:07,470 --> 01:01:11,370 这是从一家名为埃里克松,从几年前。 1079 01:01:11,370 --> 01:01:14,780 如何在互联网的实际工作中,他们采取了一些自由 1080 01:01:14,780 --> 01:01:18,920 但它比单纯的粉笔在这里描绘了一个更直观的图片。 1081 01:01:18,920 --> 01:01:26,690 所以我给你的互联网“有点。” 1082 01:02:26,660 --> 01:02:29,840 >> [旁白]第一次在历史上, 1083 01:02:29,840 --> 01:02:35,260 人与机器一起工作,实现梦想。 1084 01:02:35,260 --> 01:02:38,910 一个团结的力量,知道没有地理界限的。 1085 01:02:38,910 --> 01:02:43,230 在不考虑种族,信仰或肤色。 1086 01:02:43,230 --> 01:02:47,770 通信真正给人们带来了一个新的时代。 1087 01:02:47,770 --> 01:02:50,070 这是 1088 01:02:50,070 --> 01:02:54,980 黎明的净。 1089 01:02:54,980 --> 01:03:04,640 想知道它是如何工作的?点击这里开始你的旅程,到网上。 1090 01:03:04,640 --> 01:03:07,890 现在,到底发生了什么,当你点击链接? 1091 01:03:07,890 --> 01:03:10,150 你开始的信息流。 1092 01:03:10,150 --> 01:03:13,310 这一信息传播到您的个人邮件收发室 1093 01:03:13,310 --> 01:03:18,500 先生IP包,标示它,并把它发送的道路上。 1094 01:03:18,500 --> 01:03:20,960 每个数据包是在它的大小的限制。 1095 01:03:20,960 --> 01:03:23,880 收发室必须决定如何划分的信息 1096 01:03:23,880 --> 01:03:26,070 以及如何将它打包。 1097 01:03:26,070 --> 01:03:29,550 现在,该软件包需要包含重要信息的标签 1098 01:03:29,550 --> 01:03:35,570 如发送者的地址,接收器的地址,和数据包的类型,它是。 1099 01:03:51,700 --> 01:03:54,980 因为这个特定的数据包是走出去到互联网上, 1100 01:03:54,980 --> 01:03:57,720 还获得了代理服务器的地址, 1101 01:03:57,720 --> 01:04:01,520 其中有一个特殊的功能,我们将在后面看到。 1102 01:04:01,520 --> 01:04:06,650 现正推出到您的局域网或局域网的数据包。 1103 01:04:06,650 --> 01:04:10,160 该网络用于连接本地计算机“ 1104 01:04:10,160 --> 01:04:15,900 路由器,打印机,等等,在物理墙的建设的信息交流。 1105 01:04:15,900 --> 01:04:20,290 LAN是一个漂亮的不受控制的地方,不幸的是, 1106 01:04:20,290 --> 01:04:23,950 事故发生。 1107 01:04:31,190 --> 01:04:34,710 这条公路的局域网是挤满了所有类型的信息。 1108 01:04:34,710 --> 01:04:38,900 这是Novell公司的数据包,IP数据包,AppleTalk协议。 1109 01:04:38,900 --> 01:04:41,270 他们将针对交通,像往常一样。 1110 01:04:41,270 --> 01:04:44,260 本地路由器读取的地址,如果有必要, 1111 01:04:44,260 --> 01:04:48,520 升降机的数据包到另一个网络。 1112 01:04:48,520 --> 01:04:54,270 啊,路由器。控制在一个看似杂乱无章的世界的象征。 1113 01:04:54,270 --> 01:05:05,480 [路由器喃喃自语,自说自话] 1114 01:05:05,480 --> 01:05:10,030 >> [旁白]有他的,系统的,不仁不义,有条不紊, 1115 01:05:10,030 --> 01:05:14,150 保守,有时不太加快速度。 1116 01:05:14,150 --> 01:05:17,680 但至少他是确切的,在大多数情况下。 1117 01:05:32,270 --> 01:05:36,820 由于数据包离开路由器,他们自己的方式进入企业互联网 1118 01:05:36,820 --> 01:05:40,830 头路由器交换机。 1119 01:05:40,830 --> 01:05:46,250 多一点效率比路由器,路由器交换机起着与IP数据包朝三暮四, 1120 01:05:46,250 --> 01:05:48,920 他们沿着自己的方式巧妙地路由。 1121 01:05:48,920 --> 01:05:52,130 数字的弹球向导“,如果你愿意。 1122 01:05:52,130 --> 01:06:04,270 路由器交换机自说自话] 1123 01:06:09,830 --> 01:06:12,150 [旁白]当数据包到达目的地时, 1124 01:06:12,150 --> 01:06:14,740 他们拾起由网络接口​​, 1125 01:06:14,740 --> 01:06:18,040 准备好要发送到下一级。 1126 01:06:18,040 --> 01:06:21,010 在这种情况下,代理服务器。 1127 01:06:21,010 --> 01:06:25,040 许多公司使用代理,作为中间人的排序 1128 01:06:25,040 --> 01:06:27,630 ,以减轻在因特网上连接的负载 1129 01:06:27,630 --> 01:06:32,240 出于安全原因,也是如此。 1130 01:06:32,240 --> 01:06:38,750 正如你可以看到的,数据包是所有各种大小取决于其内容。 1131 01:06:55,210 --> 01:07:01,890 代理打开包,看起来的网站地址或URL。 1132 01:07:01,890 --> 01:07:04,950 根据该地址是否是可以接受的, 1133 01:07:04,950 --> 01:07:08,000 的数据包被发送到互联网上。 1134 01:07:13,890 --> 01:07:19,630 然而,一些不符合批准的代理地址。 1135 01:07:19,630 --> 01:07:25,680 也就是说,企业或管理的指导方针。 1136 01:07:25,680 --> 01:07:30,580 这些简易程序处理。 1137 01:07:30,580 --> 01:07:32,410 我们会的,有没有。 1138 01:07:32,410 --> 01:07:36,350 对于那些谁使,这是在路上了。 1139 01:07:46,850 --> 01:07:53,310 >> 接下来,防火墙。 1140 01:07:53,310 --> 01:07:57,410 在企业防火墙的目的有两个。 1141 01:07:57,410 --> 01:08:02,420 它可以防止一些比较讨厌的东西从Internet到Intranet, 1142 01:08:02,420 --> 01:08:10,280 它也可以防止企业的敏感信息被发送到网际网路。 1143 01:08:10,280 --> 01:08:12,980 一旦通过防火墙,路由器拿起包 1144 01:08:12,980 --> 01:08:18,180 ,并把它放到一个更窄的道路,或带宽,因为我们说的。 1145 01:08:18,180 --> 01:08:23,720 显然,道路不宽,足以把他们所有。 1146 01:08:23,720 --> 01:08:29,319 现在,你可能想知道所有这些数据包,不让它前进的道路上会发生什么。 1147 01:08:29,319 --> 01:08:32,270 那么,当叶先生没有收到确认 1148 01:08:32,270 --> 01:08:35,000 已收到一个包在适当的时候, 1149 01:08:35,000 --> 01:08:39,890 他简单地发送一个更换包。 1150 01:08:39,890 --> 01:08:44,760 我们现在已经准备好进入互联网的世界。 1151 01:08:44,760 --> 01:08:49,370 蜘蛛网互联网络跨越整个地球。 1152 01:08:49,370 --> 01:08:56,050 在这里,路由器和交换机的网络之间建立联系。 1153 01:08:56,050 --> 01:08:59,200 现在,网络是一个完全不同的环境,你会发现 1154 01:08:59,200 --> 01:09:01,569 在你的局域网的防护墙。 1155 01:09:01,569 --> 01:09:04,060 在这里,它的狂野西部。 1156 01:09:04,060 --> 01:09:06,359 充足的空间,有的是机会, 1157 01:09:06,359 --> 01:09:09,760 大量的探索和去的地方。 1158 01:09:09,760 --> 01:09:12,760 由于非常小的控制和调节, 1159 01:09:12,760 --> 01:09:18,300 新的想法找到肥沃的土壤,把信封其可能性。 1160 01:09:18,300 --> 01:09:22,330 但是,由于这种自由,也潜藏着一定的危险。 1161 01:09:22,330 --> 01:09:27,000 你永远不会知道什么时候你会遇到可怕的死亡之Ping, 1162 01:09:27,000 --> 01:09:29,890 一个正常的请求平的一个特殊版本, 1163 01:09:29,890 --> 01:09:35,720 一些白痴想出来的乱不知情的主机。 1164 01:09:35,720 --> 01:09:39,130 我们的数据包采取的路径可能是通过卫星, 1165 01:09:39,130 --> 01:09:43,090 电话线,无线,甚至跨洋电缆。 1166 01:09:43,090 --> 01:09:46,520 他们并不总是最快或最短路径, 1167 01:09:46,520 --> 01:09:50,290 但他们会得到有最终的。 1168 01:09:50,290 --> 01:09:55,230 也许这就是为什么它有时也被称为“万维网等待。” 1169 01:09:55,230 --> 01:09:57,980 但是,当一切工作进展顺利, 1170 01:09:57,980 --> 01:10:03,800 在下拉的帽子,可以规避地球的5倍以上,从字面上。 1171 01:10:03,800 --> 01:10:08,230 本地电话或更低的成本。 1172 01:10:08,230 --> 01:10:15,070 我们的目的地接近尾声时,我们会找到另一个防火墙。 1173 01:10:15,070 --> 01:10:18,420 >> 根据你的观点,作为一个数据包, 1174 01:10:18,420 --> 01:10:23,730 防火墙可能是一个安全的堡垒,是一个可怕的对手。 1175 01:10:23,730 --> 01:10:28,530 这一切都取决于你站在哪一边,你的意图是什么。 1176 01:10:28,530 --> 01:10:34,990 防火墙的目的是让只有那些符合其标准的数据包。 1177 01:10:34,990 --> 01:10:39,360 这个防火墙上的端口80和25。 1178 01:10:39,360 --> 01:10:46,630 尝试通过其他端口都关闭的业务。 1179 01:10:57,660 --> 01:11:03,480 使用端口25的邮件数据包, 1180 01:11:03,480 --> 01:11:10,720 而端口80是从互联网上的Web服务器的数据包的入口。 1181 01:11:10,720 --> 01:11:15,080 在防火墙内,数据包筛选更彻底。 1182 01:11:15,080 --> 01:11:17,970 某些数据包,很容易通关, 1183 01:11:17,970 --> 01:11:21,420 而其他人看起来只是有点可疑。 1184 01:11:21,420 --> 01:11:24,060 现在,防火墙人员不容易上当, 1185 01:11:24,060 --> 01:11:32,120 例如,当这个ping的死亡数据包试图把自己伪装成一个正常的ping数据包。 1186 01:11:32,120 --> 01:11:37,520 [防火墙的数据包的官员说] 1187 01:11:37,520 --> 01:11:40,510 [旁白]幸运足以让这对于那些数据包, 1188 01:11:40,510 --> 01:11:45,730 几乎是过去的旅程。 1189 01:11:45,730 --> 01:11:52,130 这只是一个接口上应采取到Web服务器。 1190 01:11:52,130 --> 01:11:55,440 如今,Web服务器可以运行在许多事情上, 1191 01:11:55,440 --> 01:11:59,230 从大型机到你的办公桌上的电脑的网络摄像头。 1192 01:11:59,230 --> 01:12:01,720 为什么不是你的冰箱? 1193 01:12:01,720 --> 01:12:04,870 通过适当的设置,你可以找到,如果你有气质 1194 01:12:04,870 --> 01:12:08,390 鸡Cacciatore酒店,或者如果你有去购物。 1195 01:12:08,390 --> 01:12:11,760 请记住,这是净的曙光。 1196 01:12:11,760 --> 01:12:17,310 几乎任何事情都是可能的。 1197 01:12:17,310 --> 01:12:20,440 一个接一个的数据包被接收, 1198 01:12:20,440 --> 01:12:26,320 打开,并解压缩。 1199 01:12:26,320 --> 01:12:31,200 它们包含的信息,也就是说,你的信息请求, 1200 01:12:31,200 --> 01:12:34,830 被发送到Web服务器的应用程序。 1201 01:12:41,540 --> 01:12:47,140 包本身是循环使用的, 1202 01:12:47,140 --> 01:12:57,570 准备再次使用,洋溢着您要求的信息, 1203 01:12:57,570 --> 01:13:03,340 处理,并发出了在返回的途中给你。 1204 01:13:03,340 --> 01:13:13,250 返回过去防火墙,路由器,并通过到Internet。 1205 01:13:13,250 --> 01:13:21,020 通过您的企业防火墙 1206 01:13:21,020 --> 01:13:24,180 和你的界面上, 1207 01:13:24,180 --> 01:13:31,180 准备你的网络浏览器提供您所要求的信息。 1208 01:13:31,180 --> 01:13:39,840 也就是说,该膜。 1209 01:13:39,840 --> 01:13:43,550 与他们的努力感到高兴,并相信更美好的世界, 1210 01:13:43,550 --> 01:13:50,250 我们的可靠的数据包,骑幸福地进入新的一天的日落, 1211 01:13:50,250 --> 01:13:56,880 完全知道,他们曾担任他们的主人。 1212 01:13:56,880 --> 01:14:02,560 现在,是不是一个快乐的结局? 1213 01:14:02,560 --> 01:14:07,040 [马兰]好吧,这就够了。我们会下周见。 1214 01:14:07,040 --> 01:14:10,040 [CS50.TV]