Skip to content
NotesComputer Networking

自顶向下的计算机网络笔记,覆盖应用层、传输层、网络层与链路层。

第一章:计算机网络和因特网 ​

第一章的作用是建立全局视角:互联网由哪些部件组成,端系统如何接入网络,网络核心如何转发分组,性能为什么会受到时延、丢包和吞吐量限制,以及为什么协议要分层。本章不追求每个协议的细节,而是为后续应用层、传输层、网络层和链路层建立共同词汇。

目录 ​


1.1 互联网是什么 ​

理解互联网可以从两个角度入手:一个是具体设备和链路组成的“螺母和螺栓”视角,另一个是为应用提供通信服务的“服务”视角。

螺母和螺栓视角 ​

互联网由大量端系统、链路、交换设备和协议组成。

组成部分含义
主机 / 端系统运行网络应用的设备,如手机、笔记本、服务器、传感器、摄像头
通信链路承载比特传输的物理或无线通道,如光纤、铜线、无线电、卫星
分组交换设备转发数据块的设备,主要包括路由器和链路层交换机
协议控制报文格式、顺序和动作的规则,如 HTTP、TCP、IP、WiFi、Ethernet
网络由一个组织管理的一组设备、链路和路由器

端系统位于互联网边缘,运行 Web、邮件、视频、游戏、社交媒体等应用。网络核心由互连的路由器组成,负责把分组从源端系统送到目的端系统。

互联网也可以称为 网络的网络:家庭网络、企业网络、移动网络、数据中心网络、内容提供商网络、区域 ISP、国家或全球 ISP 互联在一起,形成全球互联网。

互联网标准 ​

互联网不是由单个公司定义的封闭系统,而是依靠开放标准协调互操作。

名称含义
IETFInternet Engineering Task Force,互联网工程任务组
RFCRequest 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)。

发送过程可以理解为:

  1. 应用产生消息。
  2. 主机把消息切成一个或多个分组。
  3. 每个分组长度为 L bit。
  4. 主机以链路传输速率 R bps 把分组推入接入链路。

一个分组被推入链路所需的时间是传输时延:

dtrans=LR

这里的 R 也叫链路传输速率、链路容量或带宽。注意:带宽越高,只表示把比特推入链路更快,不表示比特在介质中传播得更快。

1.4 接入网和物理介质 ​

接入网 (access network) 解决的问题是:端系统如何连接到第一个边缘路由器?

常见接入环境包括住宅接入、机构接入、移动接入和数据中心网络。

住宅接入 ​

技术说明特点
HFCHybrid Fiber Coax,混合光纤同轴电缆多个家庭共享电缆分配网络,通常下行高于上行
DSLDigital Subscriber Line,数字用户线使用已有电话线连接中心局 DSLAM,数据和语音使用不同频段
FTTPFiber 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):路由器必须完整接收一个分组后,才能把该分组的第一个比特发送到下一条链路。

若分组长度为 L bit,链路速率为 R bps,则每条链路上的传输时延是:

LR

如果一个分组经过 N 条速率相同、忽略传播和排队的链路,端到端传输时延大致为:

N⋅LR

如果有多个分组连续发送,后续分组可以像流水线一样在不同链路上同时传输,但每台路由器仍然需要先完整收到某个分组再转发该分组。

排队与丢包 ​

当分组到达输出链路的速率超过该链路发送能力时,分组会在输出队列中等待。

text
输入分组 -> 路由器缓冲区/队列 -> 输出链路

如果短时间拥塞,队列变长,排队时延增加;如果缓冲区被填满,后续到达的分组会被丢弃,这就是丢包。

分组交换的核心代价就在这里:资源按需共享,利用率高,但拥塞时会产生排队时延和丢包。

1.6 电路交换与分组交换 ​

电路交换 (circuit switching) 是分组交换的主要对照。

电路交换 ​

电路交换在通信开始前,为源和目的之间的连接预留端到端资源。

特点说明
专用资源连接建立后,链路上的某部分资源只给该连接使用
性能稳定类似“保证带宽”,适合传统电话业务
资源可能空闲如果连接暂时不发送数据,预留资源也不能被别人使用
需要建立连接通信前需要呼叫建立过程

电路交换常用两种复用方式:

方式含义
FDMFrequency Division Multiplexing,频分复用,把频率划分为多个频带,每个连接占用一个频带
TDMTime Division Multiplexing,时分复用,把时间划分为周期性时隙,每个连接占用固定时隙

分组交换 ​

分组交换不为每个通信会话预先保留资源,而是让分组按需使用链路。

优点代价
适合突发数据,用户不活跃时不会占用资源可能发生排队、拥塞和丢包
统计复用提高资源利用率需要可靠传输、拥塞控制等协议机制
不需要传统电路呼叫建立时延和吞吐量不如电路交换那样固定

课件中的典型例子:

  • 链路速率为 1 Gbps。
  • 每个用户活跃时需要 100 Mbps。
  • 每个用户只有 10% 时间活跃。

在电路交换下,最多只能固定支持 10 个用户;在分组交换下,可以支持更多用户,因为并不是所有用户都会同时活跃。分组交换依赖统计复用,但如果同时活跃用户过多,就会拥塞。

结论不是“分组交换在所有场景绝对更好”,而是:互联网业务通常突发性强,分组交换更适合大规模共享网络;为了在拥塞时仍然工作,需要后续章节中的可靠传输、流量控制和拥塞控制。

1.7 互联网结构:网络的网络 ​

主机通常不是直接连接到全球所有主机,而是先连接到接入 ISP。接入 ISP 再通过更大的区域网络、全球 ISP、互联网交换点和内容提供商网络互联。

互联网结构的核心问题是:数以百万计的接入网络如何互联,使任意两个端系统可以交换分组?

为什么不能全互连 ​

如果每个接入 ISP 都直接连接到其他所有接入 ISP,连接数量会按 O(N2) 增长,规模上不可行。

因此互联网演化出层次化和商业驱动的结构。

典型组成 ​

组成作用
接入 ISP把家庭、企业、移动用户接入互联网
区域 ISP汇聚多个接入网络,把它们连接到更大范围网络
Tier-1 ISP具有国家或全球覆盖的大型骨干网络
IXPInternet Exchange Point,互联网交换中心,不同网络在此对等互联
内容提供商网络Google、Microsoft、Akamai、Netflix 等自建网络,连接数据中心并靠近用户

内容提供商自建网络的动机是:绕开部分传统层次结构,把内容更靠近终端用户,降低时延、提升吞吐,并减轻对上游 ISP 的依赖。

经济和策略驱动 ​

互联网结构不仅是技术问题,也受商业关系和国家政策影响。

常见关系包括:

  • 客户 ISP 向提供商 ISP 付费获得全球可达性。
  • 大型网络之间通过 IXP 或私有互联进行对等连接。
  • 内容提供商把服务器或缓存部署到靠近用户的位置。

后续第五章的 BGP 会进一步解释 AS 间如何通过策略和路径属性决定跨域路由。

1.8 时延、丢包和吞吐量 ​

网络性能主要由时延、丢包和吞吐量描述。

四种节点时延 ​

一个分组经过路由器时,节点时延可以分成四部分:

dnodal=dproc+dqueue+dtrans+dprop
时延含义主要取决于
处理时延 dproc检查位错误、解析首部、确定输出链路路由器处理能力
排队时延 dqueue在输出队列等待发送拥塞程度、队列长度
传输时延 dtrans把分组所有 bit 推入链路所需时间分组长度 L、链路速率 R
传播时延 dprop比特在物理链路上传播所需时间链路距离 d、传播速度 s

传输时延和传播时延是两个不同概念:

dtrans=LRdprop=ds

传输时延像“收费站把车一辆辆放上高速”的时间;传播时延像“车在高速路上跑到下一站”的时间。提高链路带宽会降低传输时延,但不一定降低传播时延。

排队时延和流量强度 ​

设:

  • a:平均分组到达率,单位 packet/s。
  • L:平均分组长度,单位 bit。
  • R:输出链路速率,单位 bit/s。

则流量强度为:

LaR
流量强度含义
La/R≈0到达负载远小于服务能力,平均排队时延很小
La/R→1链路接近满负荷,平均排队时延迅速增大
La/R>1长期到达工作量超过服务能力,队列会持续增长并导致丢包

排队时延通常最难预测,因为它取决于瞬时流量突发和其他用户行为。

traceroute ​

traceroute 用于观察从源主机到目的主机路径上的路由器和往返时延。它的基本思想是:

  1. 发送 TTL 为 1 的探测包,第 1 跳路由器让 TTL 变为 0,丢弃分组并返回 ICMP 报文。
  2. 发送 TTL 为 2 的探测包,第 2 跳路由器返回 ICMP 报文。
  3. 依次增加 TTL,就能观察路径上的每一跳。
  4. 每个 TTL 通常发送多个探测包,以测量往返时间。

如果输出中出现 *,通常表示探测包丢失、ICMP 回复丢失,或某个路由器不返回相关 ICMP 报文。

丢包 ​

路由器缓冲区容量有限。若分组到达时队列已经满,分组会被丢弃。

丢失的分组可能有三种后续命运:

  • 由前一个节点在链路层重传。
  • 由源端系统的传输层重传,例如 TCP。
  • 不重传,例如某些 UDP 应用可以容忍丢包。

因此,IP 层本身是尽力而为服务,不保证可靠交付;可靠性通常由传输层或应用层补足。

吞吐量 ​

吞吐量 (throughput) 是比特从发送方到接收方的速率。

类型含义
瞬时吞吐量某一时刻的传输速率
平均吞吐量一段较长时间内的平均传输速率

若服务器接入链路速率为 Rs,客户端接入链路速率为 Rc,路径中没有其他瓶颈,则端到端吞吐量大致为:

min(Rs,Rc)

限制端到端吞吐量的链路称为瓶颈链路。

如果 10 条连接公平共享一条速率为 R 的核心瓶颈链路,并且服务器、客户端接入速率分别是 Rs、Rc,则每条连接的吞吐量近似为:

min(Rs,Rc,R10)

现实中,接入链路经常是瓶颈,但在热点服务、跨运营商路径或拥塞时,核心链路也可能成为瓶颈。

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:   比特流

各层首部服务于本层协议:

首部用途示例
传输层首部 Ht源/目的端口、序号、确认号、校验和
网络层首部 Hn源/目的 IP 地址、TTL、协议号
链路层首部 Hl源/目的 MAC 地址、类型、错误检测字段

路由器通常只处理到网络层:它接收链路层帧,取出 IP 数据报,查看网络层首部并选择下一跳,再重新封装成新的链路层帧发出。端系统才会一路处理到传输层和应用层。

OSI 七层模型 ​

OSI 参考模型比 TCP/IP 五层模型多出表示层和会话层。

OSI 层说明
表示层数据表示、加密、压缩、机器相关格式转换
会话层同步、检查点、会话恢复

互联网协议栈没有把这两层作为独立通用层。如果应用需要这些功能,通常在应用层或应用库中实现,例如 TLS、序列化格式、应用会话管理。

1.11 互联网发展史 ​

互联网的发展可以粗略分为几个阶段。

时间事件
1961-1972早期分组交换理论和 ARPAnet 诞生,Kleinrock 排队理论、Baran 分组交换思想,1969 年第一个 ARPAnet 节点运行
1972-1980网络互联思想形成,ALOHAnet、Ethernet 出现,Cerf 和 Kahn 提出互联网体系结构思想
1980-1990TCP/IP 部署,SMTP、DNS、FTP 等协议定义,1988 年 TCP 拥塞控制出现
1990-2000sARPAnet 退役,NSFNET 商业化限制解除,Web、HTML、HTTP、浏览器和商业互联网快速发展
2005 至今宽带、移动互联网、云计算、内容提供商网络、SDN、4G/5G 和大规模数据中心发展

Cerf 和 Kahn 的互联网设计原则对今天的互联网仍有影响:

  • 极简主义和自治:互联网络内部不需要为了接入互联网而完全改变。
  • 尽力而为服务模型。
  • 无状态路由器。
  • 分散控制。

这些原则使互联网可以在异构网络之间扩展,但也把可靠性、拥塞控制和安全等问题更多交给端系统和上层协议处理。

1.12 本章小结 ​

本章的核心问题是:互联网作为一个由端系统、接入网、网络核心和协议组成的全球系统,如何提供端到端通信?

需要掌握的主线:

  1. 互联网可以从组成部件和服务能力两个角度理解。
  2. 协议规定报文格式、交换顺序和事件动作。
  3. 网络边缘由端系统组成,应用运行在端系统上,服务器通常部署在数据中心。
  4. 接入网把端系统连接到边缘路由器,包括 HFC、DSL、FTTP、以太网、WiFi、蜂窝网络和数据中心网络。
  5. 物理介质分为引导型和非引导型,光纤、铜线、同轴电缆、无线电各有不同速率、距离和抗干扰特性。
  6. 网络核心使用分组交换,路由负责全局路径选择,转发负责单台路由器本地输出端口选择。
  7. 存储转发要求路由器完整接收分组后再转发;拥塞会造成排队和丢包。
  8. 电路交换预留资源,性能稳定但利用率低;分组交换按需共享资源,更适合突发数据。
  9. 互联网是网络的网络,由接入 ISP、区域 ISP、Tier-1 ISP、IXP 和内容提供商网络共同构成。
  10. 节点时延包括处理、排队、传输和传播;吞吐量受瓶颈链路限制。
  11. 安全问题包括嗅探、欺骗和 DoS,防御依赖认证、加密、完整性、访问控制和防火墙。
  12. 分层模型通过服务、协议和接口组织复杂系统;封装让每层添加并解释自己的首部。

下一章进入应用层:在互联网提供的基础通信服务之上,Web、邮件、DNS、P2P 和视频流等应用如何组织进程通信和协议交互。