网络和互联网

简单的来说,我们可以把若干计算机以一定方式连接起来,这就形成了计算机网络。将世界各地不同的网络(network)连接在一起,就形成了互联网(internet)。

请读者观看下面链接指向的视频:

互联网是如何工作的 -哔哩哔哩

上述链接为“二进制学院”制作的中文字幕版视频。视频源来自 code.org。视频共包含 8 个分集,总时长约为 40 分钟。分集列表如下:

  • What is the Internet? - 什么是互联网
  • Wires, Cables & Wi-Fi - 电缆和 Wi-Fi
  • IP Address & DNS - IP 地址和 DNS
  • HTTP & HTML - HTTP 和 HTML
  • Encryption & Crime - 加密和公钥
  • Cybersecurity & Crime - 网络安全
  • How Search Works - 搜索引擎

局域网、广域网、IP 地址

我们可以通过 IP 地址来标记网络上的计算机。

请读者点击下面的链接观看视频:

IP 地址是什么东西?IPV6 和 IPV4 有什么区别?公网 IP 和私有 IP 又是什么? - 硬件茶谈 - 哔哩哔哩

每个在网络上的设备都有自己的 IP 地址。在同一个网络下的设备可以通过 IP 地址互相访问,并使用不同的协议传输不同的内容(比如,传输网页使用 HTTP 协议,传输文件使用 FTP 协议)。

一般来说,计算机上运行的用来支持不同协议的不同程序会侦听不同的端口,有一些端口有固定的用途,比如 80 端口等。用来负责提供服务的(远程)计算机称作“服务器(server)”或者主机(Host),用户使用的一般叫“客户机(client)”。客户机从服务机获得数据的过程称作“下载(download)”,也称“下行”;相反,向服务器发送数据称为“上载”。而在服务器端,这些概念是相对的,即“上载”意味着向客户端发送数据,“下载”意味着从客户端发送数据。

由于用户在浏览网络的过程中,下载的数据远大于上行的数据,因此网络服务提供商分配给用户的下行带宽往往远大于上行带宽,并不是对等的。当然,对于服务器来说也是如此。

当访问的是一个主机名(域名)时,计算机会先在本机的 HOSTS 文件中查找对应的 IP 地址,未找到后再去访问 DNS。

互联网的物质基础

要将计算机连接起来,必然需要线缆,或能实现同样效果的传输方式。对于家庭使用来说,可能 Wi-Fi 就足以将家庭中的各设备连接起来。而连接两块大陆上的计算机,一般情况则需要通过在海底铺设光缆来实现。

而网络提供商(ISP)具体是怎么样将网络提供给用户的呢?

曾经,网络是通过电话线提供的,用户还需要通过“拨号(dial)”才能上网。因为数据传输的制式不同,因此需要“调制解调器(modulator/demodulator)”来进行数模信号的转换。调制解调器简称“modem”,简体中文环境下有时会取其谐音“猫”来指代这个设备,为其平添一层可爱的含义。

当然,通过电话线传输的网络是十分缓慢的。互联网用户有时也用“拨号上网”来形容那个年代。

之后,有线电视(cable)服务商为了向用户销售网络接入服务,会服用同轴电缆传输信息,其提供的带宽一般大于电话线。当然,也有更快的通过“数字用户线路(DSL)”提供网络的方法。

使用上面两种方式接入互联网也需要对应的“猫”,不过一般可能会称作“宽带猫”,以便区别于调制解调器。

参考链接:What is a Modem (Modulator/Demodulator)? - computerhope.com

有些时候,接入用户家的网线直接是一根 RJ45 的线缆。这是网络服务商将光纤等数据网络接入到用户所在的小区,并直接从“猫”分出网线接到用户家。

如今,家用用户接入互联网可能仍需要进行“拨号”的操作,以便运营商为其分配一个可用的 IP 地址。当然,这个 IP 地址有可能会有一定的使用期限,因此可能会存在需要“续租”或者需要“重新拨号”的概念。现如今,用户购买到并使用的路由器可能会配备拨号以及自动重拨的功能,这样,局域网下的设备便不需要额外拨号就能上网。

用户往往会使用一种叫做路由器(router)的设备,使得自己的多台设备都能接入同一个网络。计算机的网络卡一般使用 RJ45 接口。路由器的 WAN(广域网)接口一般用来接入外部的广域网络,而 LAN(局域网)接口则用来接入局域网内的设备。而支持设备通过无线方式(Wi-Fi)接入的路由器就称作无线路由器。

公网 IP 与内网 IP

简单来说,就是任何接入互联网的用户都能发布信息,因为我们可以通过 IP 地址访问到网络上的任意计算机。使用 HTML 语言和 HTTP 协议,理论上任何人都能制作自己的网站和网页。而通过互联网协议,我们还能操作远程的计算机(上面的程序)来完成我们想要完成的各种事情,比如数值计算、文件存储与读取,本质上也都是数据的传输。

不过,在如今的网络条件下,一般用户并没有一个稳定的 IP。这一方面是因为用户所使用的网络一般是由网络运营商提供的。网络运营商对外——也就是在公网上——会有一批 IP,而产生更多的“内网 IP”分发给用户,(并通过端口映射)使得更多用户能够接入互联网,正常收发数据;而这些 IP 地址往往是会动态调整的。

另一方面,用户平时往往通过与多人组建一个局域网,以共同访问到互联网,这之中又存在一次 IP 的分发,即同一个局域网下的各个设备也涉及到 IP 地址的分配。

当设备的 IP 地址为固定的时候,我们称之为“静态 IP 地址”;若设备的 IP 地址是每次登入时由路由器分配的,则为“动态 IP 地址”。

因此,用户如果希望其他用户能稳定地访问到自己,一般需要一个固定的 IP。而在广域网上,一般,用户可以向网络运营商申请“公网 IP”,这样,自己接入互联网时,使用的就是一个稳定的 IP 了;接着,用户可以配置自己的路由器,使得来自公网的请求可以访问到自己局域网内的设备上。

为了使得任何人任何时间都能访问到自己的网站或服务,这台负责处理外部请求的计算机(也称作“服务器”)必须一直处于开机状态。如果机器出现故障,网站就不能被访问了。

因此,用户还可以选择租借一些第三方提供的专用的服务器,这样一可以省去公网 IP 的烦恼,二来可以减少设备断电或故障的忧虑——专用的机房往往会有不同于一般设备的保障。

互联网是怎样工作的

客户端和服务器

+--------+     requests    +--------+
|        | <-------------- |        |
| Server |                 | Client |
|        | --------------> |        |
+--------+    responses    +--------+
  • 服务器(server)是存储网页,站点和应用的计算机。当一个客户端设备想要获取一个网页时,一份网页的拷贝将从服务器上下载到客户端机器上来在用户浏览器上显示。

  • 客户端是典型的Web用户入网设备(比如连接了Wi-Fi的电脑,或接入移动网络的手机)和设备上可联网的软件(比如像 Firefox 和 Chrome 一样的浏览器)。

其他部分

下面的例子来自 MDN Web Docs 的一篇中译文 万维网是如何工作的 - 学习 Web 开发 - MDN - developer.mozilla.org

现在,让我们假设 Web 就是一条路。路的一端是客户端,就像你的家。另一端则是服务器,就像你想去的商店。

  • 网络连接:允许你在互联网上发送和接受数据。基本上和你家到商店的街道差不多。
  • TCP/IP:传输控制协议和因特网互连协议是定义数据如何传输的通信协议。这就像你去商店购物所使用的交通方式,比如汽车或自行车(或是你能想到的其他可能)。
  • DNS:域名系统服务器像是一本网站通讯录。当你在浏览器内输入一个网址时,浏览器获取网页之前将会查看域名系统。浏览器需要找到存放你想要的网页的服务器,才能发送 HTTP 请求到正确的地方。就像你要知道商店的地址才能到达那。
  • HTTP:超文本传输协议是一个定义客户端和服务器间交流的语言的协议(protocol )。就像你下订单时所说的话一样。
  • 组成文件:一个网页由许多文件组成,就像商店里不同的商品一样。这些文件有两种类型:
    • 代码:网页大体由 HTML、CSS、JavaScript 组成,不过你会在后面看到不同的技术。
    • 资源:这是其他组成网页的东西的集合,比如图像、音乐、视频、Word 文档、PDF 文件。

下面是文章的译者给出的另一个例子:

假如你生活在一个封闭的村子叫做“盘溪新村”,村子盛产苹果。

  • 互联网:好比地球上众横交错的道路。
  • 网络连接:道路通到了村子路口。从此,村子里的苹果就可以运出去卖了。
  • TCP/IP:为了将村里的苹果能规范有效的运卖出去而不出问题,村长作出如下规定:“用规格刚好 20 cm * 20 cm * 20 cm 的泡沫箱来装,之后外面又用相应规格的纸箱包裹上,最后打上透明胶”。并且要求,对方收到时,一定要外包装完好,不然就会补发。而且还给对方发了一张发货单,明确说明了,苹果有多少,是用什么方法包装的,只有货和发货单对上了,对方才会确认收货。
  • DNS:突然一天,郭德纲想吃苹果,就跟于谦说,“我听说盘溪新村(域名)的苹果好,要他们那个套餐一选项啊!”,于谦一听,得,也不知道盘溪新村在哪,打开地图查(DNS)吧,一查,好嘛,江苏省苏州市(IP 地址),于是于谦去了苏州,找了村子,告诉村长,要套餐一,要用顺丰快递,并且留下了北京德云社的地址。
  • HTTP:过了几天,德云社的人一看,有快递来了,来了这么一句,“只收‘顺丰’,拒收其他快递”。司机忙说,“是顺丰,是顺丰”,这才对上暗号,德云社的人收下了货。
  • 组成文件:送来的货可不止一车,而且也不止一种苹果,这车是红富士,那车黄富士的。
    • 代码:有点像,村长事先安排的说明书,让司机到了地方,如何卸车,货放到什么位置,而德云社的看说明书,知道什么样的苹果放到什么位置上,什么样苹果如何食用最佳,等等。
    • 资源:不同种类的苹果。

域名

不过这一长串的 IP 地址不便于记忆,因此,人们想到用有意义的文本来代替这串 IP 地址。

对于一个网站,它可以注册一个域名,这样,其 IP 地址就和这个域名关联了起来。我们在浏览器中输入域名,计算机访问“域名解析服务器(DNS)”,获得到域名对应的 IP 地址,进而使我们能够访问网络上对应的计算机。

国际化域名

最初,互联网的域名仅由 ASCII 字符来组成。为了满足其他语言文字出现在域名中的需要,需要将这些文字的 Unicode 编码以一定的方法转换为 ASCII 字符,以便域名解析服务器可以检索。

URL 编码

对于 URL 中出现的 Unicode 字符,需要以一定的形式进行转换,比如“网络”可能会转换为“%E7%BD%91%E7%BB%9C”。

DNS 污染

详解DNS服务,DNS解析,DNS劫持和污染 - 硬件茶谈 - 哔哩哔哩