欢迎来到 TCP/IP 的世界!

你有没有想过,一段猫咪视频是如何从地球另一端的服务器,传送到你手机屏幕上的?这并不是魔法,而是 TCP/IP 协议栈 (TCP/IP protocol stack) 的功劳。你可以把它想象成互联网的“通用语言”。无论你用的是 Mac、PC 还是智能冰箱,大家都遵守这些规则,我们才能互相沟通。如果一开始觉得术语太多不用担心,我们会把它拆解开来,逐一为你讲解!

1. 四层协议栈

为了保持井然有序,TCP/IP 协议被划分为四个层级。当你传送数据时,它会从上层向下传递(从第 4 层到第 1 层);当你接收数据时,则会向上传递。

类比:寄送生日卡片
1. 应用层 (Application Layer): 你在卡片里写上想说的话。
2. 传输层 (Transport Layer): 你把卡片放入信封,并决定是否需要“挂号”递送。
3. 网络层 (Network Layer): 你在信封上写下收件人和寄件人地址。
4. 链接层 (Link Layer): 信封透过货车、单车或飞机实际进行运送。

各层详细介绍:

  • 应用层: 这是软件运作的地方(例如你的网页浏览器)。它使用 HTTPFTP 等协议来格式化数据,让接收端能够识别内容。
  • 传输层: 这一层负责在两个主机之间建立连接。它将数据分割成 数据包 (packets),并给予编号。如果数据包丢失,这一层会要求对方重新传送。
  • 网络层: 也称为互联网层。它会加上寄件人和收件人的 IP 地址,并处理 路由 (routing)——找出网络上传输数据的最佳路径。
  • 链接层: 这是物理连接。它处理如何将数据转换成电信或无线电波。它使用 MAC 地址 在同一个局域网内的设备之间传输数据。

快速复习: 记住这个顺序:All Technology Needs Links (Application 应用层, Transport 传输层, Network 网络层, Link 链接层)。

2. IP 地址、Socket 与端口 (Ports)

为了将数据传送到正确的地方,我们需要特定的“数字地址”。

MAC 地址与 IP 地址

MAC (Media Access Control) 地址 是烧录在你网卡中的唯一标识码,它永远不会改变。而 IP 地址 则是一个逻辑地址,会根据你连接的网络而变动。

端口与 Socket

你可以把 IP 地址想象成一栋公寓大厦的地址。但邮差怎么知道信要送到哪一户呢?这就是 端口 (Port) 的作用。

  • 知名端口 (Well-known ports): (0–1023) 这些是保留给特定服务使用的(例如 HTTP 使用 Port 80)。
  • 客户端端口 (Client ports): (1024–65535) 当你开启连接时,你的电脑会使用这些临时端口。
  • Socket:IP 地址 加上 端口号 组成(例如:192.168.0.1:80)。这定义了两个程序之间的特定连接。

重点摘要: IP 地址负责将数据送到设备,而端口负责将数据送到特定的应用程序。

3. 标准应用层协议

这些是栈最顶层所使用的特殊“语言”:

  • HTTP/HTTPS: 用于网页。HTTPS 是 安全 (secure) 版本。
  • FTP (文件传输协议): 用于移动文件。可以是 非匿名 (non-anonymous)(需要用户名/密码)或 匿名 (anonymous)(任何人都能存取)。
  • SMTP: 用于 传送 (sending) 电子邮件。
  • POP3: 用于从服务器 接收 (retrieving) 电子邮件。
  • SSH (Secure Shell): 用于远程登录并管理电脑。它经过加密,因此比旧有的方法安全得多。

你知道吗? 你可以使用 SSH 客户端 来传送指令给远程服务器,例如要求它使用 HTTP 指令“GET”一个网页,或者透过 SMTP 指令发送邮件。

4. IP 地址标准 (IPv4 与 IPv6)

电脑需要地址才能找到彼此,但我们遇到了瓶颈。

  • IPv4: 使用 32 位地址(例如:192.168.1.1)。它大约能提供 40 亿个地址。因为现在设备数量太多,我们已经 用光了
  • IPv6: 为了应对地址短缺而引入。它使用 128 位地址(以十六进制编写),提供数万亿兆个唯一地址——足以让地球上的每一粒沙子都拥有自己的 IP!

IP 地址的结构

IP 地址分为两部分:网络标识符 (Network Identifier)主机标识符 (Host Identifier)子网掩码 (Subnet Mask) 则是用来告知电脑,地址中的哪些位代表网络,哪些代表个别设备(主机)。

5. 路由与网络技巧

管理数十亿台设备需要一些巧妙的捷径:

DHCP (动态主机配置协议)

不需要手动输入 IP 地址,DHCP 会在你加入网络时,自动为你的设备分配一个 IP 地址的“租期”。这就像你在办理入住时,酒店前台给你房卡一样。

NAT (网络地址转换)

大多数家庭只有一个“公网 (Public)”可路由的 IP 地址。NAT 透过给予屋内所有设备私有的“不可路由 (non-routable)”地址,让所有设备共享那一个公网 IP。

端口转发 (Port Forwarding)

如果你在家中架设游戏服务器,外部的人需要穿过你的路由器。端口转发 会告诉路由器:“任何经由 Port 25565 进来的流量,请直接传送到我的游戏电脑。”

常见错误: 学生常会混淆 DHCP(分配 IP)与 NAT(共享一个公网 IP)。记住:DHCP Delivers(分发)地址;NAT Navigates(导航)内部流量到外部。

6. 客户端-服务器模型与 CRUD

互联网大部分运作在 客户端-服务器 (Client-Server) 模型上。你的浏览器(客户端)发送 请求 (request),而 服务器 则发送 响应 (response)

CRUD 概念

当与服务器上的数据库交互时,我们通常执行四种称为 CRUD 的动作。我们使用一种称为 REST 的程序设计风格,将这些动作对应到 HTTP 指令:

  • Create (创建): 对应 POST(新增数据)
  • Retrieve (读取): 对应 GET(查看数据)
  • Update (更新): 对应 PUT(修改现有数据)
  • Delete (删除): 对应 DELETE(移除数据)

JSON 与 XML

当服务器与客户端对话时,需要将数据格式化。JSON 现在比 XML 更受欢迎,因为它:
1. 对人类而言更容易阅读。
2. 更简洁(使用较少的数据量)。
3. 电脑解析(处理)的速度更快。

7. 胖客户端 (Thick Client) 与 瘦客户端 (Thin Client)

你的电脑与服务器相比,分别承担了多少工作?

  • 胖客户端: 大部分的运算发生在你的本地设备上(例如安装在你电脑上的大型高清游戏)。优点:离线时运作较好,反应非常灵敏。
  • 瘦客户端: 大部分的运算发生在服务器上(例如在浏览器中使用 Google Docs)。优点:易于更新,可在低端硬件设备上运作。

快速复习: 如果软件大多“在云端”运作,它就是 瘦客户端。如果你需要安装一个 50GB 的文件才能执行它,那它就是 胖客户端

8. WebSocket

标准 HTTP 就像寄信一样——你询问,对方回答,然后连接关闭。WebSocket 则完全不同。它提供一种 持续的 (persistent)全双工 (full-duplex) 连接。这意味着“电话线”一直保持畅通,双方可以同时说话。这非常适合即时聊天或多人联网游戏!

重点摘要: 当你需要不需要不断重新整理页面的 即时 (real-time) 数据传输时,请使用 WebSocket。