编程语言研究书库

概述 — 网络是什么、怎么分层、性能怎么量

概述 — 网络是什么、怎么分层、性能怎么量

这一章讲三件事: 计算机网络是怎么从一台主机带几个终端,长成今天几十亿台设备互连的; 为什么全世界的工程师必须用「分层」的方式组织网络,层与层之间是什么关系; 以及「快」和「慢」在工程上到底怎么量——时延、带宽、吞吐量各自的确切含义。 这是全书的地基:后面每一章拆一层,这一章告诉你这一层是怎么来的、该站在哪看。

1. 先给网络下个定义

原书给的定义:计算机网络是通过通信设施,把地理上分散的、各自能独立工作的多台计算机互连起来, 进行信息交换、实现资源共享和协同工作的系统1。

拆开看,这个定义里藏着四个要点,每一个后面都有一章在展开:

  • 地理分散 —— 从一间机房到全球,距离决定了用什么技术(局域网一章 vs 广域网一章);
  • 各自独立工作(自治) —— 每台机器自己有自己的操作系统和程序,网络不能假设对方是什么牌子;
  • 靠通信设施互连 —— 双绞线、光纤、无线电,这是物理层一章的主角;
  • 为了资源共享 —— 建网的动机从来都不是「传数据」本身,而是让远方的打印机、文件、算力像在自己手上一样用。

2. 顶层全景:这一章的三块内容怎么串

  ① 它是怎么来的:单机带终端 → ARPANET 分组交换 → OSI/TCP 标准之战 → Internet
        │
        ▼  「网越来越大、设备越来越杂」逼出了一个问题:怎么让不同厂商的机器互相说话?
  ② 分层:把整个通信问题切成层,每层管一件事,层间只通过「服务+接口」打交道
        │
        ▼  分好层之后,自然要问:这台网络到底有多快?
  ③ 性能指标:速率、带宽、时延(四种)、往返时延、吞吐量、利用率

主线例子(贯穿本章): 假设 1969 年的 ARPANET 上,主机 H2 要给相隔三个节点的主机 H5 发一份数据。 我们就拿这一次发送,把「存储—转发」「分组交换」「分层封装」「时延计算」各走一遍, 每一步旁边都写上具体的状态和数字。

3. 核心原理

3.1 一台主机带终端的时代,和它的死穴

第一阶段很简单:一台大计算机,周围挂一串只能打字显示的终端,数据全在主机里处理。 第二阶段开始把多台计算机用通信线路连起来——麻烦也从此开始:不同厂家的机器, 内部表示、速度、格式全不一样,直接连线根本说不到一块儿去。

真正改变历史的是 1969 年美国国防部高级研究计划局的 ARPANET。它只有 4 个结点, 到 1983 年也才 100 多个2,但它立下了四个至今还在用的规矩:

  1. 明确了「通信子网 / 资源子网」的两级划分:负责搬数据的设备(当时的 IMP,接口消息处理器) 组成通信子网,负责算的主机组成资源子网;
  2. 用「报文分组交换」搬数据;
  3. 采用层次结构的体系模型。

存储—转发是怎么回事? 回到主线例子。H2 要发给 H5 的数据, 不是拉一条 H2 到 H5 的专线直接倒过去,而是先交到跟 H2 相连的 IMP1 暂存, IMP1 选择一条路径(比如经 IMP4、IMP7),一站一站暂存、一站一站转发, 最后由 IMP6 交给 H53。每个中间设备都把整个数据收齐了再往下发——这就叫存储转发。

这条设计带来一个巨大的好处:通信线路不被任何一对通信者独占。H2 的数据在 IMP4 上排队等转发时, 线路的空档可以被别的主机发来的分组插进去用。传统电话那种「两个人通话占死一条线」的用法, 线路利用率极低——这就是电路交换的死穴,下面 3.2 对比。

主线例子的时间坐标: ARPANET 之后的演化,书里给了一条清晰的时间线4, 主线例子里的 H2、H5 就活在其中:

年份事件它解决了什么
1977–1979ARPANET 推出 TCP/IP 体系结构异种机器、异种网络怎么互说人话
1980–1983ARPANET 全部计算机完成向 TCP/IP 的转换新一代协议全面接管
1984ISO 颁布 OSI 参考模型(ISO 7498)「开放互连」的国际标准框架
1984美国 NSF 建国家教育科技网,后替代 ARPANET 骨干学术网有了国家级的骨
1991连入 Internet 的计算机里商业用户首超学术用户growth 的拐点
1993WWW 和浏览器普及Internet 从专业人士走向大众

中国的接入是另一条平行线:1987 年 9 月建成第一个 Internet 电子邮件结点(CANET 项目), 1990 年 10 月注册顶级域名 CN,1994 年 3 月开通 64Kb/s 专线正式全功能接入5—— 对比今天家庭宽带动辄百兆,这条专线不到当时一根普通网线带宽的零头,却是中国网络的起点。

3.2 三种交换方式:电路、报文、分组

「数据怎么从 A 到 B」其实有三种组织方式,这一节的对比是全章也是全书最重要的图表之一6:

电路交换(电话网)报文交换分组交换(互联网)
思路通信前建立一条专用物理通路,全程占用整份报文带着地址,一站一站存储转发把报文切成等长的分组,各带地址,存储转发
线路利用低:没数据也占着线高:谁有空谁用高,且缓冲好管理
延迟小(直通)大(整份报文存完才能转)小(分组短,结点存得下、转得快)
差错控制基本做不了可以可以
缺点浪费、不灵活报文长度不定,缓冲区难管理、易乱序分组可能丢、乱序(后面靠上层补)

电路交换的三段时间账,值得单独算一遍。 用主线例子的场景:H2 要先给 H5「打电话」—— 发出呼叫请求,沿途每个交换结点为它选一段线,直到 H5 应答,这条 A-3-4-2-B 式的通路才算建立; 然后数据沿通路直流传输,延迟极小;传完再逐段释放7。 三段时间里,真正搬数据的可能只有中间一段,前后两头都是「为通信做准备」的纯开销。 如果 H2 和 H5 像大多数人传文件那样——突突突发一阵、停很久再发一阵—— 这条被独占的通路在停顿期完全是浪费。这就是电路交换「延迟小」的代价:拿利用率换的。

分组交换为什么延迟反而可控? 关键在「切小」。一整份报文要在中间结点等全部收完才能转发 (报文交换的痛点:缓冲区要按最大报文备,报文一大,存储时延直线上升); 切成定长的分组后,每个结点只存一个小包就转,排队和存储的压力都小了8。 书里的判断:现在的主流网络基本上都可以看成是分组交换网络9—— 你正在读的这份文档,就是从服务器——那台持续运行、专为你提供内容的远程计算机——以一个接一个分组的形式送到你屏幕上的。

回到主线例子看全程时序: H2 的数据被切成若干分组,P1、P2、P3……每个分组头写上 H5 的地址, IMP1 收一个、查一个、转一个。与电路交换相比,没有「先建通路」的等待, P1 几乎在 H2 按下发送的同时就上路了;但每个 IMP 都要查表、排队、转发, 每个分组在各结点都有自己的存储时延和排队时延。总时延谁大谁小不固定: 数据量小、网络空闲时分组交换快;数据量大、路径长且恒定时电路交换的直通优势显现。 工程上选谁,取决于「线路贵还是设备贵」——这正是第 05 章广域网技术演化的主线。

主线例子收尾: H2 那份数据最终走的是分组交换——第一个分组几乎立刻上路,不用等通路建立; 代价是沿途每个 IMP 都要花时间查地址、排队、转发,分组还可能乱序到达(书里的原话: 每个报文可以独立选择路径10)。乱序、丢失、重复这些麻烦事,网络层一概不管、交给上层—— 这条「尽力而为」的规矩,第 06 章的 IP 会正式立起来,第 09 章的 TCP 负责买单。

3.3 给网络分类:四种切法

同一个网络,按不同的刀切有不同的名字,四种切法各自回答一个问题:

按地理范围切(本书第 4、5 章的分工依据):

类型覆盖范围典型场景这本书
局域网(LAN)几十米到几千米一间办公室、一栋楼、一个校园第 04 章
城域网(MAN)10~100km,一座城市城市级的骨干互联第 05 章一带而过
广域网(WAN)几十到几千公里,可跨国用电信运营商的网把各 LAN 连起来第 05 章
个人区域网(PAN)10m 左右蓝牙、红外、NFC 连个人设备第 02 章无线介质处

按拓扑切——拓扑就是「线路和站点连接的几何形状」11。三种基本型:

  • 星形:每台机器各自一条线连到中心。一个站点坏了不影响别人,这是今天局域网的事实形状(都连交换机);
  • 环形:站点连成闭合环,数据绕一个方向走。易监控但容量有限,扩容难,组网已基本不用;
  • 总线型:所有站点共享一条通道,铺线最短,但介质一坏全网瘫痪,安全性低,已被淘汰—— 注意一个微妙的对照:老式以太网物理上是总线,但用集线器组网后物理上成了星形、逻辑上仍是总线; 而用交换机就是物理逻辑都星形了。这个「物理形状 vs 逻辑形状」的区分,第 04 章还会用到。

按传输介质切:有线(双绞线、同轴电缆、光纤)与无线(微波、红外、无线电),第 02 章整章在讲。

按交换技术切:就是 3.2 的电路/报文/分组三种——「按什么方式交换数据」也是分类轴, 今天的主流网络几乎都可以看作分组交换网络12。

3.4 网络由什么组成:两个视角、三大件

功能视角:网络 = 资源子网 + 通信子网(3.1 已见)。资源子网负责信息处理——主机、外设、 网络操作系统与数据库;通信子网负责搬运——交换设备、路由器、通信线路和通信控制软件13。

工作方式视角:网络 = 边缘部分 + 核心部分。边缘是用户直接使用的主机(手机、电脑); 核心由大量网络和路由器组成,只负责给边缘提供连通性14。这个视角的实用价值在于: 出了故障先问「坏在边缘还是坏在核心」——边缘的问题八成在自己机器,核心的问题只能等运营商。

组成部件视角:硬件(主机、通信链路、交换设备、网卡)+ 软件(网络操作系统、工具程序)

  • 协议。书里把协议称为「计算机网络的核心」,并立刻补了一句给外行的解释: 协议之于网络,如同交通规则之于汽车驾驶15。这个比喻可以带走,但记住它是比喻—— 真正的协议是三要素(语法、语义、定时)写死的规则集合,第 3.5 节讲。

3.5 分层:把一件复杂事切成一堆简单事

网越来越大,如果「传一份数据」这件事由一个整体协议来管,任何一处改动都会牵全身。 工程师的解法是结构化设计:把功能切成层,每层只干一类事16。

切层有三条原则(书里写明):每层功能明确且互相独立;层间接口清晰、跨接口的信息越少越好; 层数适中——太少则每层太复杂,太多则体系本身成了负担17。

协议这个词在这一章第一次出现,务必当场记住:协议就是控制两个对等实体通信的规则集合, 它有三个要素——

  • 语法:数据的格式(哪段是地址、哪段是内容);
  • 语义:每个字段是什么意思、收到要做什么动作;
  • 定时:动作的先后顺序和时序关系18。

分层模型里还有一套绕不开的术语,书里用「第 N 层」的写法统一描述,一次说清免得后面每次卡壳:

  • 实体(entity):任何能发送或接收信息的硬件或软件进程,通常就是一个特定的软件模块;
  • 对等层 / 对等实体:不同机器上的同一层、同一层上的对应实体。协议只在对等实体之间生效;
  • 虚通信 vs 实通信:除了最底下的物理介质上跑的是真信号(实通信),其余各对等层之间的 「对话」都是虚通信——第 N 层的实体以为自己直接跟对方第 N 层的实体说话, 实际上它的话被下面的层一层层打包,靠底下的实通信捎过去的19。 「虚」字点破了一个真相:上层看见的连接,全是下层用服务伪造出来的。 整条链路上唯一「真」的,只有物理介质上的电磁信号。

层与层之间不是协议关系,是服务关系:下层通过层间接口向上层提供服务。 书里用一个非常具体的比喻点明了接口的名字——服务访问点(SAP)就像墙上的电话插座, 插座(SAP)是上层用下层服务的门口,插座的「电话号码」就是 SAP 的地址20。 对应到今天的实际系统:一个 SAP 可以是一个 socket、一个端口或一个队列——第 09 章会展开。

主线例子走到封装: H2 上的应用程序把数据交给网络协议栈后,数据开始一层层往下穿, 每穿一层就被加上一层控制信息(头部,有的层还加尾部):应用层加 H7、表示层加 H6…… 到数据链路层加 H2,最后物理层变成一串串比特流发出去21。 接收端 H5 做完全相反的「拆封」,逐层剥掉对方加的头,把原始数据交给自己的应用程序。 就像邮寄:信(数据)→ 信封(一层头)→ 邮袋(又一层)→ 邮车(再一层),收件方层层拆开。

这些加了头的数据块,各层有自己的名字,后面章节会反复用:

名字属于哪层长什么样
帧(frame)数据链路层头和尾夹着上层数据(第 03 章主角)
分组/包(packet)网络层网络层头 + 数据(第 06 章主角)
数据报(datagram)网络层(无连接方式)分组的同义词,强调无连接
段(segment)传输层TCP 的传输单位(第 09 章主角)
信元(cell)ATM固定 5B 头 + 48B 载荷(第 05 章主角)

3.6 网络能提供的服务:三组二选一

在进入两个模型之前,还有一组概念要立住——「网络服务」可以按三对开关分类, 每一种后面都有对应的真实协议在兑现22:

第一组:面向连接 vs 无连接。 面向连接的服务在通信前先建立连接、分配资源(比如缓冲区), 传完再释放,像打电话——先拨通、再说话、最后挂电话;无连接服务不建连接,有数据就直接发, 像寄明信片——每张自己上路,不保证到达,常被描述为「尽最大努力交付」。

第二组:可靠 vs 不可靠。 可靠服务有检错、纠错、应答机制,保证数据正确送达; 不可靠服务只是尽力传。关键书里的一句话:不可靠不等于没用——接收方收到后自己校验, 发现错了就报告发送方重发,用户的这些措施可以把不可靠服务变成可靠服务23。 这正是第 09 章 TCP 的思路预告:IP 不可靠,但两端勤快点,整体就可靠了。

第三组:有应答 vs 无应答。 有应答服务里,接收方收到数据自动回一个应答(肯定或否定), 由传输系统内部实现,不用用户操心,比如文件传输;无应答服务收完不吱声,要确认得高层自己搞, 比如 Web——浏览器收到页面不会给服务器回执24。

三组二选一组合出各种服务形态,记两个极端就够了:「面向连接 + 可靠 + 有应答」 是 TCP 的目标形态;**「无连接 + 尽力 + 无应答」**是 IP 和 UDP 的形态。

3.7 OSI 七层与 TCP/IP 四层:两个模型,一场战争

分层思想先被 ISO 做成了完整的国际标准——1984 年的 OSI 参考模型,七层,从下往上: 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层25。 七层各自的分工,后面十一章会逐层细讲,这里先记住各自「一句话职责」:

层一句话职责这本书哪章拆
物理层在介质上透明地传原始比特流第 02 章
数据链路层把物理线路改造成无差错的链路,以帧为单位第 03、04 章
网络层选路,把分组送到目的主机第 06、07 章
传输层进程到进程的可靠(或尽力)传输第 09 章
会话层建立、管理会话(基本被实际系统合并)—
表示层数据格式转换、加密、压缩(基本被实际系统合并)—
应用层直接为用户应用服务第 10 章

七层里每一层在书里都有更细的「职责清单」,把承重的那几层提前展开(其余的等各自章节):

  • 数据链路层是全书第一个重点层。它的承诺是对网络层表现成「一条无差错的信道」, 机制四件套:成帧(把比特流切成一帧一帧)、差错控制、流量控制、传输管理; 工作在它上面的设备是「第二层交换机」,跑在它上面的协议有 PPP、HDLC、X.25、帧中继26。
  • 网络层管的是「通信子网的运行控制」:选路、拥塞控制、网络互连,传送单位是分组; 它的协议族最热闹——IP、ICMP、IGMP、ARP、RARP、OSPF,第 06、07 章全是它们27。
  • 传输层只存在于主机(端系统)里,网络设备上没有。它给上层的是一条「端到端的传输连接」, 功能包括:传输地址到网络地址的映射、多路复用与分用、连接建立与释放、分段与重新组装28。 注意「多路复用」这个词——一台主机只有一个 IP 地址,几十条 TCP 连接怎么共用? 第 09 章的端口号就是答案,这里先记住传输层是干这件事的层。
  • 低三层与高三层的分界是传输层:低三层依赖网络、解决「把数据搬过去」, 高三层面向应用、解决「数据到了之后怎么用」;传输层站在中间, 「为面向应用的高三层屏蔽与网络有关的低三层的详细操作」29——上层感觉不到底下是什么网。

几乎同时,从 ARPANET 生长出来的 TCP/IP 成了事实标准。它的模型只有四层: 应用层、传输层、网际层、网络接口层——没有会话层和表示层,把最底下两层合并成 「网络接口层」,而且这个层几乎没有被真正定义过(所以 TCP/IP 能跑在任何硬件上)30。

书里对两个模型的对比值得原样带走,四条:

  1. OSI 精确区分了服务、协议、接口三个概念(与现代面向对象思想吻合);TCP/IP 没分清;
  2. OSI 先有模型后有协议(通用但脱离实际);TCP/IP 先有协议后有模型(合身但不通用);
  3. TCP/IP 一开始就把「异构网互连」当核心问题,把 IP 立为单独一层;OSI 后来才补;
  4. OSI 的网络层和传输层都支持面向连接;TCP/IP 认为可靠性是端到端的问题, 网络层只做无连接,传输层两种都支持31。

第 4 条是全书最要紧的一句架构判断:中间的网络做傻、做快,可靠性由两端的主机自己解决。 这正是分组交换「分组会丢会乱」这条缺陷在体系结构层面的回答——网络层不补,传输层补。

实际学习和排障时,书里的折中方案是五层:物理层、数据链路层、网络层、传输层、应用层—— 综合两个模型的优点32。这本书后面九章,基本就是这个五层一层一章。

3.8 标准化组织:谁在给网络定规矩

网络的协议不是哪一家公司说了算的。书里列了六家,各自的管辖范围一句话能记住33:

组织管什么你见过的产物
ISO(国际标准化组织)体系结构的国际标准OSI 参考模型
ITU(国际电信联盟,前身 CCITT)电信与电话通信标准X.25、X.21、V 系列接口建议
EIA(电子工业协会)设备间的电气连接与物理传输RS-232、568 布线标准
IEEE(电气电子工程师学会)局域网标准IEEE 802 系列(802.3 以太网、802.11 Wi-Fi)
IAB(因特网体系结构委员会)因特网技术方向下辖 IANA(管地址分配)与 IETF
IETF(因特网工程任务组)因特网标准的实际制定者RFC 文档

RFC 文档的四个阶段值得单独记,因为它解释了为什么网上有些「标准」互相打架: 因特网草案 → 建议标准(从这里起算 RFC)→ 草案标准 → 因特网标准; 此外还有实验性的、提供信息的、历史的 RFC34。一份 RFC 的编号和它是不是「正式标准」没有必然关系 ——读任何 RFC 前先确认它处于哪个阶段。

3.9 性能指标:「快」到底怎么量

「网很卡」是感觉,工程上要能说清卡在哪。这一组指标全书后面不断回来用。

速率就是每秒传多少个比特,单位 b/s(比特每秒),常用 Kb/s、Mb/s、Gb/s。 注意一个贯穿全书的单位陷阱:通信里的 K/M/G 按 10 的幂走(1Kb/s = 1000b/s), 而存储里的 KB/MB 按 2 的幂走(1KB = 1024B)——算「下载这个文件要几秒」时必须先统一。

带宽这个词有两个意思,书里特意分开:信号处理里它指信号占据的频率范围(单位赫兹); 计算机网络里它指链路单位时间能通过的最高数据量(单位 b/s)35。 日常说「百兆带宽」用的是后一个意思——它是一条路的「设计时速」,不是实际车速。

时延是数据从这边到那边花的时间,书里的主线算例按四部分拆36:

  总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延

  图说:发送时延是把一帧的比特逐个推上线的时间(帧长 ÷ 发送速率);
        传播时延是信号在介质里跑的时间(信道长 ÷ 传播速率,铜线约 2.3×10⁸ m/s,光纤约 2.0×10⁸ m/s);
        处理时延是路由器查头部、验错、选路的时间;
        排队时延是分组在路由器队列里等转发的时间——拥塞时它是大头。

主线例子算一笔账: H2 给 H5 发一个 10000 bit(1250B,约一封长邮件的纯文本)的帧, 链路发送速率 10Mb/s,这段链路长 100km。 发送时延 = 10000 ÷ 10⁷ = 1ms;传播时延 = 100km ÷ 2.3×10⁸ m/s ≈ 0.43ms。 在小带宽、短距离下,发送时延是大头。把带宽换成 10Gb/s 呢?发送时延缩到 1μs, 传播时延变成大头——「提高带宽只缩小发送时延,缩小不了传播时延」, 这就是为什么光纤时代跨洋通信的延迟依然以几十毫秒计(光速摆在那里)37。

往返时延(RTT) 是从发出数据到收到对方确认经历的总时间,所有「我发过去它得回个话」 的协议(如 TCP)的成本都由它决定。

时延带宽积是一个很有画面感的量:传播时延 × 带宽。 书里的例子:传播时延 20ms、带宽 10Mb/s 的链路,时延带宽积 = 20×10⁻³×10×10⁶ = 2×10⁵ bit38。 意思是:第一个比特还没走到头时,发送方已经把 20 万个比特推上了线,它们全都正在链路上飞。 这个数就是「链路里最多能同时存多少数据」,它决定了窗口该开多大才能跑满带宽(第 09 章 TCP 流量控制的物理背景)。

吞吐量是单位时间实际通过的数据量,通常远小于带宽——因为沿途有协议开销、 有别的流量在抢、有设备在排队。书里的清单值得过一遍,它是排查「网速不达标」的检查单: 互连设备的能力、传输数据的类型、拓扑结构、并发用户数量、用户计算机性能、 服务器配置、拥塞情况39。「办了千兆宽带,下载只有几十兆」在这个清单上至少有六个候选原因, 而不是运营商一个嫌疑。

利用率是信道有百分之几的时间在干活;书里的提醒很反直觉:利用率不是越高越好,排队论告诉我们信道利用率升高, 排队时延会迅速增大40——路满了,再来一辆车,大家就都开始等。

把四种时延放到主线例子上再核一遍: H2 发出的分组抵达 H5,沿途要经历—— IMP1 把分组的比特逐个推上线(发送时延)→ 信号在电缆里跑(传播时延)→ 每个 IMP 拆开帧头查目的地(处理时延)→ 在 IMP 的输出队列里等前面的分组先走(排队时延)。 前两种由「帧长、发送速率、距离、介质」四个参数决定,算得准; 后两种由「沿途设备的忙闲」决定,只能估。这就是为什么两个ping 值永远不会完全相同。

3.10 OSI 高三层与信息单元家族(补遗)

3.7 展开了低三层与传输层,这里把高三层的职责补完——它们的功能在真实互联网里 被应用层协议「吸收」了,但概念上仍值得知道:

  • 会话层:不搬数据,管「对话」——建立、维持、同步、释放两个应用进程之间的会话; 提供会话连接与传输连接的映射、令牌管理(谁有权发)、活动管理(把长对话分成活动单元)。 「断点续传」的思想源头在这里;
  • 表示层:管「数据的写法」——不同机器的数据表示法不同(大小端、字符编码、 整数宽度),表示层做语法转换,还管加密与压缩。ASCII、GIF、MPEG 都是这一层世界里 的标准格式41;
  • 应用层:直接为端用户服务,负责「进程之间通信的性质」——语义层面的匹配, 而底下各层只管字节42。

信息单元家族(封装一节那张表的完整版)43:帧(链路层,头+尾)、分组(网络层)、 数据报(无连接网络层的分组)、段(传输层)、信元(定长,ATM 的 5B 头+48B 载荷)、 SDU(服务数据单元:上层交给下层的数据)、PDU(协议数据单元:本层的头+SDU)、 BPDU(网桥协议数据单元,第 04 章生成树用它)。SDU 与 PDU 的关系是一层套一层: 本层的 PDU 是下层的 SDU,层层外包,到物理层全变成比特。

3.11 发展史的另一半:Internet 与中国

3.1 的时间线之外,还有两条值得记住的支线:

  • OSI 与 TCP/IP 的标准之战(20 世纪 80 年代):OSI 由 ISO 主导、七层完整、 理论完美;TCP/IP 由 ARPANET 实践长出来、四层粗粝、能跑。结局第 3.7 节说过—— OSI 输在「缺乏市场与商业动力,结构复杂,实现周期长,运行效率低」44。 但 OSI 的概念遗产(分层、服务与协议分离)被所有后来者继承;
  • 中国接入(1987–1994):1987 年 9 月北京建成第一个 Internet 电子邮件结点; 1990 年 10 月中国正式注册顶级域名 CN;1994 年 3 月 64Kb/s 专线接通, 实现全功能接入。此后长出 CERNET(教育科研)、CSTNET(科技)、CHINANET(公众商用)、 金桥、联通、移动等骨干网45——「科研机构先用、商业跟进」的节奏, 与全球 Internet 的演化(1991 年商业用户超学术用户)完全同构。

4. 作者的判断与证据

这一章大部分是公认的史实与概念,作者的判断藏在三处,值得标出来:

  • 「TCP/IP 赢在架构哲学」:第 4 条模型对比(可靠性端到端)是作者明写的取舍依据, 也是全书后九章反复兑现的设计——TCP 章就是这一条的儿子。这是作者的分析,不是史实陈述。
  • 「OSI 失败在脱离市场」:书中明说 OSI「缺乏市场与商业动力,结构复杂,实现周期长, 运行效率低」,这是它没有达到预想目标的重要原因46——一个「理论更完美的方案输给 工程上更务实的方案」的完整案例。
  • 五层折中是教学裁决:既非 OSI 官方也非 TCP/IP 官方,是「学习时」的折中办法47。 书里没说破的一层含义:五层也是今天抓包、调错时最顺手的思维方式。

5. 边界与局限

  • OSI 的会话层、表示层在真实互联网里几乎找不到对应物(Kerberos、ASN.1 等少数遗留除外), 这本书后面也不再真正讲它们——第 10 章的应用层把表示与会话的职责吸收进了各个应用协议自己。
  • 性能指标一节是理想模型:四种时延在真实网络里难以分别测量(排队时延瞬息万变), 作为分析框架极好,作为测量手册不行。
  • 中国接入史(1987 CANET 到 1994 全功能接入)是背景阅读,机制上无新增内容, 我们未单列小节,出处收在原文地图里供回看。

判断(我们的,不是书里的): 这一章最容易被跳过去,但它装着全书的「为什么」。 「网络层无连接、可靠性端到端」这一条,是理解后面 TCP、UDP、防火墙、NAT、VPN 每一个机制的钥匙;反过来,只背七层名字而不理解这条取舍,这本书就读成了名词手册。 如果错,会错在: 如果未来网络架构(如内容中心网络、确定性网络)把可靠性重新收回 网络内部,「端到端」就不再是铁律;但截至本书出版,互联网的运转仍然完全按这条规则。

6. 可带走的

  1. 网络的定义:自治的计算机 + 通信设施 + 资源共享;自治意味着不能假设对方是什么;
  2. 分组交换 vs 电路交换:前者把数据切小、统计复用线路,换来了互联网的规模和成本, 代价是分组会丢会乱——这个代价由上层补;
  3. 协议三要素:语法(格式)、语义(意思)、定时(顺序);谈任何协议都按这三问检查;
  4. 服务是垂直的、协议是水平的:层间只有服务关系,对等层之间才谈协议;
  5. OSI 七层是教具,TCP/IP 四层是事实,五层是干活用的——排障按五层对号入座;
  6. **「可靠性是端到端的问题」**是全互联网最重要的架构决策,后面九章全是它的推论;
  7. 带宽是设计时速,吞吐量是实际车速,时延分四种;提带宽只缩发送时延,缩不了传播时延;
  8. 时延带宽积 = 链路上同时在飞的数据量,它是「窗口开多大」的物理上限;
  9. 利用率越高越好是错觉——排队时延随利用率陡增,留余量是有理论依据的。

7. 原文地图

主题原书章原文位置
网络定义与四个特征第1章概述text/01-ch01.txt:154(搜「自治功能」) · text/01-ch01.txt:160(搜「自治的」)
发展四阶段第1章概述text/01-ch01.txt:26(搜「4 个阶段」)
ARPANET 与四个贡献第1章概述text/01-ch01.txt:37(搜「阿帕网」) · text/01-ch01.txt:42(搜「4 个方面」)
通信子网/资源子网、存储转发、IMP 路径例第1章概述text/01-ch01.txt:54(搜「两级结构」) · text/01-ch01.txt:59(搜「H2」) · text/01-ch01.txt:63(搜「存储—转发」)
三种交换方式对比第1章概述text/01-ch01.txt:245(搜「电路交换网络」) · text/01-ch01.txt:251(搜「报文交换网络」) · text/01-ch01.txt:261(搜「分组交换网络」)
分层原则第1章概述text/01-ch01.txt:340(搜「功能应是明确的」)
协议三要素第1章概述text/01-ch01.txt:385(搜「语法」)
服务、SAP、电话插座比喻第1章概述text/01-ch01.txt:414(搜「水平的」) · text/01-ch01.txt:433(搜「电话机插座」)
OSI 七层与各层职责第1章概述text/01-ch01.txt:481(搜「物理层」)
封装与拆封、五种信息格式第1章概述text/01-ch01.txt:612(搜「封装」) · text/01-ch01.txt:640(搜「是一种信息单位」)
TCP/IP 四层与模型对比第1章概述text/01-ch01.txt:711(搜「4 层」) · text/01-ch01.txt:750(搜「3 个主要概念」) · text/01-ch01.txt:762(搜「端到端」)
五层折中第1章概述text/01-ch01.txt:770(搜「5 层协议」)
时延四部分与时延带宽积算例第1章概述text/01-ch01.txt:861(搜「发送时延」) · text/01-ch01.txt:876(搜「3.0×108」) · text/01-ch01.txt:887(搜「总时延」) · text/01-ch01.txt:901(搜「2×105bit」)
利用率与排队第1章概述text/01-ch01.txt:912(搜「利用率」)
标准化组织与 RFC 四阶段第1章概述text/01-ch01.txt:780(搜「国际标准化组织」) · text/01-ch01.txt:814(搜「因特网草案」)
中国接入 Internet 简史第1章概述text/01-ch01.txt:115(搜「起步阶段」) · text/01-ch01.txt:137(搜「1994 年 1 月」)
OSI 各层详细功能第1章概述text/01-ch01.txt:525(搜「成帧」) · text/01-ch01.txt:546(搜「多路复用与分用」) · text/01-ch01.txt:578(搜「最低三层」)
服务三对分类第1章概述text/01-ch01.txt:447(搜「面向连接服务」) · text/01-ch01.txt:459(搜「变成可靠服务」) · text/01-ch01.txt:465(搜「不给出应答」)

Footnotes

  1. 出处:「第1章概述」第 154 段(text/01-ch01.txt:154,搜「自治功能」)。 ↩

  2. 出处:「第1章概述」第 40 段(text/01-ch01.txt:40,搜「4 个结点」)。 ↩

  3. 出处:「第1章概述」第 59–62 段(text/01-ch01.txt:60,搜「IMP1 暂存」;text/01-ch01.txt:62,搜「IMP6」)。 ↩

  4. 出处:「第1章概述」第 91–104 段(text/01-ch01.txt:91,搜「1977」;text/01-ch01.txt:93,搜「完成了向 TCP/IP 的转换」;text/01-ch01.txt:100,搜「1993 年」)。 ↩

  5. 出处:「第1章概述」第 122–139 段(text/01-ch01.txt:122,搜「第一个 Internet 电子邮件」;text/01-ch01.txt:136,搜「CN」;text/01-ch01.txt:138,搜「64Kb/s」)。 ↩

  6. 出处:「第1章概述」第 245–265 段(text/01-ch01.txt:245,搜「电路交换网络」;text/01-ch01.txt:266,搜「比较」)。 ↩

  7. 出处:「第1章概述」第 43–48 段(text/01-ch01.txt:247,搜「3 个阶段」;text/05-ch05.txt:48,搜「释放传输通路」)。 ↩

  8. 出处:「第1章概述」第 257–259 段(text/01-ch01.txt:257,搜「存储资源的开销」;text/01-ch01.txt:263,搜「缓冲易于管理」)。 ↩

  9. 出处:「第1章概述」第 265 段(text/01-ch01.txt:265,搜「基本上都可以看成」)。 ↩

  10. 出处:「第1章概述」第 253 段(text/01-ch01.txt:253,搜「独立选择」)。 ↩

  11. 出处:「第1章概述」第 206 段(text/01-ch01.txt:206,搜「几何形式」)。 ↩

  12. 出处:「第1章概述」第 265 段(text/01-ch01.txt:265,搜「分组交换网络」)。 ↩

  13. 出处:「第1章概述」第 294–301 段(text/01-ch01.txt:295,搜「资源子网实现面向应用」)。 ↩

  14. 出处:「第1章概述」第 318–320 段(text/01-ch01.txt:318,搜「边缘部分」)。 ↩

  15. 出处:「第1章概述」第 326 段(text/01-ch01.txt:326,搜「交通规则」)。 ↩

  16. 出处:「第1章概述」第 334 段(text/01-ch01.txt:334,搜「将其分解为若干个容易处理的层次」)。 ↩

  17. 出处:「第1章概述」第 339–343 段(text/01-ch01.txt:340,搜「功能应是明确的」)。 ↩

  18. 出处:「第1章概述」第 384–389 段(text/01-ch01.txt:385,搜「语法」;text/01-ch01.txt:386,搜「语义」;text/01-ch01.txt:388,搜「定时」)。 ↩

  19. 出处:「第1章概述」第 364–374 段(text/01-ch01.txt:371,搜「虚通信」)。 ↩

  20. 出处:「第1章概述」第 433 段(text/01-ch01.txt:433,搜「电话机插座」)。 ↩

  21. 出处:「第1章概述」第 612 段(text/01-ch01.txt:612,搜「封装」)。 ↩

  22. 出处:「第1章概述」第 444–465 段(text/01-ch01.txt:446,搜「3 种方式进行分类」)。 ↩

  23. 出处:「第1章概述」第 459 段(text/01-ch01.txt:459,搜「变成可靠服务」)。 ↩

  24. 出处:「第1章概述」第 465 段(text/01-ch01.txt:465,搜「不给出应答」)。 ↩

  25. 出处:「第1章概述」第 481 段(text/01-ch01.txt:481,搜「物理层」)。 ↩

  26. 出处:「第1章概述」第 523–529 段(text/01-ch01.txt:525,搜「成帧」;text/01-ch01.txt:529,搜「第二层交换机」)。 ↩

  27. 出处:「第1章概述」第 530–539 段(text/01-ch01.txt:643,搜「也是一种信息单位」)。 ↩

  28. 出处:「第1章概述」第 546 段(text/01-ch01.txt:546,搜「多路复用与分用」)。 ↩

  29. 出处:「第1章概述」第 582–583 段(text/01-ch01.txt:582,搜「屏蔽」)。 ↩

  30. 出处:「第1章概述」第 737–739 段(text/01-ch01.txt:737,搜「没有真正描述」)。 ↩

  31. 出处:「第1章概述」第 762 段(text/01-ch01.txt:762,搜「端到端」)。 ↩

  32. 出处:「第1章概述」第 770 段(text/01-ch01.txt:770,搜「5 层协议」)。 ↩

  33. 出处:「第1章概述」第 780–806 段(text/01-ch01.txt:780,搜「国际标准化组织」;text/01-ch01.txt:87,搜「IEEE 802」;text/01-ch01.txt:808,搜「IETF」)。 ↩

  34. 出处:「第1章概述」第 813–817 段(text/01-ch01.txt:814,搜「因特网草案」)。 ↩

  35. 出处:「第1章概述」第 846–855 段(text/01-ch01.txt:847,搜「频带宽度」;text/01-ch01.txt:855,搜「最高数据量」)。 ↩

  36. 出处:「第1章概述」第 860–887 段(text/01-ch01.txt:863,搜「发送时延」;text/01-ch01.txt:871,搜「传播时延」;text/01-ch01.txt:887,搜「总时延」)。 ↩

  37. 出处:「第1章概述」第 888 段(text/01-ch01.txt:888,搜「发送速率而不是」)。 ↩

  38. 出处:「第1章概述」第 901 段(text/01-ch01.txt:901,搜「2×105bit」)。20×10⁻³×10×10⁶=2×10⁵,原文印作 2×105bit(排版丢了上标)。 ↩

  39. 出处:「第1章概述」第 907–910 段(text/01-ch01.txt:909,搜「决定吞吐量的因素」)。 ↩

  40. 出处:「第1章概述」第 917 段(text/01-ch01.txt:917,搜「迅速增加」)。 ↩

  41. 出处:「OSI 参考模型」第 556–563 段(text/01-ch01.txt:550,搜「组织和同步」;text/01-ch01.txt:560,搜「GIF」)。 ↩

  42. 出处:「OSI 参考模型」第 564–569 段(text/01-ch01.txt:568,搜「用户代理」)。 ↩

  43. 出处:「数据封装与拆封」第 640–654 段(text/01-ch01.txt:652,搜「服务数据单元」;text/01-ch01.txt:650,搜「5B」)。 ↩

  44. 出处:「第1章概述」第 765–768 段(text/01-ch01.txt:767,搜「缺乏市场与商业动力」)。 ↩

  45. 出处:「第1章概述」第 111–147 段(text/01-ch01.txt:122,搜「第一个 Internet 电子邮件」;text/01-ch01.txt:136,搜「CN」;text/01-ch01.txt:141,搜「CERNET」)。 ↩

  46. 出处:「第1章概述」第 767 段(text/01-ch01.txt:767,搜「缺乏市场与商业动力」)。 ↩

  47. 出处:「第1章概述」第 769 段(text/01-ch01.txt:769,搜「折中的办法」)。 ↩

On this page