互联网

概述

互联网是网络的支柱,以这种技术为基础使网络成为可能。作为基础,互联网是把电脑互相连接起来的一个巨大网络。

一个简单的网络

当两台电脑需要通信的时候,你必须要连接他们,无论是通过有线方式(通常是网线)还是无线方式(比如WIFi或蓝牙)。所有现代电脑都支持这些连接。

Two computers linked together

通常一个网络不仅限于两台电脑。你可以尽你所想地连接电脑,但是情况立刻变得复杂了。如果你尝试连接,比如说十台电脑,每台电脑有九个插头,总共需要45条网线。Ten computers all together

为了解决这个问题,网络上的每台电脑需要链接到一个叫做路由器(router)的特殊小电脑。路由器只干一件事:就像火车站的信号员,它要确保从一台电脑上发出的一条信息可以到达正确的电脑。为了把信息发送给电脑B,电脑A必须把信息发送给路由器,路由器将收到的信息转发给电脑B,并且确保信息不会发送给电脑C。

一旦我们把路由器加入到这个系统,我们的网络便只需要十条网线:每台电脑一个插口,路由器上十个插口

Ten computers with a router

网络中的网

那么当我们要连接成百上千,上亿台电脑呢,一台路由器覆盖不了这么远,但是,因为路由器就是一台特殊的小电脑,所以我们可以把两台路由器彼此连接Two routers linked together

我们把电脑连接路由器,接着路由器连接路由器,我们就会有无穷的规模

Routers linked to routers

这样网络越来越接近我们所说的互联网,但是我们遗漏了一些东西。我们建立网络是为了我们自己的目的。所以不同的人会建立不同的网络,每个人都可以拥有自己的计算机网络。在你的房子和世界的其他地方之间假设电缆将这些不同的网络连接起来是不可能的,那么怎么处理这件事呢?

其实已经有电缆连接到你的房子了,比如,电线和电话。电话基础设施已经可以把你家连接到世界的任何角落,所以它就是我们需要的线。为了连接电话这种网络,我们需要一种基础设备叫做调制解调器(modem),调制解调器可以把网络信息变成电话设施可以处理的信息,反之亦然。

A router linked to a modem

这样,我们可以通过电话基础设施相互连接。下一步是把信息从我们的网络发送到我们想要到达的地方。为了做这些,我们需要把我们的网络连接到互联网服务提供商(ISP)。ISP是一家可以管理一些特殊的路由器的公司,这些路由器连接其他ISP的路由器,你的网络消息可以被ISP捕获并发送到相应的网络。互联网就是由这些所有的网络设施所组成。

Full Internet stack

寻找电脑

如果你想给一台电脑发送一条信息,你必须指明它是哪台电脑。因此,任何连接到网络中的电脑都需要有一个唯一的地址来标记它,叫做“IP 地址”(IP 代表网络协议)。这个地址由四部分被点分隔的数字序列组成,比如:192.168.2.10

对于电脑这样已经很好了,但是人类却很难记忆这一串地址。为了简单处理,我们给IP地址取一个容易阅读的别名:域名。比如,google.com被用于IP地址172.217.7.14 这样我们通过这些域名就可以很容易的通过网络连接到电脑

互联网(Internet)和网络(web)

你可能注意到了,当我们通过浏览器上网的时候,我们通常是用域名去到达一个网站。这是否意味着互联网和网络是一样的?事实上并非这么简单。正如向我们所见,互联网是一种基础的技术,它允许我们把成千上万的电脑连接到一起。在这些电脑中,有一些电脑(我们称之为网络服务器(Web servers))可以发送一些浏览器可以理解的信息。互联网是基础设施,网络是建立在这种基础设施之上的服务。值得注意的是,一些其他服务运行在互联网之上,比如邮箱和IRC。

客户端和服务器

连接到互联网的计算机被称作客户端和服务器。下面是一个简单描述她们如何交互的图表:

img

  • 客户端是典型的Web用户入网设备(比如,你连接了WIFi的电脑,或接入移动网络的手机)和设备上可联网的软件(通常使用像 Firefox 和 Chrome的浏览器)
  • 服务器是存储网页,站点和应用的计算机。当一个客户端设备想要获取一个网页时,一份网页的拷贝将从服务器上下载到客户端机器上来在用户浏览器上显示。

DNS解析

域名系统(DNS)服务器是将地址(eaxmple.com)与实际 IP地址相匹配的特殊的服务器。

网页也可以通过 IP地址直接访问

网络服务器

“网络服务器(Web server)”可以代指硬件或软件,或者是它们协同工作的整体

  • 硬件部分,一个网络服务器是一台存储了网络服务软件以及网站的组成文件的计算机。它接入到互联网并且支持与其他连接到互联网的设备进行物理数据的交互。
  • 软件部分,网络服务器包括控制网络用户如何访问托管文件的几个部分,至少他要是一台HTTP服务器。一台HTTP服务器是一种能够理解URL(网络地址)和HTTP(浏览器用来查看网页的协议)的软件。通过服务器上存储的网站的域名可以访问这个服务器,并且他还可以将他的内容分发给最终用户的设备

基本上,当浏览器需要一个托管在网络服务器上的文件的时候,浏览器通过HTTP请求这个文件。当这个请求到达正确的网络服务器(硬件)时,HTTP服务器(软件)收到这个请求,扎到这个被请求的文档(如果这个文档不存在,那么将返回一个404响应),并把这个文档通过HTTP发送给浏览器。

Basic representation of a client/server connection through HTTP

要发布一个网站,你需要一个静态或动态的服务器

静态网络服务器(static web server),或者堆栈,由一个计算机和一个HTTP服务器组成。我们称它为“静态”是因为这个服务器把它托管文件的“保持原样”地传送到你的浏览器。

动态网络服务器(dynamic web server)由一个静态的网络服务器加上额外的软件组成,最普遍的是一个应用服务器和一个数据库。我们称它为“动态”是因为这个应用服务器会在通过HTTP服务器把托管文件传送到你的浏览器之前会对这些托管文件进行更新。

举个例子,要生成你在浏览器中看到的最终网页,应用服务器或许会用一个数据库中的内容填充一个HTML模板。网站像MDN或者维基百科有成千上万的网页,但是它们不是真正的HTML文档,它们只是少数的HTML模板以及一个巨大的数据库。这样的设置让它更快更简单地维护以及分发内容。

托管文件

一个网络服务器首先需要存储这个网站的文件,也就是说所有的 HTML 文档和它们的相关资源,包括 图片,CSS样式表,JavaScript 文件,字形(fonts)以及影像。

严格来说,你可以在你自己的计算机上托管所有的这些文件,但是在一个专用的网络服务器上存储它们会方便很多,因为它:

  • 会一直启动和运行
  • 会一直与互联网连接
  • 会一直拥有一样的IP地址(不是所有的ISPs都会为家庭线提供一个固定的IP地址)
  • 由一个第三方提供者维护

通过HTTP交流

一个网络服务器提供了HTTP (超文本传输协议)支持。正如它的名字暗示,HTTP明确提出了如何在两台计算机间传输超文本(比如说链接的网络文档)。

一个协议(Protocol)是一套为了在两台计算机间交流而制定的规则。HTTP是一个文本化的,无状态的协议。

文本化

所有的命令都是纯文本的和人类可读的

无状态

无论是服务器还是客户都不会记住之前的交流。举个例子,仅依靠HTTP,一个服务器不能记住你输入的密码或者你正处于业务中的哪一步。你需要一个应用服务器来进行这样的工作。

HTTP为客户和服务器间的如何沟通提供清晰的规则。

  • 只有用户可以制定HTTP请求,然后只会发送到服务器。服务器只能响应客户端的HTTP请求。
  • 当通过HTTP请求一个文件时,客户必须提供这个文件的URL
  • 网络服务器必须应答每一个HTTP请求,至少也要回复一个错误信息

在一个网络服务器上,HTTP服务器负责处理和应答传入的请求

1.当收到一个请求时,HTTP服务器首先到检查所请求的URL是否与一个存在的文件相匹配

2.如果是,网络服务器会传送文件内容回到浏览器。如果不是,一个应用服务器会建立必要的文件。

3.如果两种处理都不可能,网络服务器会返回一个错误信息到浏览器。最常见的是“404未找到”

URL

URL代表着是统一资源定位符。URL无非就是一个给定的独特资源在Web上的地址。理论上说,每个有效的URL都指向一个唯一的资源。

端口

表示用于Web服务器上的资源的技术“门”。如果Web服务器使用HTTP协议的标准端口(HTTP为80,HTTPS为443)来授予其资源的访问权限,则通常会被忽略。否则是强制性的。