欢迎来到网络世界!
在本章中,我们将深入探讨互联网(The Internet)。我们每天都在使用它来串流视频、发送信息和搜索资料,但你有没有想过,数据到底是如何从加州的服务器传送到你身处英国(或香港)的手机呢?如果一开始觉得涉及太多技术细节,请别担心——我们将使用你已经熟悉的类比,将这些内容拆解成简单易懂的片段。
看完这些笔记后,你将明白屏幕背后的「魔法」:数据包(Packets)是如何移动的、安全性是如何保障我们的,以及不同的设备是如何使用同一种语言沟通的。
1. 互联网的结构
互联网本质上是一个「网络的网络」(network of networks)。它并非单一的实体,而是数以百万计的私人、公共、学术及政府网络互相连接而成。
分组交换(Packet Switching)
当你传送一个大型文件(例如照片)时,它并不会作为一个庞大的数据块发送。相反,它会被拆分成称为数据包(packets)的小块。这个过程称为分组交换(packet switching)。
类比:想象你想通过邮寄方式将一幅 1,000 片的拼图寄给朋友。你不会直接寄出整盒拼图(因为可能会被卡住或弄丢),而是将每一片拼图分别放入独立的信封中并写上地址。它们可能会走不同的路线,但最终都会到达朋友的家,然后重新组合起来。
数据包的主要组成部分:
1. 标头(Header):包含发送者的 IP、接收者的 IP、数据包编号(例如 50 个中的第 1 个)以及所使用的协议。
2. 有效载荷(Payload):实际传送的数据(即「拼图碎片」)。
3. 尾部(Trailer):包含错误检查数据(校验和 checksum),以确保数据包在传输过程中没有损坏。
路由器(Routers)与网关(Gateways)
这些数据包是如何找到路的?它们依靠路由器(routers)和网关(gateways)。
- 路由器:一种查看数据包上的 IP 地址并决定其到达目的地最佳路径的设备。
- 网关:当两个网络使用不同的协议(protocols)时使用。它会进行数据「翻译」,让不同的网络能够互相理解。
快速回顾:分组交换非常高效,因为如果其中一条路径繁忙或中断,数据包可以直接走另一条路!
2. 地址与命名
就像你的房子有邮政编码一样,互联网上的每个设备和资源都需要一个唯一的地址。
IP 地址与完整域名(FQDN)
电脑喜欢数字,而人类喜欢文字。这就是为什么我们有不同的方式来标识事物:
- IP 地址(IP Address):一个唯一的数值地址(例如 192.168.1.1)。
- 域名(Domain Name):人类友好的版本(例如 google.com)。
- 完整域名(Fully Qualified Domain Name, FQDN):特定电脑或「主机」的完整名称(例如 www.aqa.org.uk)。
域名系统(DNS)
当你在浏览器中输入 www.youtube.com 时,你的电脑其实并不知道它在哪里。它必须向 DNS 服务器查询。
步骤流程:
1. 你在浏览器中输入 URL。
2. 你的浏览器将域名发送到 DNS 服务器。
3. DNS 服务器在其数据库中查找与该名称关联的 IP 地址。
4. DNS 服务器将 IP 地址发回给你的浏览器。
5. 你的浏览器现在可以使用该 IP 直接连接到目标服务器。
你知道吗?如果一台 DNS 服务器不知道该地址,它会询问另一台「更高级别」的 DNS 服务器。这是一个全球性的层级系统!
互联网注册管理机构(Internet Registries)
互联网注册管理机构是负责追踪哪些 IP 地址和域名分配给谁的组织。我们需要它们来确保没有两个人同时拥有同一个域名或使用同一个公共 IP 地址。
重点总结:DNS 就像互联网的「电话簿」。它将我们能记住的名字转换成电脑能使用的数字。
3. TCP/IP 协议堆叠
为了让不同类型的电脑能够沟通,它们必须遵守一组规则,称为协议(protocol)。TCP/IP 堆叠(TCP/IP Stack)是互联网上最重要的规则集。它被组织成四个层级。
记忆小技巧:使用 A T N L 来记忆这些层级(**A**ll **T**igers **N**eed **L**unch):
- 应用层(Application Layer):应用程序所在的地方(例如你的浏览器)。使用 HTTP, FTP, SMTP 等协议。
- 传输层(Transport Layer):将数据拆分成数据包,并确保它们无错误地送达(使用 TCP)。
- 网络层(Network Layer):添加来源和目的地的 IP 地址。路由器就在此层运作。
- 链路层(Link Layer):处理物理连接(电缆、Wi-Fi)并使用 MAC 地址。
Socket 与端口(Ports)
Socket(套接字)就像通往电脑上特定应用程序的「门」。它是由 IP 地址和端口号(Port Number)组合而成的。
\( \text{Socket} = \text{IP Address} + \text{Port Number} \)
- 常用端口(Well-known Ports):(0–1023) 用于标准服务。例如,端口 80 用于 HTTP,端口 25 用于 SMTP(电子邮件)。
- 客户端端口(Client Ports):你的设备用于从服务器接收回传数据的临时端口。
类比:如果 IP 地址是公寓大楼的地址,那么端口号就是住着特定人物(应用程序)的特定门牌号码。
4. IP 标准:IPv4 与 IPv6
IPv4 使用 32 位元,容许大约 40 亿个地址。信不信由你,由于现在有太多手机、热水壶和灯泡都连接到互联网,这些地址实际上已经用完了!
IPv6 的引入就是为了解决这个问题。它使用 128 位元,提供的地址数量比地球上所有沙粒还要多!它以十六进制编写,以便于人类阅读。
公共 IP 与私有 IP 地址
- 公共 IP(Public IP):可在整个互联网上路由。每个家庭通常由供应商分配一个唯一的公共 IP。
- 私有 IP(Private IP):用于你的家庭网络内部。你的手机和笔记本电脑拥有私有 IP(例如 192.168.0.5),这些 IP 在外部世界是看不见的。
NAT 与 DHCP
- DHCP(动态主机设置协议):当设备加入网络时自动为其分配 IP 地址。就像酒店前台在你入住时给你房卡一样。
- NAT(网络地址转换):当你存取互联网时,路由器会使用 NAT 将你的私有 IP「隐藏」在单一公共 IP 之后。
5. 互联网安全
互联网可能是一个危险的地方!我们使用多种方法来保持安全。
防火墙(Firewalls)
防火墙位于私人网络和互联网之间,负责监控流量。
- 数据包过滤(Packet Filtering):检查每个数据包的标头,如果它们来自被禁止的 IP 或端口,则将其丢弃。
- 代理服务器(Proxy Server):充当中介人。你的电脑向代理服务器请求网页;代理服务器为你获取内容。这隐藏了你的内部网络信息,使外部服务器无法直接接触。
- 状态检测(Stateful Inspection):不仅查看数据包,还会查看其上下文。它会检查该数据包是否属于你已发起的现有安全会话的一部分。
加密(Encryption)
- 对称加密(Symmetric Encryption):发送者和接收者使用相同的密钥来加密和解密。(就像一把钥匙开一个实体日记本)。
- 非对称加密(Asymmetric Encryption):使用公开密钥(Public Key)(与所有人共享以加密数据)和私人密钥(Private Key)(由拥有者保密以解密数据)。
恶意软件:病毒、蠕虫与特洛伊木马
- 病毒(Virus):一种依附于文件的代码片段,需要人类执行/开启才能传播。
- 蠕虫(Worm):一个独立的程序,可以自我复制并在网络上自动传播,无需人类协助。
- 特洛伊木马(Trojan):伪装成有用东西(如「免费游戏」)的恶意软件,诱骗你安装它。
重点总结:安全是关于多层次的防护。防火墙将坏人挡在外面,加密保持数据机密,而数字签名则证明信息的真实性。
6. 现代网络技术
CRUD 与 REST
大多数网络应用程序对数据执行四种操作:Create(创建)、Retrieve(检索)、Update(更新)和 Delete(删除)(简称 CRUD)。
REST 是一种将这些操作映射到网络指令(HTTP)的方法:
- POST → 创建(Create)
- GET → 检索(Retrieve)
- PUT → 更新(Update)
- DELETE → 删除(Delete)
JSON 与 XML
这些是在服务器和网络应用程序之间传输数据的方式。
- JSON:现代、轻量级,且非常容易被电脑(和人类)阅读。
- XML:较旧,使用像 HTML 那样的「标签」。它比较「冗长」,占用更多带宽。
瘦客户端与胖客户端(Thin vs Thick Clients)
- 瘦客户端(Thin Client):大部分处理发生在服务器端。你的设备仅用于显示结果(例如,使用浏览器查看 Gmail)。
- 胖客户端(Thick Client):大部分处理发生在你的设备上。它可能可以离线运作(例如,安装在你电脑上的电子游戏)。
最终总结:互联网是一个复杂的规则堆叠(TCP/IP)、地址系统(IP/DNS)和安全措施(防火墙/加密)的集合,让我们能够在毫秒内将数据(JSON/REST)传遍全球!