网络基础知识:架构和原理

2025-06-10

网络基础知识:架构和原理

这是我学习免费的 Udacity 计算机网络基础课程的一系列课堂笔记中的第一篇

根本目标

对于这方面的大部分信息,我们的主要参考资料是 David Clark于 1988 年发表的《DARPA 互联网协议的设计理念》论文。

互联网的根本设计目标是实现“对现有互联网络的有效复用”。用英文来说,就是共享互联网络的使用权

  • 共享的目标通过统计复用(又称分组交换)得以实现。在分组交换中,每个发送的数据包都携带其自身的目的地信息,因此可以被转发,就像通过邮件发送的信件在目的地信息上一样。这意味着网络可以尽最大努力递送数据包,从而实现共享,因为许多发送者可以同时使用同一网络,但存在丢包的风险。这与电路交换
    形成对比,电路交换更像电话网络——建立直接连接,传输丢失/丢包的可能性较小,但如果可用容量被占用,那就没那么幸运了。

  • 网络连接的目标通过“窄腰”得以实现。参考OSI七层系统模型,我们的网络层非常薄——它主要由互联网协议(IP)组成!IP协议为其上方的传输层(通常是TCPUDP)提供保障,而TCP/IP协议的组合是最常见的端到端数据传输协议栈。在这个坚实的基础上,我们可以分层部署任何我们想要发送数据的协议,例如用于网站的HTTP协议或用于邮件的SMTP协议!在IP层之下,我们还有链路层物理层,以及更多协议,例如以太网SONET协议。但关键在于,中间的网络层非常“窄”——它仅由IP协议组成。这意味着任何设备都可以轻松地连接到网络,只需使用IP协议即可!

OSI模型的关键部分

次要目标

次要目标都包括进一步定义上面列出的“基本目标”中“有效”一词的真正含义:

  1. 生存性:尽管网络或网关丢失,互联网通信仍必须继续。
  2. 异构性1:互联网必须支持多种类型的通信服务
  3. 异构性2:互联网架构必须适应多种网络
  4. 分散化:互联网架构必须允许对其资源进行分布式管理。
  5. 成本:互联网架构必须具有成本效益
  6. 简易性:互联网架构必须允许以较低的努力实现主机连接
  7. 可追踪性:互联网架构中使用的资源必须可追溯

我们没有足够的篇幅在这里讨论所有这些影响,但将重点讨论几个重要的影响。

生存能力

我们认为这意味着即使某些设备出现故障或受到损害,网络也应该继续工作。

我们如何实现这一点?一种方法是通过复制,我们将状态复制到另一个节点,以便在发生故障时始终有一个备份节点可以接管。然而,这会增加成本,而成本正是我们的另一个目标。

另一种有趣的方法是命运共享- 如果节点断开连接,我们认为丢失与该节点相关的所有信息是可以接受的。

异质性

互联网的“窄腰”设计允许 IP 协议支持多种协议,而不仅仅是 TCP(如前所述)。这使得选择合适的协议变得非常容易,例如,对于流式传输数据来说,选择 UDP 协议就显得尤为重要,因为实时性比完全无损更重要。您甚至可以组合使用多种协议,以兼顾速度和无损性。

“尽力而为”的传递原则还意味着数据可以通过任何类型的网络(包括信鸽!!)传递,但由于没有故障数据返回,因此调试难度较大。

去中心化

分布式资源管理体现在如何实现寻址上——我将在未来的入门文章中详细介绍。我们在全球拥有五个区域互联网注册管理机构——在美国,我们有ARIN,在欧洲,我们有RIPE

命名方面也实现了去中心化——DNS通过为每个域名指定权威域名服务器,将分配域名和将这些域名映射到互联网资源的责任委托给相关机构。通过边界网关协议 (BGP)进行的路由在对等体和社区之间也是去中心化的。我们将在未来的入门文章中再次讨论这两者。

由于没有单一实体负责,互联网得以有机发展,并且非常稳定。然而,缺乏所有权也使得问题难以解决。

问题和成长的烦恼

IPv4 概要

我们今天在互联网上看到的许多问题都是由于网络需求的增长超越了 70 年代和 80 年代的设计考虑而直接导致的:

  • 我们的IPv4 地址即将耗尽——只有 40 亿个 IP 地址,而且分配效率低下
  • 拥塞控制——我们的网络在不稳定的连接下性能会变得非常差,尤其是在触发重传的情况下。我将在以后的入门文章中介绍这一点。
  • 路由——我将在后续的入门文章中讨论这个主题,但它基本上不安全,容易配置错误,并且收敛性差,不确定性高。不过它勉强还能用。
  • 安全也值得专门写一篇入门文章:加密和身份验证的方法确实存在,但我们在确保它们得到有效应用方面做得还不够好。此外,密钥管理和安全软件部署也是悬而未决的问题。
  • 拒绝服务——互联网可能在向收件人递送包裹方面做得太好了,即使收件人并不想要这些包裹。

本系列的下一篇

希望本文能很好地概述我们为什么需要交换机,以及如果我们要构建自己的互联网,它们将如何工作。我正在计划更多入门指南,希望您能就以下方面提供反馈和问题:

鏂囩珷鏉ユ簮锛�https://dev.to/swyx/networking-essentials-architecture-and-principles-2g5e
PREV
设置 React + Typescript Storybook 设计系统的快速指南 简短版本 DIY 版本 您的第一个 Typescript 组件 是时候构建和发布您的(一键式)设计系统了
NEXT
从 Master 迁移到 Main 的备忘单