计算机网络与因特网

1.1 因特网是什么?

1.1.1 组成结构描述

  • 因特网连接了全球数十亿计算设备,包括传统计算机、服务器、智能手机、平板电脑和物联网设备。
  • 所有设备统称为“主机”或“终端系统”,2017年约有180亿设备接入,预计2022年达到285亿。
  • 网络通过通信链路和分组交换机将终端系统互联。
  • 数据传输时被分割为数据包,并添加头部信息。
  • 分组交换机主要包括路由器和链路层交换机,分别用于核心网络和接入网络。
  • 数据包在网络中经过的路径称为路由或路径。
  • Cisco预测到2022年全球IP流量将达到每年近5泽字节(Zettabytes)。
  • 网络服务提供商(ISP)提供多种接入方式,如宽带、局域网、移动无线等。
  • ISP之间通过国家和国际层级的上层ISP互连。
  • 因特网运行协议控制信息发送和接收,其中TCP和IP是最重要的两个协议。
  • 因特网标准由IETF制定,文档称为RFC(请求评论),定义了TCP、IP、HTTP、SMTP等协议。
  • IEEE 802委员会制定了以太网和WiFi等链路标准。

1.1.2 服务视角描述

  • 因特网可看作一个为分布式应用提供服务的基础设施。
  • 常见应用包括电子邮件、网页浏览、移动应用、实时交通地图、音乐/视频流、社交媒体、视频会议、多人游戏、基于位置的推荐系统等。
  • 应用程序运行在终端系统上,而非网络核心的分组交换机中。
  • 程序间的数据交换依赖于网络提供的服务接口——套接字(Socket)接口。
  • 类比邮政服务:程序需遵循特定规则(如封装数据、指定目标地址)才能让因特网正确传输数据。
  • 因特网提供多种服务供不同应用选择。

1.1.3 协议是什么?

image-20250712220647112
  • 协议定义了多个实体之间消息的格式、顺序及发送/接收消息时采取的动作。
  • 类比人类交流中的礼仪:问候语→回应→进一步沟通。
  • 如果通信双方使用不同协议,则无法正常交互。
  • 网络协议由硬件或软件组件实现,例如:
    • 物理链路上的比特流控制协议;
    • 拥塞控制协议;
    • 路由器中的路径选择协议。
  • 示例:访问Web服务器时的协议流程:
    • 客户端发送连接请求;
    • 服务器响应连接;
    • 客户端发送GET请求获取页面;
    • 服务器返回页面内容。
  • 协议的核心要素:消息格式、顺序、处理动作。

1.2 网络边缘

1.2.1 接入网络

家庭接入方式

  • DSL
    • 使用电话线进行数据传输;
    • 下行速率可达52 Mbps,上行16 Mbps;
    • 采用频分复用技术分离语音和数据信号;
    • 受距离限制,通常不超过5~10英里。
  • 电缆接入(Cable)
    • 利用有线电视网络基础设施;
    • 采用混合光纤同轴(HFC)架构;
    • 下行速率可达1.2 Gbps,上行100 Mbps;
    • 是共享广播介质,用户并发下载会影响实际速率;
    • 需要多路访问协议协调上传数据传输。
  • 光纤到户(FTTH)
    • 提供高达Gbps级别的接入速度;
    • 包括主动光网络(AON)和被动光网络(PON)两种架构;
    • PON示例:Verizon FiOS;
    • 使用ONT(光网络终端)和OLT(光线路终端)完成光电转换。
  • 5G固定无线接入
    • 不需要铺设物理线路;
    • 使用波束成形技术从基站向家庭发送数据;
    • 提供高速住宅接入;
    • 与WiFi路由器集成使用。

企业与家庭LAN接入

  • 以太网
    • 最常见的局域网技术;
    • 用户通过双绞铜线连接至以太网交换机;
    • 传输速率可达100 Mbps至10 Gbps。
  • WiFi(IEEE 802.11)
    • 无线局域网技术;
    • 支持高达100 Mbps以上的共享传输速率;
    • 广泛应用于大学、办公室、咖啡馆、家庭等场景;
    • 用户需靠近接入点(通常几十米范围内)。

移动广域无线接入

  • 3G / 4G LTE / 5G
    • 用于移动设备的数据通信;
    • 支持消息、照片分享、移动支付、视频流等功能;
    • 覆盖范围远大于WiFi(可达数十公里);
    • 5G提供更高带宽和更低延迟;
    • 第4代(4G)下载速率最高可达60 Mbps;
    • 第5代(5G)正在部署中,支持更高速率和大规模物联网接入。

1.2.2 物理媒体

引导型介质

  • 双绞线铜缆(Twisted Pair)
    • 成本最低、最常用的引导型传输介质;
    • 用于电话网络和以太网接入;
    • 支持10 Mbps至10 Gbps速率(取决于线径和距离);
    • Cat6a类电缆可在百米内实现10 Gbps。
  • 同轴电缆(Coaxial Cable)
    • 用于有线电视系统和互联网接入;
    • 支持高数据传输速率;
    • 可作为共享介质,多个终端系统共用一条电缆;
    • DOCSIS标准支持下行1.2 Gbps、上行100 Mbps。
  • 光纤(Fiber Optics)
    • 传输光脉冲表示比特;
    • 支持数十甚至数百Gbps的传输速率;
    • 抗电磁干扰、低信号衰减(可达100 km);
    • 适合长距离传输,广泛用于长途电话网和因特网骨干;
    • OC标准速率从51.8 Mbps至39.8 Gbps(OC-1至OC-768);
    • 成本较高,主要用于骨干网络和数据中心。

非引导型介质(无线)

  • 地面无线电频道
    • 无需物理布线;
    • 可穿透墙壁、支持移动接入;
    • 根据覆盖范围分为短距(几米)、局域(十至几百米)、广域(数十公里);
    • 存在路径损耗、阴影衰落、多径衰落和干扰问题;
    • 应用于蓝牙、WiFi、蜂窝网络等。
  • 卫星无线电频道
    • 通信卫星连接地球站;
    • 接收信号后通过转发器再生并重新发射;
    • 两类卫星:
      • 地球同步卫星(Geostationary):位于36,000 km高空,存在约280 ms传播延迟;
      • 低轨卫星(LEO):轨道高度较低,绕地运行,需多颗卫星实现连续覆盖;
    • 卫星链路常用于无DSL或有线接入的偏远地区;
    • LEO卫星未来可能用于互联网接入。## 1.3 网络核心

1.3.1 分组交换Packet Switching

路由器 必须接收到整个数据包之后,才能开始将它发送到下一个链路。也就是说,不能“边收边发”。

存储转发传输

image-20250712221524803
  • 数据包在发送前必须被完整接收。
  • 发送时间计算公式为 L/R(L 为数据包大小,R 为链路速率)。
  • 示例:源发送 3 个数据包时,总延迟为 4L/R。
解释

源主机有 3 个数据包,每个数据包大小为 L bits

每条链路的传输速率为 R bps (bits per second)

不考虑传播延迟(propagation delay)或排队、处理时间

使用存储转发(store-and-forward)方式进行传输

  1. 源开始发送数据包 1(大小为 L 位)
  2. 经过时间 L/R 秒后,源完成发送,路由器完全收到整个数据包
  3. 路由器这时才开始发送数据包 1
  4. 再经过 L/R 秒,目的主机收到这个数据包

👉 所以,总延迟为: \[ \text{总延迟} = \frac{L}{R} + \frac{L}{R} = \frac{2L}{R} \]


📦 多个数据包的流水传输(以 3 个为例)

  • 第 1 个数据包到达目的地的时间是 2L/R
  • 第 2 个数据包到达目的地的时间是 3L/R
  • 第 3 个数据包到达目的地的时间是 4L/R

为什么不是每个都 2L/R?因为数据包之间是流水线式重叠发送

  • 当路由器转发第 1 个数据包时,源可以开始发送第 2 个
  • 这种流水线效应减少了整体延迟
全部传完的时间 = 4L/R

排队延迟与丢包

image-20250712222003115
  • 输出缓冲区存储等待传输的数据包。

  • 延迟取决于网络拥塞程度。分组在缓冲区中等着被发送,这个等待时间是不确定且可变的,取决于网络的拥塞程度

  • 缓冲区满时会导致数据包丢失。

  • 类比银行排队或收费站等待。排队等候服务的顾客就像在缓冲区中的分组

    如果银行空间满了,新来的人就只能被拒绝(丢包)

转发表与路由协议

当一个 分组(packet) 到达路由器时,它并不知道接下来应该去哪个方向。这就像人在路口迷路一样,不知道该往哪个出口走。

🧠 解决办法:每个路由器都有一张“转发表(forwarding table)”来查路!

  • 每个终端系统有 IP 地址,路由器根据地址查找转发表。
  • 转发表映射目的地址到输出链路。是一个查找表,记录着:目标地址(或部分地址) → 哪条出链路(outbound link)
  • 问题:转发表是怎么设置的?路由器通过路由协议自动设置转发表。
  • 路由协议的作用是:
    • 交换网络中的路由信息
    • 计算从每个路由器到每个目的地的最佳路径
    • 然后自动设置好各个路由器的转发表
  • 路由协议决定最短路径并配置转发表。

1.3.2 电路交换

在网络中,有两种主要方式来传输数据:

方式 特点
电路交换(Circuit Switching) 在通信开始前建立连接并预留资源
分组交换(Packet Switching) 按需使用资源,无需事先预留

基本概念

  • 在通信会话期间预留资源(缓存、链路带宽)。

  • 区别于分组交换,资源不按需使用。

  • 类比餐厅预订:提前预留桌位 vs 到达后可能需要等待。

    • 餐厅类型 类比什么网络? 特点
      需要提前预订的餐厅 电路交换 虽然要提前打电话预约,但到了直接入座
      不需要预约的餐厅 分组交换 省事,但可能到了现场要排队等位

多路复用技术

  • 频分多路复用 (FDM)
    • 频率谱划分为多个频段。
    • 每个连接独占一个频段。
  • 时分多路复用 (TDM)
    • 时间划分为帧,每帧包含多个时隙。
    • 每个连接占用固定时隙。
    • 传输速率为帧率 × 每时隙比特数。

分组交换 vs 电路交换

  • 分组交换优势
    • 更高效共享传输容量。
    • 实现更简单、成本更低。
    • 支持突发流量。
  • 电路交换优势
    • 提供可预测的端到端延迟。
    • 适合实时服务(如电话、视频会议)。
  • 示例分析表明分组交换在统计上优于电路交换。

1.3.3 网络的网络结构

网络结构演进

  • 结构 1:所有接入 ISP 连接单一全球骨干 ISP。
  • 结构 2:多个全球骨干 ISP 竞争。
  • 结构 3:引入区域 ISP 和 Tier-1 ISP。
  • 结构 4:增加 PoP、多宿主、对等互联和 IXP。
  • 结构 5:加入内容提供商网络(如 Google)。

对等互联与 IXPs

  • 同级 ISP 可直接对等互联以减少费用。
  • 对等通常免结算费用。
  • 第三方建立 IXP 提供多个 ISP 的对等平台。
  • 全球已有超过 600 个 IXP。

内容提供商网络

  • 如 Google 自建私有网络,连接至较低层级 ISP。
  • 减少向高层 ISP 支付费用。
  • 更好控制服务交付质量。
  • 仍需连接至 Tier-1 ISP 以覆盖更多用户。

1.4 分组交换网络中的延迟、丢包与吞吐量

1.4.1 分组交换网络中的延迟概述

延迟类型

image-20250712223426654
  • 处理延迟 (dproc)
    • 检查数据包头部、错误检测。
    • 高速路由器中通常为微秒级。
  • 排队延迟 (dqueue)
    • 等待传输的时间。
    • 依赖流量强度和到达模式。
  • 传输延迟 (dtrans)
    • 将数据包推入链路所需时间。
    • 计算公式为 L/R。
  • 传播延迟 (dprop)
    • 比特从一个路由器传播到下一个的时间。
    • 与距离成正比,速度约为光速的 2/3。

总节点延迟公式

  • dnodal = dproc + dqueue + dtrans + dprop

类比理解

  • 高速公路类比:
    • 路程 = 传播延迟。
    • 收费站处理 = 传输延迟。
    • 车辆车队 = 数据包序列。

1.4.2 排队延迟与丢包

排队延迟特性

  • 随流量强度 La/R 变化。
  • 当 La/R > 1 时,队列无限增长,延迟趋近无穷。
  • 平均排队延迟随流量强度接近 1 而迅速上升。

丢包机制

  • 队列容量有限,满时丢弃新到达的数据包。
  • 用户视角表现为数据包进入网络但未到达目的地。
  • 丢包概率随流量强度增加而上升。

1.4.3 端到端延迟

总延迟计算

  • dend-end = N × (dproc + dtrans + dprop)
  • 扩展公式考虑异构延迟和平均排队延迟。

Traceroute 工具

  • 测量路径及各跳延迟。
  • 示例输出显示 14 个中间路由器及其往返延迟。
  • 可观察跨大西洋光纤链路带来的显著传播延迟。

1.4.4 网络吞吐量

定义与计算

  • 瞬时吞吐量:接收端每秒接收比特数。
  • 平均吞吐量:文件大小 F / 总传输时间 T。
  • 影响因素包括瓶颈链路速率、并发流量等。

示例分析

  • 两链路网络:吞吐量 = min{Rs, Rc}
  • N 条链路网络:吞吐量 = min{R1, R2, …, RN}
  • 核心网过载:若共享链路 R 为瓶颈,吞吐量 = R / 下载数量。

现实网络影响因素

  • 核心网通常高带宽,瓶颈常在接入网。
  • 多用户下载时共享链路可能导致吞吐下降。## 1.5 协议层次及其服务模型

1.5.1 分层架构

航空系统的类比

  • 将航空系统功能划分为多个层级,如购票、行李托运、登机口、起飞降落、航线调度等。
  • 每一层通过本层操作和下层服务实现特定功能,例如登机层使用跑道到跑道的运输服务完成乘客上下飞机。

网络协议的分层

  • 网络协议也采用分层结构,每层提供特定服务并依赖下层服务。
  • 分层优势:模块化设计便于更新与维护;改变某层实现不影响其他部分。
  • 缺点:可能重复实现底层功能(如链路层与端到端错误恢复);跨层信息需求破坏分层隔离。

1.5.2 因特网协议栈

五层模型

  • 应用层
    • 包含HTTP、SMTP、FTP等协议;
    • 提供Web请求、电子邮件、文件传输等功能;
    • DNS用于域名解析为IP地址。
  • 传输层
    • 使用TCP或UDP协议;
    • TCP提供可靠连接、流量控制、拥塞控制;
    • UDP提供无连接、不可靠传输。
  • 网络层(IP层)
    • 负责将数据报从源主机传送到目的主机;
    • IP协议定义数据报格式及路由器处理方式;
    • 包含多种路由协议决定路径。
  • 链路层 Link Layer:
    • 在相邻节点间传输帧;
    • 支持以太网、WiFi、DOCSIS等协议;
    • 不同链路可能使用不同链路层协议。
  • 物理层
    • 传输比特流;
    • 依赖具体传输介质(双绞线、光纤等);
    • Ethernet有多种物理层标准适配不同介质。

1.5.3 封装过程

  • 数据在发送端逐层封装,添加各层头部信息。
  • 应用层消息 → 传输层添加Ht生成段 → 网络层添加Hn生成数据报 → 链路层添加Hl生成帧。
  • 接收端逐层剥离头部,还原原始数据。
  • 类比:公司内部备忘录通过多层信封封装邮寄,接收方逐步拆封。

1.6 网络攻击

常见安全威胁

恶意软件感染

  • 网络上传输的数据可能包含病毒、蠕虫、木马等恶意程序;
  • 感染后可能导致文件删除、隐私窃取、加入僵尸网络;
  • 自我复制机制使传播速度呈指数级增长。

拒绝服务攻击(DoS/DDoS)

  • 漏洞攻击:向目标发送精心构造的数据包导致崩溃。
  • 带宽洪水攻击:发送大量数据包阻塞目标访问链路。
  • 连接洪水攻击:建立大量虚假TCP连接耗尽资源。
  • DDoS利用僵尸网络发起分布式攻击,更难检测与防御。

数据包嗅探

  • 在无线或广播环境中被动监听所有传输数据;
  • Wireshark等工具可轻松捕获敏感信息;
  • 加密是主要防御手段。

欺骗攻击

  • 构造虚假源地址的数据包进行伪装;
  • 可能误导路由器修改转发表;
  • 需要端到端身份验证机制防范。

1.7 计算机网络与因特网的发展历史

1.7.1 分组交换技术的诞生(1961–1972)

  • Leonard Kleinrock提出排队理论支持分组交换;
  • Paul Baran(Rand Institute)与Donald Davies(NPL)独立研究分组交换;
  • ARPAnet于1969年部署首个节点,成为因特网前身;
  • 1972年推出首个主机间通信协议NCP;
  • Ray Tomlinson发明电子邮件系统。

1.7.2 专用网络与互联网络(1972–1980)

  • 出现ALOHANet、Telenet、Cyclades等私有网络;
  • Cerf与Kahn提出互联网架构,开发TCP/IP协议;
  • TCP早期版本整合可靠传输与转发功能;
  • 后期分离出IP与UDP协议;
  • ALOHA协议启发以太网发展;
  • Metcalfe与Boggs开发以太网奠定局域网基础。

1.7.3 网络大爆发(1980–1990)

  • ARPAnet连接约200台主机,1990年全球因特网主机达10万;
  • BITNET、CSNET、NSFNET推动大学互联;
  • NSFNET主干速率从56kbps提升至1.5Mbps;
  • 1983年ARPAnet全面切换至TCP/IP;
  • Jacobson提出基于主机的拥塞控制机制;
  • DNS系统研发成功,实现域名到IP的映射;
  • 法国Minitel项目推广家庭数据网络,早于互联网普及。

1.7.4 因特网爆炸性发展(1990年代)

  • NSFNET解除商业用途限制,商业化进程开启;
  • WWW由Tim Berners-Lee在CERN发明,结合HTML、HTTP、浏览器、服务器四大要素;
  • Mosaic/Netscape浏览器推动Web普及;
  • 微软加入引发浏览器大战;
  • 电子商务、即时通讯、P2P文件共享成为“杀手级应用”;
  • 互联网泡沫破裂后,Google、Amazon、eBay等企业崛起。

1.7.5 新世纪的发展(2000年至今)

  • 宽带接入普及(DSL、FTTH、5G固定无线);
  • 视频流媒体(YouTube、Netflix)、视频会议(Skype、FaceTime)兴起;
  • 无线设备数量超过有线设备,智能手机推动移动互联网;
  • 社交网络(Facebook、Twitter、微信)构建人与人之间的大规模连接;
  • 大型云服务商(Google、Microsoft、阿里云)建设私有骨干网优化性能;
  • 云计算平台(AWS、Azure)提供弹性计算与存储服务。## 1.8 小结

网络组成与结构

  • 因特网是由硬件和软件组成的复杂网络系统。
  • 从网络边缘开始,介绍了终端系统(主机)、应用程序以及传输层提供的服务。
  • 接入网络中常见的链路层技术和物理媒体被详细探讨。
  • 深入到网络核心,分析了分组交换与电路交换两种基本数据传输方式,并比较了它们的优缺点。
  • 因特网是“网络的网络”,其层级结构由不同级别的ISP构成,这种结构支持因特网扩展至数千个网络。

核心网络概念

  • 分析了分组交换网络中的延迟、吞吐量和丢包原因。
  • 建立了传输延迟、传播延迟、排队延迟及吞吐量的定量模型。
  • 协议分层和服务模型是网络架构的关键原则。
  • 调查了当前因特网中普遍的安全攻击问题。
  • 简要回顾了计算机网络的发展历史。

学习路径与章节安排

本书路线图

  • 第2章至第6章为核心内容,围绕五层因特网协议栈的上四层展开:
    • 第2章:应用层
    • 第3章:传输层
    • 第4章:网络层(数据平面)
    • 第5章:网络层(控制平面)
    • 第6章:链路层与局域网
  • 第7章和第8章聚焦现代网络中的两个重要主题:
    • 第7章:无线与移动网络(包括WiFi、蓝牙、蜂窝网络等)
    • 第8章:网络安全(加密基础与安全应用)

教学方法说明

  • 采用自顶向下的教学方式,先学习应用层以理解所需网络服务,再向下探索其实现方式。
  • 提前讲解应用层有助于激发后续学习的兴趣与动机。

思维导图节点补充

作业与练习题概览

第1.1节

  • 主机与终端系统的定义与区别
  • 协议在外交关系中的类比解释
  • 协议标准化的重要性

第1.2节

  • 四种接入技术及其分类(家庭、企业、广域无线)
  • HFC的共享特性与冲突可能性
  • 不同地区的住宅接入技术比较

第1.3节

  • 分组交换网络中的端到端延迟计算
  • 电路交换与分组交换的优劣对比
  • ISP对等与IXP盈利机制
  • 内容提供商自建网络的原因(如Google)

第1.4节

  • 延迟组件分析(传输、传播、处理、排队)
  • 数据包传播时间与传输速率的关系
  • 吞吐量计算与文件传输时间估算

第1.5节

  • 协议分层任务分配与职责划分
  • 分层中可能存在的重复功能
  • 路由器、链路层交换机和主机处理的层次

第1.6节

  • 自我复制型恶意软件的概念
  • 僵尸网络构建与DDoS攻击原理
  • 中间人攻击(Trudy)可能造成的危害

问题与练习摘要

应用层协议设计

  • 设计ATM与银行主机之间的协议流程,包括验证、查询余额和取款操作。

延迟与吞吐量分析

  • 计算多个链路下的端到端延迟
  • 分析数据包在不同链路条件下的传播与传输行为
  • 探索实时语音传输(VoIP)的时间延迟因素

分组交换与电路交换比较

  • 用户共享链路时的并发使用概率计算
  • 使用二项分布模型分析同时传输用户数的概率分布

网络性能评估

  • 利用Little公式计算平均数据包到达率
  • Traceroute实验分析路由路径与延迟变化
  • Metcalfe定律验证:网络价值与用户数量平方关系

数据传输方式选择

  • 大文件传输场景下,比较通过高速链路传输与使用快递服务(如FedEx)的效率

卫星通信与带宽延迟积

  • 计算地球同步卫星链路的传播延迟与带宽延迟积
  • 探讨连续传输所需的最小图像大小

消息分段与网络性能优化

  • 比较有无消息分段时的数据传输时间
  • 分析消息分段的优势与潜在缺点
  • 寻找最优分段大小以最小化传输延迟

实际应用案例

  • Skype如何实现PC到普通电话的通话(结合因特网与电话网络)### Wireshark 实验

网络协议观察工具

  • Wireshark 是一种免费的网络封包嗅探器,可在 Windows、Linux/Unix 和 Mac 系统上运行。
  • 它可以捕获和显示计算机发送和接收的消息内容,包括各协议字段的详细信息。
  • 用户可通过图形界面查看捕获的数据包列表、选中数据包的头部细节以及其十六进制和 ASCII 内容。

实验目的与方法

  • 通过实际操作加深对网络协议的理解。
  • 观察两个协议实体之间交换消息的顺序,深入研究协议运作机制。
  • 在真实网络环境中(如因特网)运行应用程序并分析其使用的网络协议。
  • 学生将作为实验的一部分,亲自参与协议行为的触发与观察。

实验内容示例

  • 下载并安装 Wireshark 工具。
  • 使用浏览器访问网站并捕获浏览器与服务器之间的通信过程。
  • 深入了解 HTTP 协议交互流程。

访谈:Leonard Kleinrock 的互联网愿景

职业背景

  • Leonard Kleinrock 是加州大学洛杉矶分校(UCLA)的计算机科学教授。
  • 1961 年提出分组交换数学理论,成为互联网核心技术基础。
  • 1969 年 UCLA 的计算机成为首个互联网节点。

对互联网诞生的回忆

  • 第一条主机间消息为“Log”,但“g”导致斯坦福主机崩溃,最终消息变为“Lo!”。
  • 当时未意识到这一事件的历史意义,仅用于远程登录测试。
  • 早前曾预言未来可通过家庭或办公室设备轻松接入计算资源,如今已实现。

未来网络愿景

  • 基础设施方面
    • 无线和移动设备将在智能空间中广泛应用,形成“隐形互联网”。
    • 环境中的各种物体(桌椅、墙壁、穿戴设备等)将具备感知、处理和通信能力。
    • 房间能识别用户进入,环境可自然响应语音、手势甚至脑机接口指令。
  • 技术组件方面
    • 部署定制化智能软件代理,动态挖掘和处理数据。
    • 区块链技术提供不可篡改的分布式账本和信誉系统。
    • 自组织系统管理高速网络流量。
  • 应用与服务方面
    • 应用往往出人意料地快速涌现,如电子邮件、社交网络、短视频分享等。
    • 未来仍将持续出现“突如其来”的创新服务。

对学生的建议

  • 互联网是一个充满挑战与机遇的新领域。
  • 不要被现有技术所限制,应大胆想象并推动技术进步。

应用层

2.1 网络应用原理

2.1.1 网络应用架构

image-20250712230335689

客户端-服务器架构

  • 服务器始终在线,为多个客户端提供服务。
  • 客户端不直接通信,通过服务器中转。
  • 服务器具有固定、已知的IP地址。
  • 常见应用:Web、FTP、Telnet、电子邮件。

对等网络(P2P)架构

每个节点既可以作为客户端,也可以作为服务器. 也可以在一个通信会话中明确谁是 client、谁是 server:谁发起连接就是 client。

  • 最少或无依赖中心服务器。
  • 直接在对等主机之间通信。
  • 用户设备作为节点,自行上传和下载数据。
  • 自扩展性强,资源利用率高。
  • 成本低但面临安全与稳定性挑战。
  • 示例:BitTorrent 文件共享。

2.1.2 进程通信

在网络中运行的其实不是“程序”,而是“进程(process)”在相互通信:

  • 进程:在一个终端系统中运行的程序的实例(运行态的程序)。
情况 通信方式
两个进程在同一个主机上 使用 操作系统提供的进程间通信机制(如管道、消息队列、共享内存等)
两个进程在不同主机上 必须通过 计算机网络进行通信,也就是我们重点要学习的内容

进程与套接字

image-20250712230825414
  • 套接字就像进程用来收发消息的“门”。每个进程通过 socket 和网络打交道:
    • 要发消息:把消息通过 socket 发出去
    • 要收消息:通过 socket 接收
  • 网络应用由多台终端上的进程组成。
  • 进程间通过交换消息通信。
  • 消息通过“套接字”进出网络。在五层协议栈中,socket 位于应用层和传输层之间
  • 类比房屋与门:进程是房屋,套接字是门。

客户端与服务器进程定义

  • 发起通信的进程为客户端。
  • 等待连接的进程为服务器。
  • 在特定会话中,一个进程可以同时是客户端和服务器。

地址标识

  • 主机通过IP地址唯一标识。
  • 进程通过端口号识别。
  • 常见端口:
    • Web服务器:80;
    • 邮件服务器(SMTP):25;
    • 列表可在 iana.org 查看。

2.1.3 应用可获得的传输服务

可靠数据传输

  • 数据包可能在网络中丢失或损坏。
  • 重要应用(如邮件、文件传输)需要可靠传输。
  • TCP 提供可靠数据传输服务。
  • 多媒体应用容忍一定数据丢失。

吞吐量

  • 吞吐量指发送方到接收方的数据传输速率。
  • 传输协议可提供保证吞吐量的服务。
  • 实时语音/视频应用需最低吞吐量保障。
  • 弹性应用(如邮件)适应不同吞吐量。

时间延迟

  • 传输延迟影响实时应用体验。
  • 实时通信、多人游戏等要求严格时间控制。
  • 非实时应用偏好低延迟但无硬性限制。

安全性

  • 传输层可提供加密、完整性验证、身份认证。
  • TLS 是 TCP 的增强版,提供加密与安全服务。
  • UDP 不提供安全性,需上层实现。

2.1.4 Internet 提供的传输服务

TCP 特性

  • 面向连接:握手建立连接,全双工通信。
  • 可靠传输:确保数据完整有序到达。
  • 流量控制:防止接收方缓冲区溢出。
  • 拥塞控制:调节发送速率以避免网络拥塞。

UDP 特性

  • 无连接:无需握手,直接发送数据。
  • 不可靠传输:不保证数据送达或顺序。
  • 适用于实时应用(如语音通话、游戏)。
  • 缺乏拥塞控制,可能导致网络拥堵。

不提供的服务

  • 不保证吞吐量与时延。
  • 实时应用需自身设计机制应对不确定性。

2.1.5 应用层协议

  • 定义进程间消息格式、语义、交互规则。
  • 公共协议如 HTTP、SMTP、FTP。
  • 私有协议如 Skype 使用自有协议。
  • 协议是网络应用的重要组成部分,但非全部。

2.1.6 本书涵盖的应用

  • Web:HTTP 协议为核心。
  • 电子邮件:使用 SMTP、POP、IMAP。
  • DNS:域名解析服务。
  • 视频流:基于 DASH 或其他协议。
  • P2P 文件共享:如 BitTorrent。

2.2 Web 与 HTTP

2.2.1 HTTP 概述

image-20250716183657680
  • HTTP 是 Web 的应用层协议。
  • 客户端(浏览器)与服务器交互获取网页。
  • 使用 TCP 作为传输协议。
  • 无状态协议:每次请求独立处理。

2.2.2 HTTP 请求方法

  • GET:请求文档。
  • POST:提交数据。
  • HEAD、PUT、DELETE 等用于其他用途。

2.2.3 HTTP 响应状态码

  • 2xx:成功(如 200 OK)。
  • 3xx:重定向。
  • 4xx:客户端错误(如 404 Not Found)。
  • 5xx:服务器错误(如 500 Internal Server Error)。

2.2.4 非持续与持续连接

  • 非持续连接:每个请求单独建立 TCP 连接。

    HTTP1.0

  • 持续连接:复用单个 TCP 连接发送多个请求。

    HTTP1.1

    • 同一个TCP连接可以重复使用,传输多个对象。

      比如:HTML文件 + 多张图片可以通过同一个TCP连接发送,不需要重复建立连接。

image-20250716183747165
  • 服务器通过 Set-Cookie 头设置 Cookie。
  • 客户端在后续请求中携带 Cookie。
  • 用于用户跟踪、个性化内容等。

2.2.6 Web 缓存(代理服务器)

  • 缓存服务器保存副本,减少原始服务器负载。是一个网络实体,代替原始Web服务器处理HTTP请求。一旦配置了Web缓存,用户的所有HTTP请求会先发送到缓存服务器,而不是直接发送给原始服务器(Origin Server)。
  • 减少响应时间,节省带宽。
  • 使用 If-Modified-Since 验证缓存有效性。

内容分发网络(CDN)

  • CDN公司(如 Akamai、Limelight、Google、Netflix)在全球部署缓存节点;
  • 通过地理分布式缓存,把内容推送到离用户最近的缓存服务器;
  • 缓解源站压力、提高访问速度、降低延迟和成本。

2.2.7 条件 GET

  • 如果资源未修改,则返回 304 Not Modified。
  • 减少不必要的数据传输。## 2.2 Web 与 HTTP

条件 GET 流程

  • 缓存向服务器发送带 If-Modified-Since 的 GET 请求;
  • 若对象未修改,服务器返回 304 Not Modified;
  • 缓存继续使用本地副本;
  • 若对象已修改,服务器返回新对象。

2.2.7 HTTP/2

HTTP1.1使用持久连接(即一个 TCP 连接可以传输多个请求/响应)。

但会遇到 队头阻塞(Head-of-Line Blocking) 问题。

假设一个网页包含:

  • HTML 页面;
  • 一个大型视频;
  • 多个小图片。

如果使用一个 TCP 连接,视频会因为文件大而阻塞后面的小文件,导致页面渲染变慢。

HTTP/1.1 的方式:

  • 一条高速公路(TCP连接)一次只能运送一个包裹(请求/响应);
  • 下一个包裹必须等前一个完全送完;
  • 解决办法是修建多条平行的高速公路(多个 TCP 连接)来并发运送。

HTTP/2 的多路复用方式:

  • 一条高速公路上划分多条车道
  • 每条车道运送不同的包裹(请求/响应),彼此不干扰;
  • 包裹可以拆成小块,分时轮流走路段,然后在终点重新组合。

HTTP/2 的目标

  • 减少感知延迟;
  • 支持请求/响应多路复用;在一个通信通道(比如一条 TCP 连接)中同时传输多个独立的数据流的一种技术。
  • 提供请求优先级和服务器推送;
  • 高效压缩头部字段。

HTTP/2 的核心技术

  • 帧化(Framing)核心思想:每条 HTTP 消息被切分成 多个小的帧(frame),可以交错传输,不再按顺序排队。接收端重组帧后,恢复原始 HTTP 消息。
  • 优先级(Prioritization):按权重优先传输重要对象;每个请求可以被赋予一个 权重(1~256);客户端还可以设置请求之间的 依赖关系;服务器根据这些信息,决定哪个响应优先发送。
  • 服务器推送(Server Push):提前推送后续所需对象;服务器可在收到请求后主动推送其他资源服务器分析 HTML,提前将 JS、CSS、图片等资源发送过去;节省了等待客户端额外发起请求的时间,提高加载效率。
  • 二进制编码:提升解析效率,减少帧大小。

HTTP/2 的优势

  • 减少 TCP 连接数量;
  • 避免 Head-of-Line(HOL)阻塞;
  • 支持多路复用;
  • 提升网页加载速度。

2.2.8 HTTP/3

HTTP/3 的基础

  • HTTP/3 是基于 QUIC 协议的新一代 HTTP 协议,它比 HTTP/2 更快、更稳定,尤其在弱网或移动环境下表现更好。
  • 提供多路复用、流控、快速连接建立等特性。

HTTP/3 的特点

  • 许多 HTTP/2 功能由 QUIC 实现;
  • 设计更简洁高效;
  • 正在标准化中(截至 2020 年)。## 2.3 因特网中的电子邮件

2.3.1 SMTP

image-20250716185149041
  • SMTP 是因特网电子邮件的核心协议,用于从发送方邮件服务器向接收方邮件服务器传输邮件。
  • 使用 TCP 提供的可靠数据传输服务。
  • 邮件内容限制为 7 位 ASCII 编码,需对多媒体内容进行编码。
  • SMTP 客户端与服务器在发送邮件时直接通信,不使用中间邮件服务器。
  • 示例流程:
    • Alice 使用用户代理编写邮件并发送;
    • 邮件进入 Alice 邮件服务器的队列;
    • SMTP 客户端连接 Bob 邮件服务器并发送邮件;
    • Bob 邮件服务器接收邮件并存入其邮箱;
    • Bob 使用用户代理读取邮件。
    image-20250716185217457
  • SMTP 会话示例包含命令:HELO、MAIL FROM、RCPT TO、DATA、QUIT。
  • SMTP 使用持久连接,可复用 TCP 连接发送多个邮件。

2.3.2 邮件消息格式

  • 邮件消息由头部和正文组成,RFC 5322 定义了邮件格式。
  • 头部信息包括:
    • From: 发件人地址;
    • To: 收件人地址;
    • Subject: 邮件主题;
  • 头部与正文之间以空行分隔(CRLF.CRLF)。
  • 头部字段为可读文本格式,关键字后跟冒号和值。
  • 邮件正文为 ASCII 文本。

2.3.3 邮件访问协议

  • SMTP 用于邮件从发送方服务器到接收方服务器的传输。
  • 接收方使用 IMAP 或 HTTP 从邮件服务器获取邮件。
  • 用户代理无法使用 SMTP 拉取邮件,因为 SMTP 是推送协议。
  • Web 邮件或移动应用使用 HTTP 获取邮件。
  • 邮件客户端(如 Outlook)使用 IMAP 协议(RFC 3501)访问邮件。
  • IMAP 允许用户管理服务器上的邮件夹,支持移动、删除、标记等操作。IMAP / HTTP: 收邮件用(“拉”邮件);

2.4 DNS — 因特网的目录服务

2.4.1 DNS 提供的服务

  • 主要任务:将主机名解析为 IP 地址。
  • DNS 是一个分布式数据库,采用客户端-服务器架构。
  • DNS 协议运行在 UDP 上,使用端口 53。
  • 应用层协议如 HTTP、SMTP 依赖 DNS 进行域名解析。
  • 其他服务包括:
    • 主机别名:提供更易记的主机名;
    • 邮件服务器别名:使邮件地址更易记;
    • 负载均衡:通过 DNS 轮换 IP 地址实现服务器负载分担。

2.4.2 DNS 工作原理概述

image-20250716185754478
  • DNS 采用分布式、分层数据库结构。

  • 包括三类服务器:

    • 根 DNS 服务器:全球分布的 13 组服务器;
    • 顶级域(TLD)服务器:如 .com、.org、.edu;
    • 权威 DNS 服务器:为特定域名提供解析;
  • 本地 DNS 服务器(Local DNS Server):

    • 不属于 DNS 层级结构,但对 DNS 架构至关重要;
    • 通常由 ISP 提供;
    • 执行 DNS 查询代理功能;
  • DNS 查询流程示例:

    • 查询 www.amazon.com:
      • 它通过系统调用(如 gethostbyname())请求 DNS。
      • 你的电脑把请求交给本地的 本地 DNS 服务器(通常由你的运营商或学校提供)。
      • 本地 DNS 服务器如果不知道答案,就会向互联网上其他 DNS 服务器组成的层级结构发出查询。
    image-20250716185915812

用户主机 cse.nyu.edu 向其本地 DNS 服务器(如 dns.nyu.edu)发出请求;

本地服务器不知道,就向 根服务器 查询 .edu

根服务器返回:你去找 eduTLD 服务器

TLD 服务器说:你去找 umass.edu权威服务器(如 dns.umass.edu);

权威服务器再告诉你 gaia.cs.umass.edu 的 IP 地址。

2.4.3 DNS 缓存

DNS 服务器在收到一个查询的结果(即某个域名的 IP 地址)后,会临时把这个结果保存在本地内存中,以便下次快速回答同样的请求。

  • DNS 缓存用于提升性能、减少网络流量。
  • DNS 服务器缓存查询结果,设定 TTL(生存时间)后删除。
  • 本地 DNS 服务器缓存 TLD 地址后可跳过根服务器。
  • 大多数 DNS 查询通过缓存完成,根服务器仅处理极小部分请求。

2.4.4 DNS 记录与消息

DNS 记录类型

  • A 记录:主机名到 IPv4 地址映射;
  • AAAA 记录:主机名到 IPv6 地址映射;
  • NS 记录:域名到权威 DNS 服务器主机名;
  • CNAME 记录:别名主机名到规范主机名;
  • MX 记录:邮件服务器别名到规范主机名;
  • 示例:
    • (relay1.bar.foo.com, 145.37.93.126, A)
    • (foo.com, dns.foo.com, NS)
    • (foo.com, relay1.bar.foo.com, CNAME)
    • (foo.com, mail.bar.foo.com, MX)

DNS 消息格式

  • DNS 查询与响应消息格式相同:
    • 头部(12 字节)
      • 标识符(16 位):匹配请求与响应;
      • 标志位:查询/响应、权威、递归请求等;
      • 四个数量字段:问题数、答案记录数、授权记录数、附加信息数;
    • 问题部分
      • 查询名称与类型(如 A、MX);
    • 答案部分
      • 返回的资源记录(如 A、NS、CNAME、MX);
    • 授权部分
      • 其他权威服务器记录;
    • 附加信息部分
      • 辅助信息(如 MX 响应中包含邮件服务器的 A 记录);

2.4.5 向 DNS 数据库插入记录

  • 域名注册时需提供权威 DNS 服务器名称与 IP 地址;
  • 注册商将 NS 与 A 记录插入 TLD 服务器;
  • 示例:
    • 注册 networkutopia.com;
    • 插入 NS 记录:(networkutopia.com, dns1.networkutopia.com, NS);
    • 插入 A 记录:(dns1.networkutopia.com, 212.212.212.1, A);
  • 需在权威 DNS 服务器中配置 Web 服务器(A)与邮件服务器(MX)记录;
  • DNS 动态更新协议(RFC 2136、RFC 3007)允许动态修改 DNS 记录。

2.4.6 DNS 安全漏洞

  • DDoS 攻击:如 2002 年攻击根服务器、2016 年攻击 Dyn;
  • 中间人攻击:伪造 DNS 响应;
  • DNS 缓存投毒:欺骗 DNS 服务器缓存虚假记录;
  • DNSSEC:提供安全扩展,防止伪造与篡改;
  • DNSSEC 正在逐步部署,提升 DNS 安全性。## 2.5 对等文件分发

P2P 架构的可扩展性

客户端-服务器架构与 P2P 架构对比

image-20250716190513241
  • 客户端-服务器架构的分布时间
    • 服务器需为每个对等方传输一个文件副本,总传输量为 N × F
    • 分布时间下限:Dcs = max(NF/us, F/dmin)
    • 随着对等方数量增加,分布时间线性增长。服务器压力越来越大,扩展性差
  • P2P 架构的分布时间
    • 每个对等方可重新分配已接收的数据。不仅服务器上传,用户之间也互相上传和分发
    • 下限公式:DP2P = max(F/us, F/dmin, NF/(us + u1 + ... + uN))
    • 网络整体上传能力提升,分布时间更短。
    • 自我扩展性强,适合大规模文件分发。

BitTorrent 协议

  • 基本机制
    • 文件被分割为 256KB 的块。
    • 用户加入“种子”后逐步下载并上传数据块。
    • 可选择继续共享或离开网络。
  • 追踪器(Tracker)的作用
    • 维护当前参与的对等方列表。
    • 新用户加入时随机选取部分对等方提供连接信息。
  • 邻居节点管理
    • 建立 TCP 连接后定期更新可用数据块信息。
    • 使用“稀有优先”策略请求数据块,提高整体传播效率。
  • 流量激励机制(Tit-for-Tat)
    • 优先向上传速率高的邻居发送数据。
    • 每 30 秒随机选择新节点进行测试,促进公平交换。

2.6 视频流与内容分发网络

互联网视频基础

  • 视频特性
    • 数据率高,压缩后仍可达 100kbps 至 4Mbps。
    • 多版本编码支持不同带宽环境。
  • 性能指标
    • 平均端到端吞吐量是关键。
    • 必须满足视频码率需求以保证流畅播放。

HTTP 流媒体与 DASH

在最初的 HTTP 视频流传输中:

  1. 视频文件就像普通网页资源一样,被存储在服务器上,拥有一个固定的 URL。
  2. 用户想要观看视频时:
    • 客户端通过 TCP 建立连接,向该 URL 发送一个 HTTP GET 请求
    • 服务器会把整个视频文件作为响应内容返回。
  3. 客户端接收数据后,会将字节缓存在 应用缓冲区 中。
  4. 一旦缓冲区里的数据超过某个播放阈值,客户端开始播放视频:
    • 视频播放器定期从缓冲区中提取帧(frame),解码并显示。
    • 这使得边接收边播放成为可能。
  • HTTP 流媒体问题

    • 所有客户端接收相同编码,无法适应带宽变化。
  • DASH(动态自适应流媒体)

    将视频编码成多个不同版本

    • 每个版本对应一个不同的比特率(低画质、中画质、高画质)。
    • 每个版本的视频被切分成多个小段(chunk),每段持续几秒钟。

    客户端不再一次性请求整个视频,而是:

    • 先获取一个 manifest 文件(描述不同版本的 URL 和码率信息)。
    • 然后一个 chunk 一个 chunk 地用 HTTP GET 请求下载。

    客户端在每次请求 chunk 时,根据当前带宽和缓冲状态来决定选择哪个版本(高码率 or 低码率)。

内容分发网络(CDN)

  • 传统单数据中心方案的问题
    • 跨洲际链路可能成为瓶颈。
    • 同一内容重复传输浪费带宽。
    • 单点故障风险高。
  • CDN 设计理念
    • 全球部署多个服务器集群。
    • 缓存热门内容减少回源压力。
    • 根据地理位置和网络状况选择最佳 CDN 节点。
  • 两种部署策略
    • Enter Deep(深入接入网):
      • Akamai 方案,在 ISP 内部部署大量小型集群。
      • 更接近终端用户,降低延迟。
      • 管理复杂度高。
    • Bring Home(集中式):
      • Limelight 方案,在少量 IXP 地点部署大型集群。
      • 管理成本低但可能牺牲部分性能。
  • CDN 内容复制机制
    • 不强制推送所有内容。
    • 使用拉取策略,按需缓存热门内容。
    • 存储满时淘汰不常访问的内容。

2.7 套接字编程:创建网络应用

UDP 套接字编程

  • 客户端流程
    • 创建 UDP 套接字。
    • 输入文本并发送至服务器。
    • 接收处理后的响应并显示。
    • 关闭套接字。
  • 服务器流程
    • 创建绑定端口的 UDP 套接字。
    • 接收客户端请求。
    • 将文本转为大写后返回。
    • 循环等待下一个请求。
  • 代码示例
    • UDPClient.py:发送请求、接收响应。
    • UDPServer.py:监听端口、处理请求。

TCP 套接字编程

  • TCP 特性
    • 面向连接,确保数据有序可靠传输。
    • 客户端主动发起连接(三次握手)。
    • 服务器使用欢迎套接字接受连接,并创建专用连接套接字。
  • 客户端流程
    • 创建 TCP 套接字并连接服务器。
    • 发送文本请求。
    • 接收响应并关闭连接。
  • 服务器流程
    • 创建监听套接字并绑定端口。
    • 接受连接并创建专用套接字。
    • 处理请求后关闭连接套接字。
  • 代码示例
    • TCPClient.py:建立连接、发送/接收数据。
    • TCPServer.py:监听、接受连接、处理请求。

2.8 总结

  • P2P 架构优势
    • 自我扩展性强,适合大规模文件分发。
    • BitTorrent 采用稀有优先与 Tit-for-Tat 机制实现高效协作。
  • 视频流技术发展
    • DASH 支持自适应码率切换,提升用户体验。
    • CDN 通过全球部署优化内容分发效率。
  • 套接字编程基础
    • UDP 提供无连接通信,适用于实时场景。
    • TCP 提供可靠连接,适用于需要数据完整性的应用。
    • Python 示例展示了基本的客户端-服务器交互模型。## 2.8 总结与回顾

本章核心内容回顾

网络应用架构

  • 客户端-服务器架构
    • 被多数互联网应用采用。
    • 服务器始终在线,拥有固定IP地址。
    • 应用于HTTP、SMTP、DNS等协议。
  • P2P架构
    • 减少对中心服务器的依赖。
    • 对等节点之间直接通信。
    • 高扩展性,但存在安全和稳定性挑战。
    • 示例:BitTorrent 文件共享。

应用层协议

  • HTTP
    • Web的核心协议。
    • 使用TCP传输,无状态。
    • 支持GET、POST等请求方法及缓存机制(如条件GET)。
  • SMTP/POP/IMAP
    • 电子邮件相关协议。
    • SMTP用于邮件发送,POP/IMAP用于接收。
  • DNS
    • 域名解析服务。
    • 将域名转换为IP地址。
  • CDN与视频流
    • CDN提升视频分发效率。
    • DASH支持自适应码率流媒体。

Socket编程

  • TCP套接字
    • 面向连接,可靠数据传输。
    • 服务器需监听并接受连接,每个连接使用独立套接字。
  • UDP套接字
    • 无连接,不保证可靠性。
    • 更低延迟,适用于实时应用。

协议理解深化

  • 协议不仅定义消息格式和顺序,还包括行为逻辑。
  • TCP提供可靠传输、流量控制和拥塞控制。
  • UDP简单高效,适合对时延敏感的应用。
  • TLS在TCP基础上提供加密和安全性。

后续章节展望

  • 下一章将深入研究传输层协议(TCP/UDP)的工作原理。
  • 探讨如何实现可靠传输、流量控制和拥塞控制等机制。### Socket 编程实验

实验一:Web 服务器

  • 开发一个简单的 Web 服务器,能处理单个 HTTP 请求。
  • 创建连接套接字、接收请求、解析文件名、获取文件内容。
  • 构建 HTTP 响应并发送给客户端。
  • 若文件不存在,返回“404 Not Found”。
  • 提供骨架代码,需自行完成并测试。

实验二:UDP Pinger

  • 编写 UDP 客户端,向服务器发送 10 次 ping 请求。
  • 计算往返时延 RTT。
  • 设置超时为 1 秒,若未收到响应则认为丢失。
  • 服务器代码已提供,需编写客户端代码。

实验三:邮件客户端

  • 使用 SMTP 协议与邮件服务器建立 TCP 连接。
  • 发送电子邮件,并关闭连接。
  • 提供骨架代码,需自行完成并测试(如使用 Google 或学校邮箱服务器)。

实验四:Web 代理

  • 开发支持缓存的 Web 代理服务器。
  • 接收浏览器请求,向原始服务器转发。
  • 获取响应后返回给客户端。
  • 提供骨架代码,需完成并测试。

Wireshark 实验

Wireshark Lab: HTTP

  • 分析 HTTP GET/响应交互过程。
  • 观察消息格式、大文件传输、嵌入 URL 文件下载。
  • 研究持续连接与非持续连接差异。
  • 包含身份验证和安全性相关内容。
  • 完整实验说明请访问 www.pearsonhighered.com/cs-resources。

Wireshark Lab: DNS

  • 观察 DNS 客户端行为。
  • 发送域名查询请求,接收 IP 地址响应。
  • 理解 DNS 层级结构背后的递归与迭代查询机制。
  • 客户端仅与本地 DNS 服务器交互。
  • 完整实验说明请访问 www.pearsonhighered.com/cs-resources。

人物访谈:Tim Berners-Lee

背景介绍

  • 万维网发明者,提出 HTTP 协议原型。
  • 2016 年图灵奖获得者。
  • 现任牛津大学和 MIT 教授。

网络与物理的关系

  • 类似于从微观规则推导宏观世界,网络设计也是构建规则以实现大规模系统目标。
  • 一个是分析,一个是设计,但思维方式相似。

为何选择网络方向

  • 微处理器兴起时期,通信行业正转向基于微处理器的系统。
  • 电信领域充满创新机会。

工作中的挑战

  • 在不同意见之间找到共识,推动标准统一。
  • 需要深入理解各方立场,消除误解。

启发他的人

  • 父母早期参与计算机工作,激发兴趣。
  • CERN 的 Mike Sendall 和 Peggie Rimmer 给予指导和支持。
  • 受 Vanevar Bush、Doug Englebart、Ted Nelson 思想启发。

传输层

3.1 引言与传输层服务

3.1.1 传输层与网络层的关系

  • 传输层位于网络层之上,提供进程间的逻辑通信。
  • 网络层负责主机之间的逻辑通信。
  • 类比邮政系统:网络层负责房屋间通信,传输层负责屋内人员之间的信件传递。
  • 传输协议运行在终端系统中,不涉及中间路由器。
  • 多个传输协议可共存,如TCP和UDP。

3.1.2 Internet中的传输层概述

  • Internet提供两种传输协议:UDP(不可靠、无连接)和TCP(可靠、面向连接)。
  • UDP适用于实时应用(如语音通话),TCP适用于需可靠传输的应用(如网页浏览)。
  • TCP通过流量控制、序列号、确认应答等机制实现可靠传输。
  • UDP仅提供基本的多路复用/解复用和错误检测功能。
  • IP是网络层协议,提供尽力而为的服务,不保证数据完整性或顺序。
  • TCP/IP模型中,传输层扩展IP服务至进程级通信。

3.2 多路复用与解复用

传输层不会直接把数据给进程,而是先给一个中介“套接字”(socket)。

一台主机上可能有多个套接字,且每个套接字有唯一标识。

这个标识就是端口号(port number),用来区分不同的套接字。

3.2.1 基本概念

  • 多路复用:将来自不同套接字的数据封装成段,并添加头部信息。
  • 解复用:接收端根据段头字段将数据交付给正确的套接字。
  • 每个套接字由端口号唯一标识。
  • UDP和TCP使用源端口和目的端口字段进行解复用。

3.2.2 UDP多路复用与解复用

  • UDP套接字由二元组(目标IP地址 + 目标端口号)标识。
  • 不同源IP或端口但相同目标端口的UDP段被交付同一套接字。
  • 源端口用于返回响应时作为目标端口。

3.2.3 TCP多路复用与解复用

  • TCP套接字由四元组(源IP、源端口、目标IP、目标端口)标识。
  • 不同连接即使目标端口相同,也会分配不同套接字。
  • 服务器创建“欢迎套接字”监听连接请求,接受后生成新套接字处理每个连接。

3.2.4 安全相关:端口扫描

  • 攻击者利用端口扫描探测开放端口以定位潜在漏洞。
  • 工具nmap可用于TCP和UDP端口扫描。
  • 典型案例:SQL Server在端口1434存在缓冲区溢出漏洞,Slammer蠕虫曾借此攻击。

3.3 无连接传输:UDP

3.3.1 UDP段结构

  • 包含四个字段:源端口、目标端口、长度、校验和。
  • 长度字段表示整个UDP段(包括头部)的字节数。
  • 校验和用于错误检测。

3.3.2 UDP校验和

  • 发送方计算所有16位字的反码和,并放入校验和字段。
  • 接收方重新计算并验证是否全为1,若否,则说明有误。
  • 即使链路层已做错误检测,UDP仍需校验和确保端到端可靠性。

3.3.3 使用UDP的原因

  • 更细粒度的控制:应用可直接决定何时发送数据。
  • 无需建立连接:避免延迟,适合DNS、流媒体等。
  • 无连接状态:服务器可支持更多客户端。
  • 小头部开销(8字节 vs TCP的20字节)。

3.3.4 应用场景

  • DNS、SNMP、多媒体应用常使用UDP。
  • QUIC基于UDP实现可靠性,在应用层实现拥塞控制等特性。
  • 缺乏拥塞控制可能导致网络拥堵,需应用层自行实现。

3.4 可靠数据传输原理(RDT)

3.4.1 RDT基础

  • 数据可能丢失、损坏或乱序,需设计可靠传输机制。
  • 核心技术:确认应答(ACK)、重传、定时器、序列号。

3.4.2 逐步构建RDT方案

版本rdt1.0

  • 假设底层通信信道完全可靠(不会丢包、不丢比特、不乱序),协议非常简单。

版本rdt2.0

  • 现实中信道会有比特错误,传输的包可能被破坏.需要加入错误检测机制(例如校验和 checksum)来检测包是否被破坏
  • 使用停等协议(Stop-and-Wait),接收方发送ACK或NAK。需要接收方反馈给发送方:
    • ACK(肯定确认)表示包收到了且没错。
    • NAK(否定确认)表示包出错,请求重传。
  • 若NAK,发送方重传当前数据包。

版本rdt2.1

  • 改进版本,使用ACK+序列号应对重复包问题。
  • 发送方维护当前数据包副本,等待ACK后释放。
  • 接收方通过序列号判断是否为重复包。

版本rdt2.2

  • 仅使用ACK,用ACK携带期望下一次收到的序列号。当接收方收到损坏包或重复包时,不发送NAK,而是重发上一个正确包的ACK(也叫重复ACK)。
  • 减少NAK的使用,提高效率。这种机制简化了协议设计。

版本rdt3.0

  • 考虑丢包问题,引入超时重传机制。
  • 发送方设置定时器,超时则重传未确认的数据包。
  • 通过序列号识别重复包并丢弃。

3.5 面向连接的传输:TCP

image-20250716192622297

3.5.1 TCP概述

  • 提供可靠数据传输、流量控制、拥塞控制。
  • 面向字节流,而非消息流。
  • 每个TCP连接由四元组唯一标识。

3.5.2 TCP段结构

  • 包含源端口、目标端口、序列号、确认号、首部长度、标志位、窗口大小、校验和、选项等字段。
  • 序列号标识数据字节,而非段本身。
  • 确认号表示期望收到的下一个字节编号。

3.5.3 RTT估计与超时

  • 使用指数加权移动平均估算往返时间(RTT)。
  • 超时时间 = EstimatedRTT + 4 * DevRTT。

3.5.4 可靠数据传输

  • 问题: TCP连接的两端都会为连接预留一块接收缓冲区(receive buffer)。接收端接收到的数据正确且顺序到达后,会先存放到这个缓冲区中,等待应用程序读取。但应用程序读取数据的速度可能慢于数据到达的速度,导致缓冲区被写满,进而可能发生溢出。TCP通过流量控制机制防止发送方发送过快,导致接收方缓冲区溢出。换句话说,流量控制是一种速度匹配机制,使发送方的发送速度与接收方应用程序的读取速度相匹配。

  • 流量控制的工作流程

    1. 接收方 Host B 会在它发送给发送方 Host A 的每个TCP段中,填入当前的 rwnd 值,告知发送方缓冲区还剩多少空间。

    2. 发送方 Host A 维护两个变量:

      • LastByteSent:发送的最后一个字节序号
      • LastByteAcked:已被确认(ACK)的最后一个字节序号
    3. 发送方控制未被确认的数据量不超过接收窗口大小: \[ \text{LastByteSent} - \text{LastByteAcked} \leq \text{rwnd} \] 这样确保发送的数据不会超过接收方缓冲区剩余空间,避免溢出。

特殊情况:接收窗口为零

  • 当接收方缓冲区满了,rwnd = 0,它会告诉发送方当前没有空间了。
  • 如果接收方此时没有数据要发送给发送方,它也不会主动发送带有新的窗口大小的TCP段。
  • 结果就是发送方一直阻塞,无法知道缓冲区何时腾出空间。
  • 解决办法: TCP规定,发送方在接收到rwnd = 0后,仍应发送带有1字节数据的探测段(称为“窗口探测”),接收方确认后才会更新窗口大小,告诉发送方缓冲区已经有空间了。

3.5.6 连接管理

image-20250716193130180

三次握手

  • 客户端发送SYN段发起连接。
  • 服务器回应SYN-ACK。
  • 客户端发送ACK完成连接。

四次挥手

image-20250716193200952
  • 客户端发送FIN段关闭连接。
  • 服务器回应ACK。
  • 服务器发送FIN段关闭连接。
  • 客户端回应ACK,进入TIME_WAIT状态。

3.6 拥塞控制原理

3.6.1 拥塞原因与影响

  • 当发送速率超过网络承载能力时,导致队列溢出、丢包、延迟增加。
  • 无控制的UDP流量可能加剧拥塞。

3.6.2 拥塞控制方法

  • 端到端控制:依赖发送方调节速率(如TCP)。

    • 在这种方法中,网络层不会向传输层提供任何有关拥塞状态的直接反馈信息
    • 端系统(即发送方和接收方)必须通过观测网络行为(如:丢包、延迟增加)间接判断是否发生了拥塞。
    • TCP 就是采用这种方法。比如,如果发送方发现数据包丢失(比如发生超时或收到 3 个重复 ACK),就认为是网络发生了拥塞,会相应地降低发送速率(通过减小窗口)。
  • 网络辅助控制:路由器反馈拥塞信号(如ECN)。

    • 在这种方法中,路由器或网络设备会提供明确的拥塞反馈信息给发送方和/或接收方。

      反馈方式可能是:

      • 直接反馈:路由器发送一个阻塞包(choke packet)告知发送方“我这边拥塞了”。
      • 间接反馈:路由器在数据包中标记拥塞信息,这个包到达接收方后,由接收方再通知发送方。
    • 例如,在 ATM 网络中的 ABR(Available Bit Rate)机制,路由器会告诉主机它可以支持的最大发送速率。

    • 虽然 IP 和 TCP 默认采用端到端控制方式,但也可以在一些新机制中使用网络辅助控制。

3.7 TCP拥塞控制

3.7.1 控制机制

  • TCP 使用一个变量 cwnd(congestion window,拥塞窗口) 来限制发送方的发送速率。发送方未被确认的数据量必须小于 cwnd(忽略接收端窗口限制 rwnd 时)。

    • 发生丢包事件(loss event)表示可能发生了拥塞:
      • 超时重传
      • 收到三个重复的 ACK(即 fast retransmit)。

    TCP 把这类事件作为网络拥塞的指示,适当降低 cwnd

  • 初始慢启动阶段,cwnd呈指数增长。

  • 达到阈值后进入拥塞避免阶段,线性增长。

  • 收到3个重复ACK触发快速重传和快速恢复。

3.7.2 性能优化

  • TCP Tahoe:超时后cwnd重置为1。
    • 初始时 cwnd 设置为 1 MSS,发送一个分段等待 ACK。每收到一个 ACK,cwnd 增加 1 MSS。每个 RTT 内,发送速率 呈指数增长(1、2、4、8……)。
  • TCP Reno:区分超时和重复ACK,提升性能。

3.8 QUIC协议简介

  • 基于UDP实现可靠传输、拥塞控制和安全加密。
  • 在应用层实现,减少连接建立延迟。
  • 支持多路复用、前向纠错等功能。
  • 广泛应用于现代Web浏览器(如Google Chrome)。## 3.4 可靠数据传输原理

3.4.1 构建可靠数据传输协议

可靠通道上的数据传输:rdt1.0

  • 协议假设底层信道完全可靠。
  • 发送方接收上层数据并创建包含数据的包。
  • 接收方接收包,提取数据并传递给上层。
  • 没有差错检测或反馈机制。

带比特错误的通道:rdt2.0

  • 数据包可能被损坏,引入差错检测(校验和)。
  • 使用确认(ACK)和否定确认(NAK)进行反馈。
  • 出现错误时重传数据包。
  • 存在ACK/NAK损坏问题,需要进一步改进。

序列号与重复包处理:rdt2.1

  • 引入序列号解决重复包问题。
  • 发送方维护当前发送的数据包副本。
  • 接收方通过序列号判断是否为重复包。
  • 改进版本使用ACK携带期望的下一个序列号(rdt2.2)。

丢包通道:rdt3.0

  • 考虑数据包丢失问题,引入超时重传机制。
  • 发送方设置定时器,超时则重传未确认数据包。
  • 通过序列号识别并丢弃重复包。
  • 称为“交替位协议”,序列号在0和1之间切换。

3.4.2 流水线式可靠数据传输协议

性能问题

  • rdt3.0是停等协议,利用率极低。
  • 在高带宽、长延迟网络中性能差。
  • 示例:1 Gbps链路上传输1000字节数据包,利用率仅0.027%。

解决方案:流水线

  • 允许多个未确认包同时在管道中传输。
  • 提高发送端利用率,提升吞吐量。
  • 需要更大的序列号空间和缓冲区。

3.4.3 回退N步(Go-Back-N, GBN)

协议机制

  • 发送窗口大小为N,允许最多N个未确认包。
  • 接收方只按序接收,丢弃乱序包。
  • 累积确认机制,收到ACK表示之前所有包都已正确接收。
  • 出现超时时,发送方重传所有未确认包。

发送方事件与动作

  • 调用来自上层:检查窗口是否满,若不满则发送包并更新变量。
  • 收到ACK:视为累积确认,移动窗口基值。
  • 超时事件:重传所有未确认包,重启定时器。

接收方行为

  • 正确按序接收:发送ACK并交付数据。
  • 乱序接收:丢弃包并重新发送最近收到的ACK。

3.4.4 选择重传(Selective Repeat, SR)

协议机制

  • 发送窗口和接收窗口大小均为N。
  • 发送方只重传怀疑出错的包。
  • 接收方缓存乱序包,直到缺失包到达后一并交付。

发送方事件与动作

  • 上层数据到达:检查序列号是否在窗口内,若是则发送。
  • 超时:每个包都有独立定时器,超时重传特定包。
  • 收到ACK:标记该包已接收,若为窗口基值则前移窗口。

接收方事件与动作

  • 正确接收且在窗口内:发送ACK,若为窗口基值则交付连续包。
  • 正确接收但超出窗口:忽略或重新发送ACK。
  • 其他情况:丢弃包。

序列号空间限制

  • 若序列号范围过小,可能出现新旧包混淆。
  • 窗口大小必须小于等于序列号空间的一半。## 3.5 面向连接的传输:TCP

3.5.1 TCP 连接

  • TCP 是面向连接的协议,通信前需进行三次握手建立连接。
  • 连接是逻辑连接,状态信息仅存在于两端系统中。
  • 中间路由器不维护 TCP 连接状态。
  • 提供全双工服务,支持点对点通信。
  • 不支持多播(Multicast)。

3.5.2 TCP 段结构

  • 包含源端口、目的端口、序列号、确认号、首部长度、标志位、窗口大小、校验和等字段。
  • 序列号标识数据字节,而非段本身。
  • 确认号表示期望收到的下一个字节编号。
  • 标志位包括 ACK(确认)、SYN(同步)、FIN(结束)等。

3.5.3 RTT 估计与超时

  • 使用指数加权移动平均估算往返时间(RTT):
    • EstimatedRTT = 0.875 × EstimatedRTT + 0.125 × SampleRTT
  • DevRTT 表示 RTT 波动:
    • DevRTT = 0.75 × DevRTT + 0.25 × |SampleRTT – EstimatedRTT|
  • 超时时间计算公式:
    • TimeoutInterval = EstimatedRTT + 4 × DevRTT
  • 初始超时时间为 1 秒,超时后翻倍以避免重复丢包。

3.5.4 可靠数据传输

  • 基于 rdt 协议原理,使用确认应答、重传、定时器、序列号等机制实现可靠传输。
  • 发送方事件包括:
    • 数据接收自应用层;
    • 定时器超时;
    • 接收确认应答(ACK)。
  • 支持快速重传机制:收到三个重复 ACK 触发重传,无需等待超时。
  • TCP 实现了 GBN 和 SR 的混合机制。

3.5.5 流量控制

  • 接收方通过接收窗口(rwnd)告知发送方可接收的数据量。
  • 控制发送速率以防止接收缓冲区溢出。
  • rwnd 动态更新:
    • rwnd = RcvBuffer – (LastByteRcvd – LastByteRead)
  • 若 rwnd = 0,发送方仍会发送小数据段以探测接收方缓冲区是否释放。

3.5.6 TCP 连接管理

三次握手(连接建立)

  • 客户端发送 SYN 段(SYN=1,seq=x);
  • 服务器响应 SYN-ACK 段(SYN=1,seq=y,ack=x+1);
  • 客户端发送 ACK 段(SYN=0,seq=x+1,ack=y+1)。

四次挥手(连接关闭)

  • 客户端发送 FIN 段(FIN=1);
  • 服务器回应 ACK;
  • 服务器发送 FIN 段;
  • 客户端回应 ACK,进入 TIME_WAIT 状态;
  • TIME_WAIT 状态持续约 30 秒至 2 分钟,确保最后一个 ACK 正确送达。

安全相关:SYN 泛洪攻击

  • 攻击者发送大量 SYN 段而不完成握手,耗尽服务器资源。
  • 防御方式:SYN Cookie 技术,使用哈希函数生成初始序列号,不分配资源直至收到 ACK。## 3.6 拥塞控制原理

3.6.1 拥塞的原因与代价

场景1:两个发送端,无限缓冲的路由器

  • 主机A和B共享单跳链路。
  • 当发送速率超过R/2时,吞吐量受限于链路容量。
  • 接近链路容量时延迟显著增加。
  • 虽然吞吐量高,但延迟大是拥塞的成本之一。

场景2:两个发送端,有限缓冲的路由器

  • 路由器缓冲区有限,数据包可能丢失。
  • 发送方需重传丢失的数据包。
  • 重传导致网络资源浪费。
  • 过早超时重传会导致不必要的转发。

场景3:四个发送端,多跳路径,有限缓冲

  • 多跳路径中,中间路由器缓冲溢出导致丢包。
  • 数据包在第一跳被转发后若在第二跳丢弃,则第一跳资源浪费。
  • 高流量下,吞吐量随负载增加反而下降。

3.6.2 拥塞控制方法

端到端拥塞控制

  • 网络层不提供反馈,传输层根据丢包或延迟推断拥塞。
  • TCP采用此方式,通过超时或重复ACK判断拥塞并调整窗口大小。

网络辅助拥塞控制

  • 路由器向发送端显式反馈拥塞状态。
  • 可通过“拥塞位”或标记字段通知发送端。
  • ATM ABR、DECnet等架构使用此方式。

3.7 TCP拥塞控制

3.7.1 经典TCP拥塞控制

拥塞窗口(cwnd)机制

  • 发送速率受cwnd限制:发送速率 ≈ cwnd / RTT
  • 收到ACK表示网络正常,增加cwnd;发生丢包表示拥塞,减少cwnd。

慢启动(Slow Start)

  • 初始cwnd较小,每收到一个ACK增加1 MSS。
  • 吞吐量呈指数增长。
  • 在以下情况结束:
    • 超时 → cwnd重置为1,ssthresh设为原cwnd的一半。
    • cwnd达到ssthresh → 进入拥塞避免阶段。
    • 收到三个重复ACK → 进入快速恢复。

拥塞避免(Congestion Avoidance)

  • 增长更保守,每RTT线性增加1 MSS。
  • 收到三个重复ACK时,cwnd减半,ssthresh更新。
  • 超时处理与慢启动相同。

快速恢复(Fast Recovery)

  • 收到三个重复ACK后进入。
  • 每个重复ACK使cwnd增加1 MSS。
  • 收到新ACK后进入拥塞避免。
  • 若再次超时,则回到慢启动。

AIMD行为与性能

  • TCP Reno采用“加性增、乘性减”策略。
  • 形成锯齿状吞吐量变化。
  • 平均吞吐量约为 0.75 * W / RTT,其中W为最大窗口大小。

3.7.2 网络辅助ECN与基于延迟的拥塞控制

显式拥塞通知(ECN)

  • IP头部设置两比特用于拥塞指示。
  • 路由器检测拥塞并在IP头中标记ECN位。
  • 接收方通过ECE标志通知发送方拥塞。
  • 发送方响应:将cwnd减半,并设置CWR标志。

基于延迟的拥塞控制

TCP Vegas
  • 根据RTT测量判断是否拥塞。
  • 如果实际吞吐率低于无拥塞理论值 → 减少发送速率。
  • 目标:保持队列尽可能小以降低延迟。
BBR
  • 基于带宽和延迟建模。
  • 不依赖丢包作为拥塞信号。
  • Google部署于其内部网络和公共服务器。

3.7.3 公平性问题

TCP公平性

  • K个TCP连接共享带宽R时,每个连接应获得R/K带宽。
  • AIMD机制收敛至公平分配。
  • RTT较短的连接更快抢占带宽。

UDP与公平性

  • UDP应用不响应拥塞控制,可能导致不公平。
  • 视频会议、VoIP常使用UDP以维持恒定速率。

并行TCP连接

  • 使用多个TCP连接可获得更多带宽。
  • Web浏览器常开启多个连接提高下载速度。## 3.9 总结
  • 传输层协议可以提供从无附加功能的多路复用/解复用到可靠数据传输、延迟和带宽保证等多种服务。
  • 可靠数据传输可以通过确认、定时器、重传和序列号等机制实现,即使底层网络不可靠。
  • TCP是面向连接的可靠传输协议,包含流量控制、往返时间估计和连接管理等功能。
  • 拥塞控制对网络性能至关重要,TCP通过端到端机制进行拥塞控制,使用加性增加和乘性减少策略。
  • QUIC协议在应用层实现了许多传输层功能,如可靠数据传输、拥塞控制和安全加密。

家庭作业问题与思考题

简答题 R1-R19

  • R1:设计一个简单的传输层协议以将数据交付到目标进程;修改协议以提供返回地址。
  • R2:类比邮政系统,描述一种协议以在家庭成员间传递信件。
  • R3:TCP连接中,主机A发送至主机B的数据段源端口为x,目的端口为y,则反向通信中源端口为y,目的端口为x。
  • R4:开发者选择UDP而非TCP的原因包括更低的开销、更细粒度的控制以及无需建立连接。
  • R5:尽管UDP不提供拥塞控制,语音和视频仍常使用TCP,因其可避免因网络拥塞导致的丢包。
  • R6:应用可在UDP之上自行实现可靠数据传输机制。
  • R7:两个不同主机发送到同一UDP端口的数据会被导向同一个套接字,但可通过IP地址区分来源。
  • R8:持久连接下,不同客户端请求会通过不同套接字处理,但所有套接字都绑定到端口80。
  • R9:引入序列号是为了识别重复或乱序的数据段。
  • R10:引入定时器是为了检测数据段丢失并触发重传。
  • R11:即便往返延迟已知,仍需定时器以应对可能的数据段丢失。
  • R12-R13:Go-Back-N与Selective Repeat模拟实验,展示其在丢包场景下的行为差异。
  • R14:判断关于TCP特性的多个陈述是否正确。
  • R15:计算TCP段中的数据长度及确认号。
  • R16:Telnet示例中,在用户输入后发送的段数及其序列号与确认字段内容。
  • R17:两个TCP连接共享瓶颈链路时,TCP公平分配带宽,每条连接获得R/2速率。
  • R18:当定时器超时,ssthresh设置为原值的一半。
  • R19:TCP分割响应时间约为4×RTTFE + RTTBE + 处理时间。

练习题 P1-P58

  • P1:Telnet会话中,不同客户端与服务器之间的段使用的可能端口号。
  • P2:图3.5中服务器返回客户端的数据段端口号及IP地址。
  • P3-P5:关于UDP校验和的计算与验证。
  • P6-P13:可靠数据传输协议的设计与分析,包括rdt2.1和rdt3.0的死锁、ACK无序列号等问题。
  • P14-P16:NAK-only协议的优劣分析及提高通道利用率的方法。
  • P17-P19:有限状态机(FSM)设计用于交替数据传输。
  • P20-P21:错误控制协议设计,确保可靠传输与有序交付。
  • P22-P24:GBN与SR协议中序列号窗口与ACK字段分析。
  • P25-P26:UDP相比TCP的优势在于对发送数据和时机的更多控制。
  • P27-P30:TCP序列号、确认号、流量控制与SYN Cookie机制分析。
  • P31-P36:RTT估算、SampleRTT与EstimatedRTT的关系、TCP避免测量重传段的RTT原因。
  • P37-P40:比较GBN、SR与TCP的行为,分析超时与快速重传机制。
  • P41-P44:TCP拥塞控制算法(AIMD、AIAD)、窗口大小变化与吞吐量分析。
  • P45-P58:TCP Reno与CUBIC拥塞控制演化、缓冲区大小设定、连接同步化影响、改进TCP拥塞控制机制。### 编程实验

可靠传输协议实现

  • 实现传输层的发送与接收代码。
  • 两个版本:回退N步(GBN)和交替比特协议。
  • 在模拟环境运行,接口接近UNIX系统调用。
  • 包括定时器启动、中断处理等机制。

Wireshark 实验:探索 TCP

  • 使用浏览器访问服务器并捕获数据包。
  • 分析客户端与服务器端的 TCP 行为。
  • 研究流量控制、拥塞控制、重传、往返时间(RTT)估计等内容。

Wireshark 实验:探索 UDP

  • 抓包分析使用 UDP 的应用(如 DNS 或 Skype)。
  • 研究 UDP 段头部字段及校验和计算。

人物访谈:Van Jacobson

主要贡献

  • 提出TCP拥塞控制机制,推动互联网扩展。
  • 获得ACM SIGCOMM奖与IEEE Kobayashi奖。
  • 当前任职于Google,曾任Packet Design首席科学家、Cisco首席科学家等职。

关于挑战与问题定义

  • 强调“找到正确的问题”比寻找答案更重要。
  • 在研究TCP拥塞问题时,通过提问“为何TCP能工作”找到了突破口。
  • 发现了“确认时钟机制(ack clocking)”。

对网络未来的看法

  • 网络应从“主机间对话”转向“信息传播”的更大视角。
  • 当前网络技术在广播媒体、移动设备数据交换等方面效率低下。
  • CDN和缓存是必要手段,但缺乏理论支持。
  • 希望未来网络能融合Web背后的信息传播理念。

启发他的人

  • 理查德·费曼(Richard Feynman)对其影响深远。
  • 欣赏其将复杂理论简化的能力。

给学生的建议

  • 计算机与网络对社会影响巨大。
  • 网络本质是连接,学习网络有助于理解多领域知识。
  • 举例说明自然现象(如蚂蚁觅食、蜜蜂舞蹈)与协议设计的关系。
  • 鼓励学生广泛涉猎、追求影响力。

网络层:数据平面

4.1 网络层概述

4.1.1 转发与路由:数据平面与控制平面

  • 转发(Forwarding)
    • 路由器将输入链路上的数据包转发到合适的输出链路。
    • 数据平面功能,硬件实现,时间尺度为纳秒级。
    • 示例:根据数据包头字段查找转发表决定出口接口。
  • 路由(Routing)
    • 决定数据包从源主机到目的主机的路径。
    • 控制平面功能,软件实现,时间尺度为秒级。
    • 示例:使用路由算法计算最优路径。

转发表的作用

  • 根据数据包头部信息索引转发表,确定输出接口。
  • 示例:头部值为0110的数据包被转发至接口2。

控制平面的传统方式

  • 每个路由器内部运行路由协议,与其他路由器通信以生成转发表。
  • 需要路由协议交换路由信息。

SDN方式下的控制平面

  • 控制器远程计算并下发转发表至各路由器。
  • 路由器仅负责转发,控制器负责全局路由决策。
  • 支持开放、可编程网络管理。

4.1.2 网络服务模型

  • 网络层服务定义
    • 定义发送主机和接收主机之间的端到端数据包传输特性。
  • 可能提供的服务
    • 保证交付
    • 有界延迟的交付
    • 顺序交付
    • 最小带宽保障
    • 网络层加密安全服务
  • Internet的网络服务模型
    • 尽力而为服务(Best-effort service)
      • 不保证交付顺序、不保证交付本身、无延迟或带宽保障。
      • 实际中通过DASH等自适应协议和足够带宽满足多种应用需求。

4.2 路由器内部结构

4.2.1 输入端口处理

  • 执行物理层和链路层功能。
  • 查找转发表决定输出接口。
  • 使用高速互连总线进行数据包转发。

4.2.2 交换结构

  • 三种常见交换机制
    • 基于内存的交换
    • 基于总线的交换
    • 基于互联网络的交换(Crossbar Switch)

4.2.3 输出端口处理

  • 缓存排队数据包。
  • 调度机制决定转发顺序。
  • 处理拥塞情况下的丢包策略。

4.2.4 分组调度

  • 先进先出(FIFO)
  • 优先级队列(Priority Queueing)
  • 加权公平队列(WFQ)

4.3 传统IP转发

4.3.1 IP地址基础

  • IPv4地址:32位标识符,通常用点分十进制表示。
  • IPv6地址:128位标识符,通常用冒号十六进制表示。

4.3.2 子网划分

  • 划分网络前缀和主机部分。
  • CIDR(无类别域间路由)支持灵活子网划分。

4.3.3 转发表构建

  • 路由聚合减少表项数量。
  • 使用最长匹配原则选择下一跳。

4.3.4 IPv4协议

  • 版本、首部长度、服务类型、总长度、标识、标志、片偏移、TTL、协议、首部校验和、源和目标IP地址等字段。

4.3.5 IPv6协议

  • 更大地址空间、简化首部结构、支持扩展首部。
  • 移除了IPv4中的选项字段,采用扩展首部实现灵活性。

4.4 通用转发

4.4.1 OpenFlow简介

  • SDN核心技术,允许远程控制器定义转发规则。
  • 支持基于多字段的转发决策(如源/目的IP、端口号、协议等)。

4.4.2 流表(Flow Table)

  • 包含匹配字段、动作(转发、丢弃、修改)、计数器等。
  • 数据包按流表规则进行处理。

4.4.3 转发行为扩展

  • 支持数据包复制、重写、过滤等操作。
  • 提高网络灵活性和安全性控制能力。

4.5 中间盒(Middleboxes)

4.5.1 功能分类

  • 防火墙(Firewall)
    • 过滤非法流量,保护网络安全。
  • NAT设备
    • 地址转换,实现私有网络访问公网。
  • 负载均衡器
    • 将请求分配到多个服务器,提高可用性和性能。
  • 入侵检测系统(IDS)
    • 监测异常流量,识别潜在攻击。

4.5.2 对网络架构的影响

  • 增强网络安全性与服务质量。
  • 增加部署复杂性,需协调转发逻辑。

本章概览

  • 掌握网络层的基本组成:数据平面控制平面
  • 理解转发路由的区别与协作。
  • 熟悉IPv4与IPv6协议结构及其地址分配机制。
  • 了解SDN与OpenFlow如何改变传统网络控制方式。
  • 理解中间盒在网络中的作用及影响。## 4.2 路由器内部结构

4.2.1 输入端口处理与基于目的的转发

  • 路由器输入端口负责物理层和链路层功能。
  • 核心功能是查找转发表,决定数据包应转发到哪个输出端口。
  • 转发表基于最长前缀匹配规则(Longest Prefix Matching)选择输出接口。
  • IPv4地址通常使用32位表示,转发表通过前缀压缩减少条目数量。
  • TCAM(三态内容寻址存储器)常用于高速查找,实现恒定时间匹配。

4.2.2 交换结构

三种主要交换方式:

  • 基于内存的交换
    • 最早的路由器使用CPU控制交换。
    • 性能受限于内存带宽,无法并行转发多个数据包。
  • 基于总线的交换
    • 输入端口直接通过共享总线将数据包发送到输出端口。
    • 每次只能传输一个数据包,存在瓶颈。
  • 基于互连网络的交换
    • 使用交叉开关(Crossbar Switch)连接输入和输出端口。
    • 支持多数据包并行转发,非阻塞设计。
    • 更复杂的互连网络支持多阶段交换,提升吞吐能力。

4.2.3 输出端口处理

  • 输出端口负责从内存中取出数据包并通过链路层和物理层发送。
  • 包括调度机制、队列管理、链路封装等功能。
  • 队列调度策略影响服务质量和延迟。

4.2.4 缓存与排队现象

排队发生在输入和输出端口:

  • 输入端口排队(Input Queueing)
    • 当交换结构速度低于输入链路速度时,数据包在输入端口排队。
    • 存在头部阻塞(HOL Blocking),导致低效转发。
  • 输出端口排队(Output Queueing)
    • 多个输入端口同时向同一输出端口发送数据时,形成队列。
    • 可能导致缓存耗尽,引发丢包。
  • 缓冲区大小设计
    • 传统建议:B = RTT × 带宽。
    • 新研究认为:当TCP流数量大时,所需缓存减少。
    • 过度缓存可能导致延迟增加,影响交互式应用体验(Bufferbloat问题)。

4.2.5 数据包调度策略

常见调度机制:

  • 先进先出(FIFO)
    • 简单公平,但无法区分优先级。
  • 优先级队列(Priority Queuing)
    • 不同优先级的数据包按优先顺序转发。
    • 可用于区分语音、视频、普通流量等。
  • 轮询调度(Round Robin)
    • 各类数据包轮流发送,确保公平性。
  • 加权公平队列(WFQ)
    • 为每个类别分配权重,保证最低带宽。
    • 支持差异化服务,适用于QoS场景。### 4.3 IPv4协议:IP地址、NAT与IPv6

4.3.2 IPv4地址配置

  • 每个接口必须具有唯一的IP地址(除NAT后设备)。
  • IP地址长度为32位,通常使用点分十进制表示(如193.32.216.9)。
  • 子网划分基于共同的网络前缀(如223.1.1.xxx)。
  • CIDR(无类别域间路由)允许灵活子网划分(如/24表示前24位为网络部分)。
  • 组织内的多个子网共享相同的网络前缀。

4.3.3 网络地址转换(NAT)

  • NAT允许多个内部设备共享一个公网IP地址。
  • 使用私有地址空间(如10.0.0.0/24),避免公网地址耗尽。
  • NAT路由器维护转换表,记录WAN和LAN侧的IP+端口映射。
  • 实现方式:
    • 内部设备发送数据包时,NAT替换源IP和端口。
    • 外部响应返回时,NAT根据端口查找并还原目标地址。
  • 缺点:
    • 端口用于主机而非进程寻址,影响P2P连接。
    • 违反路由器应仅处理网络层的原则。
  • 防火墙与入侵检测系统(IDS)常与NAT结合使用增强安全。

4.3.4 IPv6协议

  • 地址长度从32位扩展至128位,解决IPv4地址枯竭问题。
  • 支持单播、多播和任播地址类型。
  • 报头结构简化,固定长度为40字节。
  • 移除了IPv4中的以下字段:
    • 分片与重组(仅由源和目的处理)。
    • 首部校验和(由传输层和链路层保障)。
    • 选项字段(作为扩展首部实现)。
  • 新增字段:
    • 流标签(Flow Label)支持QoS或实时服务。
    • 下一报头(Next Header)标识上层协议。
  • IPv6过渡机制:
    • 隧道技术:将IPv6数据包封装在IPv4中穿越IPv4网络。
    • 不同于“flag day”方式,逐步部署更现实可行。
  • 应用现状:
    • 美国政府约三分之一二级域名已启用IPv6。
    • Google统计显示约25%用户通过IPv6访问其服务。
    • 3GPP等标准组织已指定IPv6为移动网络标准。

地址分配机制

  • 组织获取地址块:
    • 通过ISP获得连续地址块(如200.23.16.0/20)。
    • ISP可进一步划分为多个子块分配给客户。
  • 全球地址管理:
    • 由ICANN负责全球IP地址分配。
    • 区域互联网注册机构(如ARIN、RIPE)执行区域管理。

DHCP动态主机配置协议

  • 自动分配IP地址,支持静态分配或临时分配。
  • 四步交互流程:
    1. DHCP发现(Discover)广播寻找服务器。
    2. DHCP提供(Offer)服务器响应地址提议。
    3. DHCP请求(Request)客户端选择并确认。
    4. DHCP确认(ACK)服务器最终确认分配。
  • 支持即插即用(Plug-and-Play)功能,广泛用于企业、家庭及无线网络。## 4.4 通用转发与SDN

4.4.1 匹配(Match)

OpenFlow 1.0中的匹配字段

  • 支持12种头部字段和入端口号的匹配。
  • 涉及链路层、网络层和传输层字段,如:
    • 源/目的MAC地址
    • 源/目的IP地址
    • TCP/UDP源/目的端口
    • VLAN ID、TOS字段等
  • 支持通配符匹配(例如:128.119.*.*)。
  • 多个匹配项时优先使用高优先级条目。

抽象设计原则

  • 不支持对TTL或数据报长度字段进行匹配。
  • 设计权衡:功能与复杂度之间的平衡。
  • 接口应捕获抽象的最小本质,避免过度泛化。

4.4.2 动作(Action)

常见动作类型

  • 转发
    • 发送到特定物理输出端口
    • 广播或多播到多个端口
    • 封装并发送给控制器
  • 丢弃
    • 无动作表示丢弃匹配的数据包
  • 修改字段
    • 可重写10个头部字段(除IP协议字段外)
    • 包括链路层、网络层和传输层字段

动作执行顺序

  • 按照列表中指定的顺序执行多个动作。

4.4.3 OpenFlow 实例应用

示例一:简单转发

  • 数据包从h5/h6发往h3/h4,路径为s3→s1→s2,绕过s3与s2之间的链路。
  • s1流表条目:
    • 入端口=1;源IP=10.3..;目的IP=10.2..
    • 动作:转发至端口4
  • s3流表条目:
    • 源IP=10.3..;目的IP=10.2..
    • 动作:转发至端口3
  • s2流表条目:
    • 入端口=2;目的IP=10.2.0.3 → 转发至端口3
    • 入端口=2;目的IP=10.2.0.4 → 转发至端口4

示例二:负载均衡

  • h3发往10.1..走s2→s1;h4发往10.1..走s2→s3→s1。
  • s2流表条目:
    • 入端口=3;目的IP=10.1.. → 转发至端口2
    • 入端口=4;目的IP=10.1.. → 转发至端口1

示例三:防火墙

  • s2仅接收来自s3连接主机的流量。
  • 流表条目:
    • 源IP=10.3..;目的IP=10.2.0.3 → 转发至端口3
    • 源IP=10.3..;目的IP=10.2.0.4 → 转发至端口4

灵活性与优势

  • 支持虚拟网络、多租户隔离、QoS等功能。
  • 可通过编程实现多种逻辑行为。

4.5 中间盒(Middleboxes)

中间盒分类

  • NAT转换
    • 私有地址映射为公网地址
    • 重写IP地址和端口号
  • 安全服务
    • 防火墙:基于头部字段过滤流量
    • IDS:检测异常模式并过滤数据包
    • 应用层邮件过滤器:识别垃圾邮件、钓鱼攻击
  • 性能增强
    • 压缩、缓存内容、请求负载均衡(如HTTP请求分发到多个服务器)

NFV与云外包

  • 网络功能虚拟化(NFV)
    • 使用通用硬件+专用软件替代传统中间盒
    • 类似于SDN架构
  • 云外包
    • 将中间盒功能迁移到云端处理

架构争议

  • 违反“端到端原则” vs “满足实际需求”
  • RFC 1958指出网络核心应保持简单,智能放在边缘
  • 但中间盒在现实网络中广泛存在且不可或缺

IP沙漏模型(Hourglass Model)

  • 网络层仅有IP协议,成为互联网架构的“窄腰”
  • 所有设备必须实现IP协议
  • 屏蔽底层差异,提供统一接口
  • 促进互联网快速发展和异构网络互联

端到端论证(End-to-End Argument)

  • 关键功能应在端点而非网络中实现
  • 举例:可靠数据传输需由TCP完成,而非依赖链路层错误控制
  • RFC 1958引用该原则作为互联网架构基础之一## 5.2 路由算法

5.2.1 链路状态(LS)路由算法

  • 核心思想
    • 基于Dijkstra算法,计算从源节点到所有其他节点的最短路径。
    • 每个节点广播链路状态信息,构建完整的网络拓扑图。
  • 关键步骤
    • 初始化:设定初始距离和前驱节点。
    • 迭代更新:每次选择最小距离节点加入已知集合,并更新其邻居的距离。
  • 复杂度分析
    • 时间复杂度为O(n²),n为节点数量。
    • 可通过堆优化降低时间复杂度。
  • 潜在问题
    • 当链路成本依赖流量时可能出现震荡现象。
    • 解决方案包括避免动态链路成本、异步执行算法等。

5.2.2 距离向量(DV)路由算法

  • 基本原理
    • 基于Bellman-Ford方程,每个节点维护到所有目标的距离向量。
    • 异步、分布式迭代更新机制。
  • 运行流程
    • 每个节点定期或根据变化发送距离向量给邻居。
    • 接收新向量后更新自身距离表,并传播变化。
  • 收敛性
    • 在所有节点持续交换信息的前提下,最终会收敛到实际最短路径。
  • 应用场景
    • 广泛用于RIP、BGP等协议。
  • 问题与改进
    • 计数到无穷问题(Count-to-Infinity)可能导致环路。
    • 使用毒性逆转(Poisoned Reverse)缓解局部环路问题。

LS与DV算法对比

  • 消息复杂度
    • LS需O(|N|×|E|)消息量,DV依赖邻居间多次交换。
  • 收敛速度
    • LS较快且确定,DV可能慢且存在环路风险。
  • 鲁棒性
    • LS局部错误影响有限;DV错误可能扩散至全网。

5.3 Internet内部AS路由:OSPF

OSPF概述

  • 协议特点
    • 开放标准(RFC 2328),基于链路状态。
    • 使用Dijkstra算法计算最短路径树。
  • 链路权重设置
    • 管理员可配置,支持最小跳数或按带宽调整。
    • 权重影响流量工程策略,如最小化最大链路利用率。

核心功能

  • 链路状态广播
    • 定期更新(每30分钟)+ 实时通知链路变化。
    • OSPF报文直接封装在IP中(协议号89)。
  • 邻居发现
    • HELLO协议检测链路可达性。
    • 同步链路状态数据库。

安全与扩展性

  • 认证机制
    • 支持简单密码与MD5哈希认证,防止伪造路由信息。
  • 多路径支持
    • 支持等价多路径(ECMP)负载均衡。
  • 组播支持
    • MOSPF扩展支持组播路由。
  • 区域划分
    • 分层结构:骨干区域(Backbone Area)连接各子区域。
    • 区域边界路由器(Area Border Router)负责跨区通信。

应用场景

  • 适用于大规模自治系统内部路由。
  • 支持灵活的网络分层管理。## 5.4 ISP之间的路由:BGP

5.4.1 BGP的作用

  • 提供前缀可达性信息
    • 每个子网通过BGP广播其存在,确保全网路由器知晓。
    • 若无BGP,各子网将成为孤立“岛屿”。
  • 确定最佳路径
    • 路由器可能学习到多个路径,需选择最优路径。
    • 路径选择基于策略和可达性信息。

5.4.2 BGP路由信息发布

示例网络结构

  • 包含三个自治系统(AS):AS1、AS2、AS3。
  • AS3包含前缀x的子网。
  • 网络中每个路由器为网关路由器内部路由器

BGP连接类型

  • 外部BGP(eBGP):跨AS的路由器之间建立的TCP连接(端口179)。
  • 内部BGP(iBGP):同一AS内路由器之间的TCP连接。

路由传播过程

  • AS3通过eBGP向AS2发送路由信息(如“AS3 x”)。
  • AS2通过iBGP将该信息转发给AS2内其他路由器。
  • AS2再通过eBGP向AS1发送更新路径(如“AS2 AS3 x”)。
  • 最终所有AS1和AS2路由器都了解前缀x及其路径。

5.4.3 最佳路径选择

BGP属性与路由定义

  • AS-PATH:记录路径经过的AS序列。
  • NEXT-HOP:下一跳接口的IP地址。
  • 路由 = (NEXT-HOP, AS-PATH, 目标前缀)

路由选择算法

  1. 本地偏好值(Local Preference)
    • 值越高优先级越高,由本AS管理员设定。
  2. 最短AS路径
    • 类似距离向量算法,使用AS跳数作为度量。
  3. 热土豆路由(Hot Potato Routing)
    • 选择最近的下一跳路由器。
  4. 路由器标识符
    • 若仍有多个路径,则使用路由器ID决定。

示例分析

  • 在图5.10中,AS1到x有两条路径:“AS2 AS3 x”和“AS3 x”。
  • 根据规则2,优先选择较短路径“AS3 x”。

5.4.4 IP任播(IP-Anycast)

  • 实现方式
    • CDN服务器配置相同IP地址。
    • 通过BGP广播该IP,不同服务器发布相同前缀。
  • 效果
    • 用户访问时自动被导向“最近”的服务器。
  • 应用场景
    • DNS根服务器广泛使用IP Anycast。

5.4.5 路由策略

  • 策略优先于技术指标
    • 如拒绝某些AS路径,即使路径更短。
  • 客户-提供商关系
    • 提供商仅转发源/目的在客户网络中的流量。
  • 对等连接(Peering)
    • 两个骨干ISP间直接连接,不承担第三方流量。

5.4.6 构建互联网接入

  • 获取互联网接入
    • 与本地ISP签约,获得IP地址段(如/24)。
  • 域名注册
    • 与域名注册商签约,注册域名(如xanadu.com)。
  • DNS部署
    • 配置DNS服务器并将其IP注册至顶级域服务器。
  • BGP广播
    • ISP通过BGP广播你的前缀,使全球路由器识别你的网络。

5.5 SDN控制平面

5.5.1 SDN控制平面组成

SDN控制器架构

  • 通信层
    • 南向接口(Southbound API):控制器与交换机通信(如OpenFlow)。
  • 状态管理层
    • 维护网络拓扑、链路状态、主机信息、流表等全局状态。
  • 北向接口
    • 提供RESTful API供应用调用,支持同步查询与异步事件通知。

SDN网络控制应用

  • 路由应用
    • 实现Dijkstra算法计算最短路径。
  • 访问控制
    • 控制哪些数据包应被丢弃。
  • 负载均衡
    • 控制多路径转发以实现服务器负载分担。

5.5.2 OpenFlow协议

  • 控制器到交换机消息
    • 配置(Configuration):设置交换机参数。
    • 修改状态(Modify-State):添加/删除/修改流表项。
    • 读取状态(Read-State):获取统计信息。
    • 发送数据包(Send-Packet):控制器主动发送数据包。
  • 交换机到控制器消息
    • 流表移除(Flow-Removed):流表项超时或被删除。
    • 端口状态(Port-Status):端口变化通知。
    • 数据包入(Packet-in):未匹配流表的数据包上报控制器。

5.5.3 数据与控制平面交互示例

场景:链路状态变更

  1. s1检测到链路故障
    • 发送Port-Status消息通知控制器。
  2. 控制器更新链路状态数据库
    • 通知链路状态管理模块。
  3. 路由应用收到链路状态变更通知
    • 注册监听事件后触发。
  4. 应用重新计算最短路径
    • 使用Dijkstra算法。
  5. 应用请求更新流表
    • 流表管理模块生成更新指令。
  6. 控制器下发流表更新
    • 通过OpenFlow协议更新s1、s4等受影响交换机。

5.5.4 SDN的发展历程与未来

  • 起源
    • 2004年提出控制与数据平面分离理念。
    • Ethane项目演化为OpenFlow。
  • 未来方向
    • 向大规模广域网扩展(如Google B4网络)。
    • 与NFV融合,替代专用中间盒设备。
    • 推动跨AS的SDN架构发展。

5.6 ICMP:互联网控制报文协议

5.6.1 ICMP作用

  • 错误报告机制
    • 报告不可达、超时、参数问题等网络异常。
  • 网络诊断工具支持
    • Ping 和 Traceroute 基于ICMP实现。

5.6.2 ICMP报文格式

  • 类型字段(Type)
    • 标识报文类型(如回显请求、目标不可达)。
  • 代码字段(Code)
    • 进一步细化错误原因(如网络不可达、端口不可达)。
  • 校验和字段
    • 用于完整性校验。

5.6.3 ICMP常见应用

  • Ping命令
    • 发送ICMP Echo Request,接收Echo Reply验证连通性。
  • Traceroute命令
    • 利用TTL递减和ICMP Time Exceeded报文探测路径。

5.7 网络管理:SNMP

5.7.1 SNMP概述

  • 网络管理模型
    • 管理站(Manager)与代理(Agent)协作。
    • 管理信息库(MIB)存储被管对象数据。

5.7.2 SNMP操作

  • GetRequest
    • 获取一个或多个变量值。
  • SetRequest
    • 设置变量值。
  • GetNextRequest
    • 获取下一个变量值,用于遍历MIB树。
  • Trap
    • 代理主动上报事件(如接口down)。
  • InformRequest
    • 可靠的Trap通知,要求确认响应。

5.7.3 MIB结构

  • 对象标识符(OID)
    • 分层命名结构,唯一标识每个可管理对象。
  • 标准MIB
    • system、interfaces、ip、tcp、udp等标准组别。

5.7.4 SNMP版本演进

  • SNMPv1
    • 基础功能,安全性差。
  • SNMPv2c
    • 支持批量操作,仍使用明文社区字符串。
  • SNMPv3
    • 引入认证与加密,提升安全性。## 5.6 ICMP:互联网控制报文协议

5.6.1 ICMP的基本功能

  • ICMP用于主机和路由器之间在网络层交换控制信息。
  • 主要用途是错误报告,例如“目标网络不可达”。
  • ICMP消息封装在IP数据报中作为载荷传输。
  • ICMP消息包含类型字段代码字段,并附带引发错误的原始IP数据报头部及前8字节内容。

5.6.2 常见ICMP消息类型

  • Echo Reply(类型0,代码0):响应Ping请求。
  • 目标网络不可达(类型3,代码0)
  • 目标主机不可达(类型3,代码1)
  • 目标协议不可达(类型3,代码2)
  • 目标端口不可达(类型3,代码3)
  • TTL超时(类型11,代码0)
  • IP头部错误(类型12,代码0)
  • Echo Request(类型8,代码0):用于Ping程序。

5.6.3 Ping与Traceroute的实现

  • Ping:发送ICMP Echo Request(类型8,代码0),接收方返回Echo Reply(类型0,代码0)。
  • Traceroute
    • 发送一系列UDP数据报,TTL依次递增(1, 2, 3…)。
    • 每个路由器在TTL减至0时发送ICMP TTL超时消息(类型11,代码0)。
    • 最终目标主机返回“端口不可达”ICMP消息(类型3,代码3),表示路径探测完成。

5.6.4 IPv6中的ICMPv6

  • ICMPv6为IPv6重新定义了消息类型。
  • 新增类型包括:
    • Packet Too Big(类型2)
    • Unrecognized IPv6 Options(类型4)

5.7 网络管理与SNMP、NETCONF/YANG

5.7.1 网络管理框架概述

  • 管理服务器(Managing Server)
    • 网络管理中心,负责数据收集、分析与命令下发。
  • 被管理设备(Managed Device)
    • 包括主机、路由器、交换机等,设备具有可配置参数和运行状态。
  • 设备数据(Device Data)
    • 包括配置数据(如IP地址)、运行数据(如邻居列表)、统计信息(如丢包数)。
  • 网络管理代理(Agent)
    • 运行在被管理设备上的软件,与管理服务器通信并执行命令。
  • 网络管理协议
    • 提供管理服务器与代理之间的通信机制,用于查询状态、控制设备、接收异常通知。

5.7.2 简单网络管理协议(SNMP)与管理信息库(MIB)

SNMPv3协议概述

  • 应用层协议,用于管理服务器与代理之间交换控制与状态信息。
  • 采用请求-响应模式
    • GetRequest:获取一个或多个MIB对象值。
    • GetNextRequest:获取MIB对象列表中的下一个值。
    • GetBulkRequest:一次性获取大量数据。
    • SetRequest:设置MIB对象值。
    • Response:对请求的响应。
    • Trap:代理主动发送的异常事件通知。
  • 通常通过UDP传输,无可靠保证,需管理服务器自行处理重传。

管理信息库(MIB)

  • MIB对象表示设备的配置与运行状态。
  • 示例:ipSystemStatsInDelivers表示成功交付给上层协议的IP数据报数量。
  • RFC定义了标准MIB模块,厂商也可定义私有MIB。
  • 常见MIB模块:
    • [RFC 4293]:IP与ICMP管理对象。
    • [RFC 4022]:TCP管理对象。
    • [RFC 4113]:UDP管理对象。

5.7.3 网络配置协议(NETCONF)与YANG

NETCONF协议功能

  • 提供对设备配置的获取、修改、锁定、解锁等操作。
  • 支持订阅设备事件通知。
  • 使用XML格式的远程过程调用(RPC)进行通信。
  • 基于安全连接(如TLS over TCP)。

NETCONF操作示例

  • <get>:获取设备的运行与配置数据。
  • <get-config>:获取指定配置(如运行配置)。
  • <edit-config>:修改设备配置,如设置接口MTU。
  • <lock> / <unlock>:锁定配置数据库,防止并发修改。
  • <create-subscription>:订阅设备事件通知。

YANG数据建模语言

  • 用于定义NETCONF使用的配置与状态数据结构。
  • 支持内置数据类型与用户定义约束,确保配置一致性。
  • 可生成描述设备能力的XML文档。
  • 与SMI在SNMP中作用类似,但更强大灵活。

5.7.4 网络管理方式比较

  • CLI命令行接口
    • 直接操作设备,但易出错,难以自动化与大规模部署。
  • SNMP/MIB
    • 用于监控设备状态与统计信息,SetRequest用于配置但使用较少。
    • 安全性不足,曾主要用于监控而非控制。
  • NETCONF/YANG
    • 强调配置管理,支持多设备原子操作。
    • 更适合大规模、自动化网络管理。
    • 是当前主流网络管理发展方向。## 5.8 总结
  • 控制平面的两种构建方式:
    • 基于每台路由器的控制
      • 每个路由器独立运行路由算法。
      • 路由器之间相互通信以交换路由信息。
    • 基于逻辑集中式控制的SDN
      • 控制器集中计算并分发转发表。
      • 路由器仅负责数据转发。
  • 路由算法基础
    • 两种核心算法:
      • 链路状态路由(Link-State)
        • 每个节点掌握全网拓扑信息。
        • 使用Dijkstra算法计算最短路径。
      • 距离向量路由(Distance-Vector)
        • 每个节点维护到其他节点的距离向量。
        • 通过邻居交换信息逐步更新路径。
  • 实际应用
    • OSPF:基于链路状态的内部网关协议。
    • BGP:基于距离向量的外部网关协议,用于自治系统间通信。
  • SDN控制平面
    • SDN控制器三层结构:
      • 通信层:与设备通信。
      • 网络状态管理层:维护网络状态。
      • 网络控制应用层:实现策略与转发规则。
    • OpenFlow协议:
      • 定义控制器与设备之间的通信。
      • 支持流表管理与数据包转发。
  • 网络管理
    • ICMP协议:
      • 用于网络诊断与错误报告。
      • 如ping和traceroute。
    • SNMP协议:
      • 用于网络设备管理。
      • 支持GetRequest、SetRequest和Trap消息。
    • NETCONF/YANG:
      • 提供更现代的配置管理接口。
  • 后续章节展望
    • 下一章将进入链路层,研究如何在本地网络中传输数据包。
    • 链路层任务虽然局部,但涉及多个关键技术如差错控制、介质访问控制等。

作业与思考题

复习题

5.1 节

  • R1:基于每台路由器的控制平面是什么意思?“单体实现”指什么?
  • R2:基于逻辑集中式控制的控制平面是什么意思?控制平面与数据平面是否在同一个设备中?

5.2 节

  • R3:比较集中式与分布式路由算法,举例说明。
  • R4:比较链路状态与距离向量路由算法。
  • R5:距离向量路由中的“计数到无穷大”问题是什么?
  • R6:是否每个自治系统都必须使用相同的内部路由算法?为什么?

5.3–5.4 节

  • R7:为何Internet使用不同的内部和外部路由协议?
  • R8:OSPF发送链路状态信息是否只发送给直接邻居?
  • R9:OSPF中“区域”的概念及引入原因。
  • R10:比较子网、前缀和BGP路由。
  • R11:BGP中NEXT-HOP和AS-PATH属性的作用。
  • R12:ISP如何通过BGP配置实现策略控制。
  • R13:BGP接收路径后是否必须添加自身标识?

5.5 节

  • R14:SDN控制器的通信层、状态管理层、应用层各自作用。
  • R15:在SDN中实现新路由协议应在哪一层?
  • R16:SDN控制器的北向和南向API传输哪些消息?
  • R17:OpenFlow消息的类型及其作用(如Packet-In、Flow-Removed等)。
  • R18:OpenDaylight中服务抽象层的作用。

5.6–5.7 节

  • R19:四种ICMP消息类型。
  • R20:Traceroute使用的两种ICMP消息。
  • R21:SNMP中的管理服务器、被管设备、代理、MIB定义。
  • R22:GetRequest和SetRequest消息的作用。
  • R23:Trap消息的作用。

编程实验

ICMP Ping 实验

  • 编写一个基于ICMP的Ping程序。
    • 发送ICMP Echo Request,接收Echo Response。
    • 计算RTT、丢包率、统计延迟(最小、平均、最大、标准差)。
    • 使用Python实现,仅需编写客户端。

路由协议模拟实验

  • 实现一个异步分布式距离向量路由协议。
    • 每个节点维护距离表。
    • 初始化函数rtinitX()设置初始距离。
    • 更新函数rtupdateX()接收邻居信息并更新距离表。
    • 当路径变化时,向邻居发送更新信息。
    • 使用模拟环境调用tolayer2()发送路由更新包。

Wireshark 实验:ICMP

  • 使用Wireshark抓包分析ICMP协议行为。
    • 观察ICMP Echo Request/Reply。
    • 分析Traceroute过程中的TTL超时和端口不可达消息。
    • 理解ICMP报文结构和网络诊断机制。### Wireshark 实验:ICMP
  • 实验内容涉及使用Wireshark分析ICMP协议在pingtraceroute命令中的应用。
  • 实验资源可在教材官网获取:www.pearsonhighered.com/cs-resources。

人物访谈:Jennifer Rexford

职业背景

  • 普林斯顿大学计算机科学系教授。
  • 1996–2004年任职于AT&T实验室,研究网络测量、流量工程与路由器配置。
  • 曾获ACM Grace Murray Hopper奖、ACM Athena讲座奖、IEEE互联网奖等多项荣誉。
  • 美国国家工程院院士(2014年入选)。

代表项目与挑战

  • 设计了路由控制平台(RCP),实现对ISP骨干网的集中式路由管理。
  • 在单台普通计算机上计算全网路由,并兼容传统路由器。
  • 该项目为后续SDN技术的发展奠定了基础。

对SDN未来的看法

  • SDN应提供更好的编程抽象,支持多个独立应用协同工作。
  • 应简化底层细节(如流表项、包头格式等)。
  • 分布式设备更新需有良好的抽象机制,便于管理员理解更新过程中数据包的行为变化。
  • 强调跨学科研究:网络、分布式系统与编程语言的结合具有重要实践价值。

对网络与互联网未来的展望

  • 网络技术持续演进,受智能手机、云计算、物联网等驱动。
  • 未来网络应“隐形”地支持创新,不成为性能与部署的瓶颈。
  • 需要从更高层次抽象网络设备与协议,关注用户整体目标。

受启发的人物

  • Sally Floyd:国际计算机科学研究所研究员。
  • 致力于解决互联网关键问题,推动研究成果进入标准与设备。
  • 开发了广泛使用的网络模拟器ns-2与ns-3。
  • 积极参与社区服务,影响深远。

给学生的建议

  • 网络领域高度跨学科,涉及排队论、博弈论、控制理论、机器学习等多个方向。
  • 建议学生掌握相关领域的知识或与专家合作,夯实网络研究基础。
  • 注重系统设计与构建能力,通过操作系统、计算机体系结构等课程提升实践水平。

链路层与局域网

6.1 链路层概述

6.1.1 链路层的基本服务

  • 链路层功能
    • 在两个相邻节点之间传输数据报。
    • 数据封装为帧(Frame),包含头部和数据部分。
    • 支持多种链路协议,如以太网、WiFi、PPP等。
  • 多路访问问题
    • 多个节点共享广播信道时如何协调帧的发送?
  • 链路层地址
    • MAC地址用于标识本地网络中的设备。

6.1.2 链路层实现位置

  • 硬件实现
    • 网络适配器(NIC)负责帧封装、错误检测等。
  • 软件实现
    • 主机操作系统处理链路层配置、地址解析等。

6.2 错误检测与纠正技术

6.2.1 奇偶校验

  • 单比特奇偶校验
    • 添加一个比特使总“1”数为偶数或奇数。
    • 只能检测奇数个错误,不能纠错。
  • 二维奇偶校验
    • 检测并纠正单比特错误。
    • 支持双比特错误检测。

6.2.2 校验和方法

  • Internet 校验和
    • 将数据视为16位整数求和,取反码作为校验和。
    • TCP/UDP中使用,适用于低出错率链路。

6.2.3 循环冗余校验(CRC)

  • 基本原理
    • 使用生成多项式G(x),计算余数R作为冗余位。
    • 接收方通过除法判断是否出错。
  • 特点
    • 可检测所有长度小于r+1的突发错误。
    • 广泛用于链路层,如Ethernet、PPP。

6.3 多路访问链路与协议

6.3.1 信道划分协议

时间划分(TDM)

  • 每个节点分配固定时间槽。
  • 无冲突,但效率低,无法动态适应流量变化。

频率划分(FDM)

  • 将带宽划分为多个子频段。
  • 类似TDM,资源固定分配。

码分多址(CDMA)

  • 每个节点使用唯一编码传输。
  • 支持同时传输,抗干扰能力强。
  • 广泛用于无线通信。

6.3.2 随机访问协议

ALOHA 协议

  • 纯ALOHA
    • 节点随时发送,碰撞后随机延迟重传。
    • 最大效率:1/(2e) ≈ 18%。
  • 时隙ALOHA
    • 所有节点同步发送,效率更高。
    • 最大效率:1/e ≈ 37%。

CSMA(载波侦听多路访问)

  • CSMA
    • 发送前侦听信道是否空闲。
  • CSMA/CD
    • 检测到冲突立即停止发送。
    • 用于以太网,效率随传播延迟增加而下降。
  • 退避算法
    • 使用二进制指数退避选择K值,避免持续冲突。

6.3.3 轮流协议

轮询协议

  • 由主节点轮询各节点。
  • 无冲突,但存在轮询延迟。
  • 若主节点失效,整个系统瘫痪。

令牌传递协议

  • 令牌在节点间循环。
  • 无需主节点,但节点故障可能中断系统。
  • 实例:IEEE 802.5 Token Ring。

6.3.4 DOCSIS协议(有线网络链路层)

  • 下行与上行信道
    • 使用FDM划分频率。
    • 下行单一源(CMTS),无冲突。
    • 上行多节点共享,需冲突控制。
  • MAP帧与Mini-slot
    • CMTS通过MAP消息分配发送时段。
    • 请求帧采用随机接入方式,可能冲突。
  • 冲突处理
    • 未收到响应则认为冲突发生。
    • 使用二进制指数退避机制重传。

6.4 交换式局域网

6.4.1 局域网寻址与ARP

  • MAC地址
    • 48位全球唯一地址,用于局域网内通信。
  • 地址解析协议(ARP)
    • 将IP地址映射为MAC地址。
    • ARP缓存维护IP-MAC对应关系。

6.4.2 以太网技术

  • 帧格式
    • 包含目标MAC、源MAC、类型、数据、CRC。
  • CSMA/CD机制
    • 早期以太网使用,现代全双工环境下不再需要。
  • 速率发展
    • 从10Mbps → 100Mbps → 1Gbps → 10Gbps演进。

6.4.3 交换机工作原理

  • 自学习能力
    • 维护交换表(MAC地址→端口)。
  • 转发决策
    • 根据目的MAC查找端口转发。
  • 广播与泛洪
    • 未知MAC地址时广播帧。

6.4.4 VLAN虚拟局域网

  • 逻辑隔离
    • 同一物理网络中划分不同广播域。
  • VLAN标签
    • IEEE 802.1Q标准定义VLAN ID字段。
  • 跨交换机通信
    • Trunk链路携带多个VLAN信息。

6.4.5 数据中心网络

  • 高性能需求
    • 高带宽、低延迟、可扩展性。
  • 结构设计
    • Fat Tree、Clos架构支持大规模并行通信。
  • SDN集成
    • 控制平面集中化,提升灵活性与管理效率。## 6.4 交换式局域网

6.4.1 链路层寻址与ARP

MAC地址

  • 每个网络接口(适配器)具有唯一的MAC地址,长度为6字节(48位),全球唯一。
  • MAC地址结构扁平化,不随位置变化而改变。
  • IEEE负责管理MAC地址空间,分配前24位给厂商,后24位由厂商自定义。

ARP协议

  • 作用:将IP地址解析为对应的MAC地址。
  • 工作原理
    • 主机维护ARP表,包含IP地址与MAC地址的映射关系及TTL(生存时间)。
    • 若ARP表中没有目标IP对应的MAC地址,则发送ARP广播请求。
    • 接收方回应其MAC地址,发送方更新ARP表并继续发送数据帧。
  • 广播机制
    • ARP请求使用广播MAC地址 FF-FF-FF-FF-FF-FF 发送。
  • 跨子网通信
    • 数据包需先发送到路由器接口,再由路由器转发至目标子网。
    • 路由器通过ARP获取下一跳MAC地址。

6.4.2 以太网技术

以太网帧格式

  • 字段说明
    • 目标MAC地址(6字节)
    • 源MAC地址(6字节)
    • 类型字段(2字节):指示上层协议(如IP、ARP等)
    • 数据字段(46–1500字节)
    • CRC校验码(4字节)
  • 最大传输单元(MTU):1500字节,超过则需分片。
  • 最小数据字段长度:46字节,不足时填充。

以太网发展

  • 速率演进
    • 10 Mbps → 100 Mbps → 1 Gbps → 10 Gbps → 40 Gbps
  • 物理介质支持
    • 双绞线(如100BASE-TX、10GBASE-T)
    • 光纤(如1000BASE-LX)
  • 拓扑结构演变
    • 总线型拓扑(早期)
    • 集线器星型拓扑(Hub-based)
    • 交换机星型拓扑(Switched Ethernet)

CSMA/CD机制

  • 适用场景:共享总线或集线器连接的以太网。
  • 冲突检测与退避
    • 发送过程中持续监听信道状态。
    • 冲突发生时立即停止发送,并发出拥塞信号。
    • 使用二进制指数退避算法重传。

6.4.3 链路层交换机工作原理

转发与过滤

  • 交换机功能
    • 转发:确定数据帧应从哪个端口输出。
    • 过滤:判断是否丢弃数据帧。
  • 交换表(Switch Table)
    • 包含MAC地址、对应端口、记录时间。
    • 初始为空,通过自学习动态构建。
    • 老化机制:若某MAC地址在设定时间内未出现,则删除该条目。

自学习机制

  • 过程
    1. 接收到数据帧后,记录源MAC地址与输入端口。
    2. 更新交换表。
    3. 查找目标MAC地址:
      • 若存在,转发至指定端口。
      • 若不存在,向除输入端口外的所有端口广播。

交换机优势

  • 消除冲突:每个端口独立通信,无需竞争带宽。
  • 异构链路支持:不同速率和介质可共存。
  • 易管理性
    • 支持流量监控、统计信息收集。
    • 可隔离故障设备(如异常发送大量帧的适配器)。

6.4.4 虚拟局域网(VLAN)

VLAN概念

  • 目的:在同一物理网络中划分多个逻辑广播域。
  • 实现方式
    • 基于端口的VLAN:交换机端口被分配到不同VLAN。
    • 广播域隔离:仅同VLAN内的设备可接收到广播帧。

VLAN配置示例

  • 单一交换机划分为EE(电气工程)与CS(计算机科学)两个VLAN。
  • 端口2–8属于EE VLAN;端口9–15属于CS VLAN。

VLAN间通信

  • 解决方案
    • 连接外部路由器,使不同VLAN之间通过路由器通信。
    • 使用三层交换机(集成路由功能的交换机)。

VLAN Trunking(干线连接)

  • 用途:连接多个支持VLAN的交换机。
  • 机制
    • 使用Trunk端口承载多个VLAN的数据。
    • 使用IEEE 802.1Q协议,在以太网帧中插入4字节的VLAN标签。
      • 标签包括:TPID(固定值8100)、VLAN ID(12位)、优先级字段(3位)。

VLAN类型扩展

  • 基于MAC地址的VLAN:根据设备MAC地址划分VLAN。
  • 基于网络协议的VLAN:如IPv4、IPv6、AppleTalk等。
  • 跨IP路由器的VLAN扩展:实现广域范围的虚拟局域网。## 6.6 数据中心网络

6.6.1 数据中心架构

  • 数据中心的三大作用
    • 提供内容(如网页、邮件、视频)
    • 支持大规模并行计算(如搜索引擎索引)
    • 提供云计算服务(如AWS、Azure)
  • 成本构成
    • 主机:45%
    • 基础设施(UPS、冷却):25%
    • 电力:15%
    • 网络设备与带宽:15%
  • 主机结构
    • 使用标准化“刀片服务器”
    • 每机架20–40个主机
    • TOR交换机连接机架内主机与其他网络设备
    • 主机通常具有40/100 Gbps以太网连接
  • 拓扑结构
    • 分层设计(接入路由器 → Tier-1交换机 → Tier-2交换机 → TOR交换机)
    • 所有链路使用以太网协议(铜缆或光纤)
    • 支持扩展至数十万主机
  • 负载均衡器
    • 接收外部请求并分发至合适主机
    • 实现NAT功能,隐藏内部IP结构
    • 又称“四层交换机”,基于IP+端口进行转发决策
  • 冗余设计
    • 所有关键设备和链路均支持冗余配置
    • 每个TOR可连接多个Tier-2交换机
    • 每个子网进一步划分为VLAN(每个包含数百台主机)
  • 通信瓶颈问题
    • 不同机架间通信受限于共享链路容量
    • 例如:100G链路被40个流共享 → 每流仅2.5G
    • 解决方案:
      • 升级高速交换设备(成本高)
      • 同构部署相关服务(灵活性差)
      • 多路径互联(如图6.31)
  • 多路径路由
    • ECMP(等价多路径)实现流量随机分配
    • 高级方案支持更细粒度负载均衡
    • 个别方案支持包级多路径路由

6.6.2 数据中心网络发展趋势

  • 层级化互连网络
    • 采用Clos网络结构(源自电话交换理论)
    • 支持任意主机间通信
    • 多路径提高容量与可靠性
  • SDN集中控制
    • Google、Microsoft、Facebook等采用逻辑集中式控制
    • 明确划分数据平面(简单交换设备)与控制平面(软件定义)
  • 虚拟化支持
    • VM迁移需保持网络连接一致性
    • 数据中心统一为扁平二层网络
    • 修改ARP机制为DNS式查询系统
  • 物理约束优化
    • 极低延迟环境(微秒级)
    • TCP等拥塞控制协议难以适应
    • 引入数据中心专用TCP变种、RDMA技术、调度理论优化
  • 模块化与定制化
    • 集装箱式模块数据中心(MDC)
    • 支持快速部署与替换
    • 核心网络设计挑战大
    • 自研网络设备、协议、软件成为趋势
  • 可用区(Availability Zone)
    • Amazon提出的数据中心异地备份方案
    • 多个数据中心位于附近建筑,实现数据同步与容错

6.7 回顾:一次网页请求的一生

6.7.1 初始阶段:DHCP、UDP、IP、以太网

  • 获取IP地址
    • 发送广播DHCP请求
    • 路由器回复DHCP ACK
    • 获取IP、默认网关、DNS服务器信息
  • 封装过程
    • DHCP消息 → UDP段 → IP数据报 → 以太网帧
  • 学习交换机
    • 第一次发送后交换机记录MAC地址位置
    • 后续单播帧直接转发至目标端口

6.7.2 DNS与ARP

  • 域名解析
    • 浏览器发起HTTP请求前需通过DNS解析域名
    • 创建DNS查询消息 → UDP段 → IP数据报 → 以太网帧
  • 获取网关MAC地址
    • 已知IP但未知MAC → 发送ARP请求
    • 网关回应ARP应答 → 获取MAC地址
  • 帧发送
    • 帧目的MAC为网关
    • 数据报目的IP为DNS服务器

6.7.3 域内路由至DNS服务器

  • 路由转发
    • 学校路由器根据转发表将DNS请求转发至Comcast网络
    • Comcast内部路由器使用RIP/OSPF/IS-IS+BGP决定下一跳
  • DNS响应返回
    • DNS服务器查找缓存中的www.google.com记录
    • 返回IP地址64.233.169.105
    • 响应数据报经原路径返回Bob的电脑

6.7.4 Web客户端-服务器交互:TCP与HTTP

  • 建立TCP连接
    • 发送SYN段 → 目标端口80(HTTP)
    • 经学校、Comcast、Google网络到达目标服务器
    • 服务器响应SYNACK段 → 客户端完成三次握手
  • 发送HTTP请求
    • 浏览器创建GET请求 → 封装进TCP段 → IP数据报 → 以太网帧
    • 请求最终送达www.google.com服务器
  • 接收HTTP响应
    • 服务器生成HTML响应内容 → 封装发送回客户端
    • 客户端浏览器接收响应 → 解析HTML → 展示网页
  • 涉及协议总结
    • DHCP:动态获取IP
    • DNS:域名解析
    • ARP:IP→MAC映射
    • TCP:可靠传输
    • HTTP:应用层协议
    • IP:路由寻址
    • 以太网:链路层协议## 6.8 总结
  • 链路层基本服务
    • 将网络层数据报从一个节点传输到相邻节点。
    • 数据封装为帧,包含头部和数据部分。
  • 链路类型多样性
    • 点对点链路:单发送者与单接收者。
    • 多路访问链路:多个发送者与接收者共享信道。
    • MPLS链路:逻辑“链路”可能本身是一个网络。
  • 链路层关键技术
    • 错误检测与纠正
      • 奇偶校验、校验和、CRC(循环冗余校验)。
    • 多路访问协议
      • 信道划分(TDM、FDM)、随机访问(ALOHA、CSMA)、轮流机制(轮询、令牌传递)。
    • 链路层地址
      • MAC地址用于局域网内唯一标识设备。
      • ARP协议实现IP地址到MAC地址的映射。
    • 虚拟化技术
      • VLAN(虚拟局域网)实现广播域逻辑隔离。
    • 交换式网络构建
      • 局域网扩展、数据中心网络设计。
  • 以太网的发展
    • 从10Mbps逐步演进至10Gbps。
    • 使用CSMA/CD机制(现代全双工环境下已不常用)。
  • MPLS与数据中心网络
    • MPLS提供链路层服务,支持流量工程。
    • 数据中心网络采用高性能架构(如Fat Tree、Clos结构)并集成SDN技术。
  • 协议栈学习总结
    • 完成物理层、链路层、网络层、传输层、应用层的学习。
    • 后续章节将探讨无线网络、网络安全和多媒体网络等跨层主题。### Wireshark实验:802.11与以太网
  • 提供Wireshark实验用于分析IEEE 802.3以太网协议。
  • 实验包括观察Wireshark中的帧格式。
  • 另一个实验分析家庭网络环境下的数据包轨迹。

人物访谈:Albert Greenberg(微软Azure网络负责人)

职业背景

  • 现任微软Azure网络副总裁。
  • 负责微软数据中心与边缘网络、全球光纤与海底网络、FPGA与SmartNIC卸载、容器网络、CDN、边缘网络等。
  • 曾发表VL2论文,推动云计算网络发展。
  • 早年任职于贝尔实验室与AT&T实验室,是SDN架构先驱之一。
  • 拥有达特茅斯学院数学学士与华盛顿大学计算机科学博士。

学术与荣誉

  • 美国国家工程院院士、ACM会士。
  • 获IEEE Koji Kobayashi计算机与通信奖、ACM Sigcomm奖、Test of Time论文奖。

为何选择网络领域

  • 热爱解决实际问题并结合数学建模。
  • 受Ed Lazowska(系统方向)与Richard Ladner、Martin Tompa(理论方向)影响。

对网络专业学生的建议

  • 网络领域正变得更加多样化、包容和开放。
  • 鼓励更多女性与技术少数群体加入。
  • 技术背景多样化:架构、编程语言、光学、形式化方法、数据科学、AI、容错系统等。
  • 开源系统如SONiC正在改变网络生态。
  • 推崇SDN与硬件解耦(Disaggregation)带来的开放性。

职业生涯中最激动人心的项目

  • 云计算是近年来最具挑战性的领域。
  • 涉及操作系统、分布式系统、性能、安全、机器学习、数据科学、管理等全栈技术。
  • SDN在构建大规模软件定义数据中心中起核心作用。

对未来网络的展望

  • 云计算尚处于10%的发展阶段。
  • 端到端系统中的计算与存储分配将变得更加关键。
  • 边缘计算将推动“横向”扩展,形成更丰富的端到端生态系统。
  • 5G将成为未来网络的重要组成部分。

职业生涯中的启发来源

  • 来自客户与实际网络运维的反馈。
  • 与工程师和研究人员的合作带来深刻洞察。
  • 尤其赞赏那些精通系统全生命周期的技术人员。