Appearance
第一章:计算机网络和因特网
第一章的作用是建立全局视角:互联网由哪些部件组成,端系统如何接入网络,网络核心如何转发分组,性能为什么会受到时延、丢包和吞吐量限制,以及为什么协议要分层。本章不追求每个协议的细节,而是为后续应用层、传输层、网络层和链路层建立共同词汇。
目录
- 1.1 互联网是什么
- 1.2 什么是协议
- 1.3 网络边缘:端系统、客户和服务器
- 1.4 接入网和物理介质
- 1.5 网络核心:分组交换、转发和路由
- 1.6 电路交换与分组交换
- 1.7 互联网结构:网络的网络
- 1.8 时延、丢包和吞吐量
- 1.9 网络安全概述
- 1.10 协议分层、服务模型和封装
- 1.11 互联网发展史
- 1.12 本章小结
1.1 互联网是什么
理解互联网可以从两个角度入手:一个是具体设备和链路组成的“螺母和螺栓”视角,另一个是为应用提供通信服务的“服务”视角。
螺母和螺栓视角
互联网由大量端系统、链路、交换设备和协议组成。
| 组成部分 | 含义 |
|---|---|
| 主机 / 端系统 | 运行网络应用的设备,如手机、笔记本、服务器、传感器、摄像头 |
| 通信链路 | 承载比特传输的物理或无线通道,如光纤、铜线、无线电、卫星 |
| 分组交换设备 | 转发数据块的设备,主要包括路由器和链路层交换机 |
| 协议 | 控制报文格式、顺序和动作的规则,如 HTTP、TCP、IP、WiFi、Ethernet |
| 网络 | 由一个组织管理的一组设备、链路和路由器 |
端系统位于互联网边缘,运行 Web、邮件、视频、游戏、社交媒体等应用。网络核心由互连的路由器组成,负责把分组从源端系统送到目的端系统。
互联网也可以称为 网络的网络:家庭网络、企业网络、移动网络、数据中心网络、内容提供商网络、区域 ISP、国家或全球 ISP 互联在一起,形成全球互联网。
互联网标准
互联网不是由单个公司定义的封闭系统,而是依靠开放标准协调互操作。
| 名称 | 含义 |
|---|---|
| IETF | Internet Engineering Task Force,互联网工程任务组 |
| RFC | Request for Comments,互联网标准和技术文档的主要发布形式 |
很多互联网协议先以 RFC 形式公开讨论、实现和演进。
服务视角
从应用程序角度看,互联网是一个为分布式应用提供通信服务的基础设施。
典型应用包括:
- Web 和搜索。
- 流媒体视频。
- 多媒体会议。
- 电子邮件。
- 在线游戏。
- 电子商务和社交媒体。
- 物联网设备和云服务。
应用通过操作系统提供的 API 使用互联网传输服务。应用开发者不需要直接控制路由器,只需要把数据交给协议栈,协议栈负责在网络中传输数据。
可以把互联网类比为邮政系统:应用把消息交出去,底层网络负责尽力把消息送到目的地;不同传输服务可以提供不同程度的可靠性、时延和安全能力。
1.2 什么是协议
协议 (protocol) 是网络通信的核心概念。
协议定义了两个或多个通信实体之间交换报文的格式、顺序,以及在发送、接收报文或发生其他事件时采取的动作。
一个人类协议例子:
text
A: 你好
B: 你好
A: 现在几点?
B: 2:00这里隐含了报文格式、先后顺序和响应动作。网络协议也是同样思想,只是通信实体从人变成了主机、路由器、服务器或应用进程。
一个网络协议例子:
text
client -> server: TCP connection request
server -> client: TCP connection response
client -> server: GET /index.html HTTP/1.1
server -> client: <file content>协议的三个关键词:
| 关键词 | 说明 |
|---|---|
| 格式 | 报文有哪些字段,每个字段如何编码 |
| 顺序 | 谁先发,谁后发,收到某类报文后期待什么 |
| 动作 | 收到报文后如何处理,超时、错误、重传等事件如何响应 |
后续章节中的 HTTP、DNS、TCP、IP、ARP、BGP 都是协议,只是它们运行在不同层次,解决的问题不同。
1.3 网络边缘:端系统、客户和服务器
网络边缘 (network edge) 指互联网最外侧运行应用的端系统。端系统包括客户端设备和服务器。
| 角色 | 例子 | 特点 |
|---|---|---|
| 客户端 | 手机、PC、浏览器、游戏终端 | 主动发起请求,常常间歇在线 |
| 服务器 | Web 服务器、邮件服务器、视频服务器 | 等待请求并提供服务,通常部署在数据中心 |
服务器经常位于大型数据中心。数据中心内部使用高速链路把成百上千台服务器连接起来,并通过高带宽出口连接互联网。
主机如何发送数据
主机发送数据时,不是把应用消息作为一个整体直接塞进链路,而是将其切成较小的数据块,称为分组 (packet)。
发送过程可以理解为:
- 应用产生消息。
- 主机把消息切成一个或多个分组。
- 每个分组长度为
bit。 - 主机以链路传输速率
bps 把分组推入接入链路。
一个分组被推入链路所需的时间是传输时延:
这里的
1.4 接入网和物理介质
接入网 (access network) 解决的问题是:端系统如何连接到第一个边缘路由器?
常见接入环境包括住宅接入、机构接入、移动接入和数据中心网络。
住宅接入
| 技术 | 说明 | 特点 |
|---|---|---|
| HFC | Hybrid Fiber Coax,混合光纤同轴电缆 | 多个家庭共享电缆分配网络,通常下行高于上行 |
| DSL | Digital Subscriber Line,数字用户线 | 使用已有电话线连接中心局 DSLAM,数据和语音使用不同频段 |
| FTTP | Fiber To The Premises,光纤到户 | 光纤直接接近或到达用户,带宽高、距离长、抗干扰能力强 |
HFC 中,数据和电视信号通过不同频段复用在同一套电缆网络上,多个家庭共享从电缆头端到用户侧的接入网络。DSL 则通常是从家庭到中心局的一条专用电话线,语音进入电话网,数据进入 ISP 网络。
家庭网络内部常见结构是:
text
手机/电脑 -> WiFi 接入点 / 以太网 -> 家庭路由器/NAT/防火墙 -> 电缆或 DSL 调制解调器 -> ISP很多家用设备把 WiFi 接入点、交换机、路由器、NAT、防火墙和调制解调器的一部分功能集成在一个盒子里。
机构接入和企业网
学校、公司等机构通常使用以太网和 WiFi 的混合接入方式。
| 技术 | 典型用途 |
|---|---|
| 以太网 | 有线接入,常见速率包括 100 Mbps、1 Gbps、10 Gbps |
| WiFi | 无线接入,适合移动终端和灵活部署 |
| 机构路由器 | 连接机构内部网络和 ISP |
| 机构服务器 | 邮件、Web、认证、文件等内部服务 |
企业网中主机通常先接入交换机或无线接入点,再通过机构路由器接入外部互联网。
移动和无线接入
无线接入网络通过基站或接入点把端系统连接到网络。
| 类型 | 范围 | 特点 |
|---|---|---|
| WiFi / WLAN | 建筑物内或附近,约几十米 | 由无线接入点提供,常用于家庭、校园、企业 |
| 蜂窝网络 | 城市或广域覆盖,约数公里到十公里级 | 由移动运营商提供,如 4G/5G |
| 蓝牙 | 短距离 | 常用于外设和个人区域网络 |
| 卫星 | 大范围覆盖 | 传播时延较大,传统地球同步卫星单程距离长 |
无线链路没有物理线缆,容易受到反射、遮挡、干扰和噪声影响,通常是半双工共享介质。
数据中心网络
数据中心网络连接大量服务器,并把它们连接到互联网。它的特点是:
- 链路带宽高,常见 10 Gbps、40 Gbps、100 Gbps 或更高。
- 服务器数量大,需要可扩展拓扑。
- 对时延、吞吐、可靠性和故障恢复要求高。
- 支撑云计算、搜索、视频、社交媒体和大规模内容分发。
后续第六章会更系统讨论数据中心网络拓扑和链路层技术。
物理介质
物理介质负责承载比特。比特在发送器和接收器之间传播,物理链路可以是有线的,也可以是无线的。
| 类型 | 介质 | 特点 |
|---|---|---|
| 引导型介质 | 双绞线、同轴电缆、光纤 | 信号沿固体介质传播 |
| 非引导型介质 | 无线电、微波、卫星 | 信号在空间中传播 |
常见介质对比:
| 介质 | 说明 |
|---|---|
| 双绞线 | 两根绝缘铜线,常用于以太网;Cat 5 可支持 100 Mbps / 1 Gbps,Cat 6 可支持 10 Gbps 级以太网 |
| 同轴电缆 | 两根同心铜导体,支持双向通信,可用多个频段承载不同信道 |
| 光纤 | 用光脉冲表示比特,速率高、误码率低、抗电磁干扰,适合长距离和骨干链路 |
| 无线电 | 部署灵活,但受反射、遮挡、干扰、噪声影响 |
| 卫星链路 | 覆盖范围大,但传播时延通常明显高于地面链路 |
1.5 网络核心:分组交换、转发和路由
网络核心 (network core) 是互连路由器组成的网状结构。它的任务是把分组沿着从源主机到目的主机的路径逐跳转发。
互联网核心采用 分组交换 (packet switching):主机把应用消息切分为分组,网络中的每台路由器根据分组首部信息,把分组从输入链路转发到某条输出链路。
转发与路由
转发 (forwarding) 和路由 (routing) 容易混淆,但它们处在不同尺度。
| 概念 | 范围 | 问题 | 所在平面 |
|---|---|---|---|
| 转发 | 单台路由器本地 | 到达输入端口的分组应该从哪个输出端口发出? | 数据平面 |
| 路由 | 整个网络全局 | 从源到目的应该走哪条路径? | 控制平面 |
转发表是连接二者的关键:路由算法或控制平面计算出转发表,路由器数据平面按转发表逐包转发。
可以这样理解:
text
路由:规划从源到目的的整体路线
转发:在每个路由器上根据表项选择下一跳存储转发
互联网路由器通常采用存储转发 (store-and-forward):路由器必须完整接收一个分组后,才能把该分组的第一个比特发送到下一条链路。
若分组长度为
如果一个分组经过
如果有多个分组连续发送,后续分组可以像流水线一样在不同链路上同时传输,但每台路由器仍然需要先完整收到某个分组再转发该分组。
排队与丢包
当分组到达输出链路的速率超过该链路发送能力时,分组会在输出队列中等待。
text
输入分组 -> 路由器缓冲区/队列 -> 输出链路如果短时间拥塞,队列变长,排队时延增加;如果缓冲区被填满,后续到达的分组会被丢弃,这就是丢包。
分组交换的核心代价就在这里:资源按需共享,利用率高,但拥塞时会产生排队时延和丢包。
1.6 电路交换与分组交换
电路交换 (circuit switching) 是分组交换的主要对照。
电路交换
电路交换在通信开始前,为源和目的之间的连接预留端到端资源。
| 特点 | 说明 |
|---|---|
| 专用资源 | 连接建立后,链路上的某部分资源只给该连接使用 |
| 性能稳定 | 类似“保证带宽”,适合传统电话业务 |
| 资源可能空闲 | 如果连接暂时不发送数据,预留资源也不能被别人使用 |
| 需要建立连接 | 通信前需要呼叫建立过程 |
电路交换常用两种复用方式:
| 方式 | 含义 |
|---|---|
| FDM | Frequency Division Multiplexing,频分复用,把频率划分为多个频带,每个连接占用一个频带 |
| TDM | Time Division Multiplexing,时分复用,把时间划分为周期性时隙,每个连接占用固定时隙 |
分组交换
分组交换不为每个通信会话预先保留资源,而是让分组按需使用链路。
| 优点 | 代价 |
|---|---|
| 适合突发数据,用户不活跃时不会占用资源 | 可能发生排队、拥塞和丢包 |
| 统计复用提高资源利用率 | 需要可靠传输、拥塞控制等协议机制 |
| 不需要传统电路呼叫建立 | 时延和吞吐量不如电路交换那样固定 |
课件中的典型例子:
- 链路速率为 1 Gbps。
- 每个用户活跃时需要 100 Mbps。
- 每个用户只有 10% 时间活跃。
在电路交换下,最多只能固定支持 10 个用户;在分组交换下,可以支持更多用户,因为并不是所有用户都会同时活跃。分组交换依赖统计复用,但如果同时活跃用户过多,就会拥塞。
结论不是“分组交换在所有场景绝对更好”,而是:互联网业务通常突发性强,分组交换更适合大规模共享网络;为了在拥塞时仍然工作,需要后续章节中的可靠传输、流量控制和拥塞控制。
1.7 互联网结构:网络的网络
主机通常不是直接连接到全球所有主机,而是先连接到接入 ISP。接入 ISP 再通过更大的区域网络、全球 ISP、互联网交换点和内容提供商网络互联。
互联网结构的核心问题是:数以百万计的接入网络如何互联,使任意两个端系统可以交换分组?
为什么不能全互连
如果每个接入 ISP 都直接连接到其他所有接入 ISP,连接数量会按
因此互联网演化出层次化和商业驱动的结构。
典型组成
| 组成 | 作用 |
|---|---|
| 接入 ISP | 把家庭、企业、移动用户接入互联网 |
| 区域 ISP | 汇聚多个接入网络,把它们连接到更大范围网络 |
| Tier-1 ISP | 具有国家或全球覆盖的大型骨干网络 |
| IXP | Internet Exchange Point,互联网交换中心,不同网络在此对等互联 |
| 内容提供商网络 | Google、Microsoft、Akamai、Netflix 等自建网络,连接数据中心并靠近用户 |
内容提供商自建网络的动机是:绕开部分传统层次结构,把内容更靠近终端用户,降低时延、提升吞吐,并减轻对上游 ISP 的依赖。
经济和策略驱动
互联网结构不仅是技术问题,也受商业关系和国家政策影响。
常见关系包括:
- 客户 ISP 向提供商 ISP 付费获得全球可达性。
- 大型网络之间通过 IXP 或私有互联进行对等连接。
- 内容提供商把服务器或缓存部署到靠近用户的位置。
后续第五章的 BGP 会进一步解释 AS 间如何通过策略和路径属性决定跨域路由。
1.8 时延、丢包和吞吐量
网络性能主要由时延、丢包和吞吐量描述。
四种节点时延
一个分组经过路由器时,节点时延可以分成四部分:
| 时延 | 含义 | 主要取决于 |
|---|---|---|
| 处理时延 | 检查位错误、解析首部、确定输出链路 | 路由器处理能力 |
| 排队时延 | 在输出队列等待发送 | 拥塞程度、队列长度 |
| 传输时延 | 把分组所有 bit 推入链路所需时间 | 分组长度 |
| 传播时延 | 比特在物理链路上传播所需时间 | 链路距离 |
传输时延和传播时延是两个不同概念:
传输时延像“收费站把车一辆辆放上高速”的时间;传播时延像“车在高速路上跑到下一站”的时间。提高链路带宽会降低传输时延,但不一定降低传播时延。
排队时延和流量强度
设:
:平均分组到达率,单位 packet/s。 :平均分组长度,单位 bit。 :输出链路速率,单位 bit/s。
则流量强度为:
| 流量强度 | 含义 |
|---|---|
| 到达负载远小于服务能力,平均排队时延很小 | |
| 链路接近满负荷,平均排队时延迅速增大 | |
| 长期到达工作量超过服务能力,队列会持续增长并导致丢包 |
排队时延通常最难预测,因为它取决于瞬时流量突发和其他用户行为。
traceroute
traceroute 用于观察从源主机到目的主机路径上的路由器和往返时延。它的基本思想是:
- 发送 TTL 为 1 的探测包,第 1 跳路由器让 TTL 变为 0,丢弃分组并返回 ICMP 报文。
- 发送 TTL 为 2 的探测包,第 2 跳路由器返回 ICMP 报文。
- 依次增加 TTL,就能观察路径上的每一跳。
- 每个 TTL 通常发送多个探测包,以测量往返时间。
如果输出中出现 *,通常表示探测包丢失、ICMP 回复丢失,或某个路由器不返回相关 ICMP 报文。
丢包
路由器缓冲区容量有限。若分组到达时队列已经满,分组会被丢弃。
丢失的分组可能有三种后续命运:
- 由前一个节点在链路层重传。
- 由源端系统的传输层重传,例如 TCP。
- 不重传,例如某些 UDP 应用可以容忍丢包。
因此,IP 层本身是尽力而为服务,不保证可靠交付;可靠性通常由传输层或应用层补足。
吞吐量
吞吐量 (throughput) 是比特从发送方到接收方的速率。
| 类型 | 含义 |
|---|---|
| 瞬时吞吐量 | 某一时刻的传输速率 |
| 平均吞吐量 | 一段较长时间内的平均传输速率 |
若服务器接入链路速率为
限制端到端吞吐量的链路称为瓶颈链路。
如果 10 条连接公平共享一条速率为
现实中,接入链路经常是瓶颈,但在热点服务、跨运营商路径或拥塞时,核心链路也可能成为瓶颈。
1.9 网络安全概述
早期互联网建立在相互信任的研究网络环境中,安全不是最初设计的中心目标。今天的互联网必须面对攻击者,因此安全问题贯穿所有层次。
常见攻击
| 攻击 | 含义 | 例子 |
|---|---|---|
| 分组嗅探 | 攻击者读取经过共享介质或被攻陷链路的分组 | 在开放 WiFi 中捕获明文密码 |
| IP 欺骗 | 发送带伪造源 IP 地址的分组 | 冒充其他主机发包 |
| DoS / DDoS | 用大量伪造或恶意流量耗尽服务器、带宽或网络资源 | 僵尸网络同时攻击目标服务器 |
分组嗅探在广播媒体和无线网络中尤其直观;IP 欺骗说明“看到源地址不等于确认身份”;DoS 攻击说明可用性也是安全目标。
防御原则
| 防御 | 目标 |
|---|---|
| 身份认证 | 证明通信实体确实是它声称的身份 |
| 机密性 | 通过加密防止内容被窃听 |
| 完整性检查 | 检测数据是否被篡改 |
| 访问限制 | 通过密码、VPN、访问控制策略限制资源使用 |
| 防火墙 | 过滤进入或离开网络的分组,限制发送者、接收者或应用 |
| DoS 检测和响应 | 识别异常流量并缓解资源耗尽攻击 |
安全不是某一层单独解决的问题。应用层可以使用 TLS,传输层和网络层可以参与认证和过滤,链路层可以提供无线加密,网络管理系统也需要安全控制。
1.10 协议分层、服务模型和封装
互联网是复杂系统:有主机、路由器、链路、应用、协议、硬件和软件。分层是组织复杂系统的主要方法。
为什么分层
分层的价值在于:
- 显式结构让系统各部分关系清楚。
- 每层只需要关心本层服务和相邻层接口。
- 某一层内部实现可以变化,而尽量不影响其他层。
- 便于学习、设计、调试和标准化。
类比航空旅行:购票、托运行李、登机口、跑道、航线各自提供服务,并依赖下一层服务完成端到端旅行。
分层也有代价:层间信息隔离可能造成效率损失,某些功能可能在多层重复实现,例如错误检测。
TCP/IP 五层模型
| 层次 | 数据单位 | 主要功能 | 典型协议 / 技术 |
|---|---|---|---|
| 应用层 | message 报文 | 支持网络应用 | HTTP、SMTP、IMAP、DNS |
| 传输层 | segment 报文段 | 进程到进程通信 | TCP、UDP |
| 网络层 | datagram 数据报 | 主机到主机路由和转发 | IP、路由协议 |
| 链路层 | frame 帧 | 相邻节点之间传输 | Ethernet、WiFi、PPP |
| 物理层 | bit 比特 | 在介质上传输比特 | 光纤、铜线、无线电 |
后续章节基本按自顶向下顺序展开:应用层、传输层、网络层数据平面、网络层控制平面、链路层。
服务、协议和接口
需要区分三个概念:
| 概念 | 说明 |
|---|---|
| 服务 | 下层向上层提供什么能力 |
| 协议 | 同层实体之间如何交换报文来实现服务 |
| 接口 | 上层如何调用下层服务 |
例如,传输层向应用层提供进程间通信服务;TCP 协议定义发送方和接收方 TCP 实体如何用序号、确认、重传等机制实现可靠字节流;socket API 是应用使用传输层服务的接口。
封装
发送端数据向下传递时,每一层都会添加本层首部;接收端数据向上传递时,每一层会解析并去掉本层首部。
text
应用层 message: M
传输层 segment: Ht | M
网络层 datagram: Hn | Ht | M
链路层 frame: Hl | Hn | Ht | M
物理层 bits: 比特流各层首部服务于本层协议:
| 首部 | 用途示例 |
|---|---|
| 传输层首部 | 源/目的端口、序号、确认号、校验和 |
| 网络层首部 | 源/目的 IP 地址、TTL、协议号 |
| 链路层首部 | 源/目的 MAC 地址、类型、错误检测字段 |
路由器通常只处理到网络层:它接收链路层帧,取出 IP 数据报,查看网络层首部并选择下一跳,再重新封装成新的链路层帧发出。端系统才会一路处理到传输层和应用层。
OSI 七层模型
OSI 参考模型比 TCP/IP 五层模型多出表示层和会话层。
| OSI 层 | 说明 |
|---|---|
| 表示层 | 数据表示、加密、压缩、机器相关格式转换 |
| 会话层 | 同步、检查点、会话恢复 |
互联网协议栈没有把这两层作为独立通用层。如果应用需要这些功能,通常在应用层或应用库中实现,例如 TLS、序列化格式、应用会话管理。
1.11 互联网发展史
互联网的发展可以粗略分为几个阶段。
| 时间 | 事件 |
|---|---|
| 1961-1972 | 早期分组交换理论和 ARPAnet 诞生,Kleinrock 排队理论、Baran 分组交换思想,1969 年第一个 ARPAnet 节点运行 |
| 1972-1980 | 网络互联思想形成,ALOHAnet、Ethernet 出现,Cerf 和 Kahn 提出互联网体系结构思想 |
| 1980-1990 | TCP/IP 部署,SMTP、DNS、FTP 等协议定义,1988 年 TCP 拥塞控制出现 |
| 1990-2000s | ARPAnet 退役,NSFNET 商业化限制解除,Web、HTML、HTTP、浏览器和商业互联网快速发展 |
| 2005 至今 | 宽带、移动互联网、云计算、内容提供商网络、SDN、4G/5G 和大规模数据中心发展 |
Cerf 和 Kahn 的互联网设计原则对今天的互联网仍有影响:
- 极简主义和自治:互联网络内部不需要为了接入互联网而完全改变。
- 尽力而为服务模型。
- 无状态路由器。
- 分散控制。
这些原则使互联网可以在异构网络之间扩展,但也把可靠性、拥塞控制和安全等问题更多交给端系统和上层协议处理。
1.12 本章小结
本章的核心问题是:互联网作为一个由端系统、接入网、网络核心和协议组成的全球系统,如何提供端到端通信?
需要掌握的主线:
- 互联网可以从组成部件和服务能力两个角度理解。
- 协议规定报文格式、交换顺序和事件动作。
- 网络边缘由端系统组成,应用运行在端系统上,服务器通常部署在数据中心。
- 接入网把端系统连接到边缘路由器,包括 HFC、DSL、FTTP、以太网、WiFi、蜂窝网络和数据中心网络。
- 物理介质分为引导型和非引导型,光纤、铜线、同轴电缆、无线电各有不同速率、距离和抗干扰特性。
- 网络核心使用分组交换,路由负责全局路径选择,转发负责单台路由器本地输出端口选择。
- 存储转发要求路由器完整接收分组后再转发;拥塞会造成排队和丢包。
- 电路交换预留资源,性能稳定但利用率低;分组交换按需共享资源,更适合突发数据。
- 互联网是网络的网络,由接入 ISP、区域 ISP、Tier-1 ISP、IXP 和内容提供商网络共同构成。
- 节点时延包括处理、排队、传输和传播;吞吐量受瓶颈链路限制。
- 安全问题包括嗅探、欺骗和 DoS,防御依赖认证、加密、完整性、访问控制和防火墙。
- 分层模型通过服务、协议和接口组织复杂系统;封装让每层添加并解释自己的首部。
下一章进入应用层:在互联网提供的基础通信服务之上,Web、邮件、DNS、P2P 和视频流等应用如何组织进程通信和协议交互。