计算机速成课Crash Course - 30. 万维网

news2025/1/17 5:53:52

今天继续计算机速成课Crash Course的系列讲解。

更多技术文章,全网首发公众号 “摸鱼IT” 锁定 -上午11点 - ,感谢大家关注、转发、点赞!

计算机速成课Crash Course - 30. 万维网 (qq.com)

30. 万维网

前两集我们深入讨论了电线、信号、交换机、数据包,路由器以及协议,它们共同组成了互联网。今天我们向上再抽象一层,来讨论万维网。

万维网(World Wide Web)和互联网(Internet)不是一回事,尽管人们经常混用这两个词。

图片

万维网在互联网之上运行,互联网之上还有 Skype, Minecraft 和 Instagram,互联网是传递数据的管道,各种程序都会用,其中传输最多数据的程序是万维网,分布在全球数百万个服务器上,可以用"浏览器"来访问万维网。

这集我们会深入讲解万维网。

万维网的最基本单位,是单个页面,页面有内容,也有去往其他页面的链接,这些链接叫"超链接"。

你们都见过:可以点击的文字或图片,把你送往另一个页面,这些超链接形成巨大的互联网络,这就是"万维网"名字的由来。

图片

现在说起来觉得很简单,但在超链接做出来之前,计算机上每次想看另一个信息时,你需要在文件系统中找到它,或是把地址输入搜索框,有了超链接,你可以在相关主题间轻松切换。

超链接的价值早在 1945 年就被 Vannevar Bush 意识到了,在第 24 集中我们说过,他发过一篇文章,描述一个假想的机器 Memex,Bush的形容是"关联式索引.. 选一个物品会引起,另一个物品被立即选中"。

图片

他解释道:"将两样东西联系在一起的过程十分重要,在任何时候,当其中一件东西进入视线,只需点一下按钮,立马就能回忆起另一件"。

图片

1945年的时候计算机连显示屏都没有,所以这个想法非常超前!

因为文字超链接是如此强大,它得到了一个同样厉害的名字:"超文本"!

如今超文本最常指向的,是另一个网页,然后网页由浏览器渲染,我们待会会讲。

为了使网页能相互连接,每个网页需要一个唯一的地址,这个地址叫 "统一资源定位器",简称 URL。

一个网页URL的例子是 "thecrashcourse.com/courses",就像上集讨论的,当你访问一个网站时,计算机首先会做"DNS查找"。

"DNS查找"的输入是一个域名,比如 thecrashcourse.com,DNS 会输出对应的IP地址,现在有了IP地址,你的浏览器会打开一个 TCP 连接到这个 IP 地址。

图片

这个地址运行着"网页服务器",网页服务器的标准端口是 80 端口,这时,你的计算机连到了,thecrashcourse.com 的服务器。

图片

下一步是向服务器请求"courses"这个页面,这里会用"超文本传输协议"(HTTP)。

HTTP的第一个标准,HTTP 0.9,创建于1991年,只有一个指令,"GET" 指令,幸运的是,对当时来说也够用。

因为我们想要的是"courses"页面,我们向服务器发送指令:"GET /courses",该指令以"ASCII编码"发送到服务器。服务器会返回该地址对应的网页,然后浏览器会渲染到屏幕上。

图片

如果用户点了另一个链接,计算机会重新发一个GET请求,你浏览网站时,这个步骤会不断重复。

在之后的版本,HTTP添加了状态码,状态码放在请求前面。

举例,状态码 200 代表 "网页找到了,给你",状态码400~499代表客户端出错,比如网页不存在,就是可怕的404错误

图片

"超文本"的存储和发送都是以普通文本形式。

举个例子,编码可能是 ASCII 或 UTF-16,我们在第4集和第20集讨论过,因为如果只有纯文本,无法表明什么是链接,什么不是链接,所以有必要开发一种标记方法,因此开发了 超文本标记语言(HTML)。

HTML 第一版的版本号是 0.8,创建于 1990 年,有18种HTML指令,仅此而已。

我们来做一个网页吧!

首先,给网页一个大标题,我们输 h1 代表一级标题,然后用<>括起来,这就是一个HTML标签,然后输入想要的标题,我们不想一整页都是标题,所以加 </h1> 作为结束标签。

现在来加点内容,读者可能不知道"克林贡"是什么,所以我们给这个词,加一个超链接到"克林贡语言研究院",我们用 <a> 标签来做,它有一个 href 属性,说明链接指向哪里,当点击链接时就会进入那个网页,最后用 </a> 关闭标签。

接下来用 <h2> 标签做二级标题,HTML也有做列表的标签,我们先写<ol> 代表 有序列表(ordered list),然后想加几个列表项目就加几个,用 <li> 包起来就行,读者可能不知道Bat'leth是什么,那么也加上超链接,最后,为了保持良好格式,用</ol>代表列表结束。

图片

这就完成了 - 一个很简单的网页!

如果把这些文字存入记事本或文本编辑器,然后文件取名"test.html",就可以拖入浏览器打开。

图片

当然,如今的网页更复杂一些,最新版的 HTML,HTML5,有100多种标签,图片标签,表格标签,表单标签,按钮标签,等等。

还有其他相关技术就不说了,比如 层叠样式表 (CSS)和 JavaScript,这俩可以加进网页,做一些更厉害的事。

让我们回到浏览器,网页浏览器可以和网页服务器沟通,浏览器不仅获取网页和媒体,获取后还负责显示。

第一个浏览器和服务器,是 Tim Berners-Lee 在 1990 年写的,一共花了2个月,那时候他在瑞士的"欧洲核子研究所"工作,为了做出来,他同时建立了几个最基本的网络标准,URL, HTML 和 HTTP。

图片

两个月能做这些很不错啊!

不过公平点说,他研究超文本系统已经有十几年了,和同事在 CERN 内部使用一阵子后,在 1991 年发布了出去,万维网就此诞生。

重要的是,万维网有开放标准,大家都可以开发新服务器和新浏览器,因此"伊利诺伊大学香槟分校"的一个小组,在 1993 年做了 Mosaic 浏览器,第一个可以在文字旁边显示图片的浏览器。

图片

之前浏览器要单开一个新窗口显示图片,还引进了书签等新功能,界面友好,使它很受欢迎,尽管看上去硬邦邦的,但和如今的浏览器长的差不多。

1990年代末有许多浏览器面世,Netscape Navigator, Internet Explorer, Opera, OmniWeb, Mozilla,也有很多服务器面世,比如 Apache 和 微软互联网信息服务(IIS)。

每天都有新网站冒出来,如今的网络巨头,比如亚马逊和 eBay,创始于 1990 年代中期。

那是个黄金时代!

随着万维网日益繁荣,人们越来越需要搜索,如果你知道网站地址,比如 ebay.com,直接输入浏览器就行,如果不知道地址呢?

比如想找可爱猫咪的图片,现在就要!去哪里找呢?

起初人们会维护一个目录,链接到其他网站,其中最有名的叫"Jerry和David的万维网指南",1994年改名为Yahoo。

图片

随着网络越来越大,人工编辑的目录变得不便利,所以开发了搜索引擎。

让我们进入思想泡泡~~

长的最像现代搜索引擎的最早搜素引擎,叫JumpStation,由Jonathon Fletcher于1993年在斯特林大学创建。

图片

它有 3 个部分,第一个是爬虫,一个跟着链接到处跑的软件,每当看到新链接,就加进自己的列表里。

第二个部分是不断扩张的索引,记录访问过的网页上,出现过哪些词。

最后一个部分,是查询索引的搜索算法。

举个例子,如果我在 JumpStation 输入"猫",每个有"猫"这个词的网页都会出现。

早期搜索引擎的排名方式 非常简单,取决于搜索词在页面上的出现次数,刚开始还行,直到有人开始钻空子,比如在网页上写几百个"猫",把人们吸引过来。

谷歌成名的一个很大原因是,创造了一个聪明的算法来规避这个问题,与其信任网页上的内容,搜索引擎会看其他网站,有没有链接到这个网站。

图片

如果只是写满"猫"的垃圾网站,没有网站会指向它,如果有关于猫的有用内容,有网站会指向它,所以这些"反向链接"的数量,特别是有信誉的网站,代表了网站质量

Google 一开始时是 1996 年斯坦福大学,一个叫 BackRub 的研究项目,两年后分离出来,演变成如今的谷歌。

图片

谢谢思想泡泡!

最后,我想讲一个词,你最近可能经常听到,网络中立性,现在你对数据包,路由和万维网,有了个大体概念,足够你理解这个争论的核心点,至少从技术角度。

简单说"网络中立性"是应该平等对待所有数据包,不论这个数据包是我的邮件,或者是你在看视频,速度和优先级应该是一样的。

但很多公司会乐意让它们的数据优先到达,拿 Comcast 举例,它们不但是大型互联网服务提供商,而且拥有多家电视频道,比如 NBC 和 The Weather Channel,可以在线看。

图片

我不是特意找Comcast麻烦,但要是没有网络中立性,Comcast 可以让自己的内容优先到达,节流其他线上视频,节流(Throttled) 意思是故意给更少带宽和更低优先级。

再次重申,这只是举例,不是说 Comcast 很坏。

支持网络中立性的人说,没有中立性后,服务商可以推出提速的"高级套餐",给剥削性商业模式埋下种子。

互联网服务供应商成为信息的"守门人",它们有着强烈的动机去碾压对手,另外,Netflix和Google这样的大公司可以花钱买特权,而小公司,比如刚成立的创业公司,会处于劣势,阻止了创新。

另一方面,从技术原因看,也许你会希望不同数据传输速度不同,你希望Skype的优先级更高,邮件晚几秒没关系。

而反对"网络中立性"的人认为,市场竞争会阻碍不良行为,如果供应商把客户喜欢的网站降速,客户会离开供应商。

这场争辩还会持续很久,就像我们在 Crash Course 其他系列中说过,你应该自己主动了解更多信息,因为"网络中立性"的影响十分复杂而且广泛。

我们下节课再见。


以上内容就是 30. 万维网 的内容,感兴趣的同学记得点赞、关注、转发、收藏哦!

我会不定期发布课程的讲解!

更多技术文章,全网首发公众号 “摸鱼IT” 锁定 -上午11点 - ,感谢大家关注、转发、点赞!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1442194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EasyExcel操作Excel表格

一、EasyExcel介绍 1.1 介绍 EasyExcel 是一个基于 Java 的简单易用的 Excel 文件读写工具&#xff0c;它提供了一种简单而又高效的方式来读取、写入和操作 Excel 文件。EasyExcel 是阿里巴巴开源的项目&#xff0c;它旨在简化开发人员处理 Excel 文件的流程&#xff0c;使得…

Python春节倒计时:用代码迎接新年的到来!

使用Python实现春节倒计时程序 一、引言 随着科技的不断发展&#xff0c;编程已经渗透到我们生活的方方面面。今天&#xff0c;我们将使用Python编写一个春节倒计时程序&#xff0c;来感受编程与传统文化的巧妙结合。该程序将能够显示距离农历2024年春节&#xff08;大年初一…

运维高级篇-分库分表(拆分策略详解)

分库分表 介绍 问题分析 随着互联网及移动互联网的发展&#xff0c;应用系统的数据量也是成指数式增长&#xff0c;若采用单数据库进行数据存 储&#xff0c;存在以下性能瓶颈&#xff1a; IO瓶颈&#xff1a;热点数据太多&#xff0c;数据库缓存不足&#xff0c;产生大量磁盘…

企业级人脸属性检测解决方案

在当今数字化、智能化的时代背景下&#xff0c;人脸识别技术已经成为众多行业不可或缺的一部分。美摄科技&#xff0c;作为人脸识别技术的领先者&#xff0c;为企业提供了一整套先进且高效的人脸属性检测解决方案。 美摄科技的人脸属性检测解决方案&#xff0c;基于深度学习算…

24 SEMC相关

文章目录 24.1 SEMC 简介24.2 SEMC 框图剖析24.2.1 通讯引脚24.2.1.1 SEMC 的片选信号24.2.1.2 数据选通信号 DQS 24.2.2 存储器控制器24.2.3 IP 命令和 AXI 命令24.2.4 驱动时钟 24.4 SEMC 初始化配置结构体24.4.1 dqsMode24.4.2 cmdTimeoutCycles24.4.3 busTimeoutCycles24.4…

Android开发 button 按钮点击两次 响应onclick方法

问题 Android开发 button 按钮点击两次 响应onclick方法 详细问题 笔者xml代码 <!-- 一个按钮 --> <Button android:id"id/button1" android:layout_width"wrap_conten…

排序算法的时间复杂度存在下界问题

对于几种常用的排序算法&#xff0c;无论是归并排序、快速排序、以及更加常见的冒泡排序等&#xff0c;这些排序算法的时间复杂度都是大于等于O(n*lg(n))的&#xff0c;而这些排序算法存在一个共同的行为&#xff0c;那就是这些算法在对元素进行排序的时候&#xff0c;都会进行…

imazing是啥?imazing有什么用

iMazing 是一款用于管理 iOS 设备的第三方软件。它支持在 Windows 或 Mac 电脑上对连接的 iPhone、iPad 或 iPod 进行数据传输、备份和管理工作。用户可以通过 iMazing 传输和备份包括照片、音乐、铃声、视频、电子书和通讯录等在内的多种信息。iMazing 的功能与苹果官方的 iTu…

C#上位机与三菱PLC的通信03--MC协议之A-1E报文解析

1、MC协议帧 MC协议可以在串口通信&#xff0c;也可以在以太网通信&#xff0c;有A-1E和Qna-3E两种模式&#xff0c;这两种都是三菱PLC通信协议中比较常用的两种&#xff0c;一般我们使用比较多的是以太网通信&#xff0c;对于FX5U系列/Q系列/Qna系列/L系列的PLC&#xff0c;…

求职|基于Springboot的校园求职招聘系统设计与实现(源码+数据库+文档)

校园求职招聘系统目录 目录 基于Springboot的校园求职招聘系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、企业信息管理 3、公告类型管理 4、公告信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选…

大型秒杀中如何减库存?JAVA 架构知识

目前来看&#xff0c;业务系统中最常见的就是预扣库存方案&#xff0c;像你在买机票、买电影票时&#xff0c;下单后一般都有个“有效付款时间”&#xff0c;超过这个时间订单自动释放&#xff0c;这都是典型的预扣库存方案。而具体到秒杀这个场景&#xff0c;应该采用哪种方案…

【MATLAB源码-第138期】基于matlab的D2D蜂窝通信仿真,对比启发式算法,最优化算法和随机算法的性能。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 D2D蜂窝通信介绍 D2D蜂窝通信允许在同一蜂窝网络覆盖区域内的终端设备直接相互通信&#xff0c;而无需数据经过基站或网络核心部分转发。这种通信模式具有几个显著优点&#xff1a;首先&#xff0c;它可以显著降低通信延迟&…

Springboot+vue的社区养老服务平台(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的社区养老服务平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的社区养老服务平台&#xff0c;采用M&#xff08;model&…

【初中生讲机器学习】6. 分类算法中常用的模型评价指标有哪些?here!

创建时间&#xff1a;2024-02-07 最后编辑时间&#xff1a;2024-02-09 作者&#xff1a;Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏&#xff0c;很高兴遇见你~ 我是 Geeker_LStar&#xff0c;一名初三学生&#xff0c;热爱计算机和数学&#xff0c;我们一起加…

c语言实现io多路复用(select),进程,线程并发服务器

io多路复用&#xff08;select&#xff09;代码 #include<myhead.h> #include <sys/select.h> #define PORT 8888 #define IP "192.168.250.100" int main(int argc, char const *argv[]) { //创建套接字int sfd socket(AF_INET, SOCK_STREAM, 0…

华为云账号注销之后账号下的域名丢了怎么办?记录一次域名转移权限的经历

背景 我之前在阿里云上买了个域名&#xff0c;有效期10年的&#xff0c;然后在2023年1月末转移到华为云了&#xff0c;交了一年的域名费用&#xff0c;买了一个一年的华为云服务器 一年之后&#xff0c;华为云的服务器也到期了&#xff0c;我就想着参加新用户计划&#xff0c…

Spring IoC容器详解

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 基本概念 Spring IoC容器是Spring框架的核心组件&#xff0c;它实现了控制反转&#xff08;Inversion of Control&#xff0c;IoC&#xff09;的设计原则。IoC是一种编程思…

计算一个时间序列中的元素属于一年中的第几季度

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算一个时间序列中的元素 属于这一年中的第几季度 Series.dt.quarter [太阳]选择题 以下代码的输出结果中正确的是? import pandas as pd ts pd.Series(pd.date_range("2024-02…

MFC实现遍历系统进程

今天我们来枚举系统中的进程和结束系统中进程。 认识几个API 1&#xff09;CreateToolhelp32Snapshot 用于创建系统快照 HANDLE WINAPI CreateToolhelp32Snapshot( __in DWORD dwFlags, //指定快照中包含的系统内容__in DWORD th32P…

springboot项目热部署实现(Spring Boot DevTools方式)

文章目录 Spring Boot DevTools简介Spring Boot DevTools原理spring Boot Devtools优缺点Spring Boot DevTools集成步骤第一步&#xff1a;添加maven依赖第二步&#xff1a;IDEA热部署配置 Spring Boot DevTools简介 Spring Boot DevTools是Spring Boot提供的一个开发工具&…