《计算机网络-自顶向下方法》4.6 小结、课后习题与Wireshark实验 读书笔记

目录


导语

  大家好呀~第4章网络层:数据平面的内容到这里就全部学完了!从4.1的网络层概述,到4.2的路由器工作原理,4.3的IP协议,4.4的SDN,再到4.5的中间盒------我们构建了一套完整的网络层数据平面知识体系。这一节我们来做一个全章总结,梳理核心知识点,然后精选一些课后习题帮助大家巩固,最后通过Wireshark实验把理论和实践结合起来。

  网络层是整个计算机网络体系结构中最核心、最复杂的层次。数据平面关注的是"每个路由器如何转发数据包",而控制平面(第5章)关注的是"路由器之间如何协作计算路由"。理解了数据平面,我们就理解了数据包在网络中的"每一跳"是怎么处理的。这为下一章学习控制平面打下了坚实的基础。

  准备好了吗?让我们一起回顾这一章的精华,通过习题和实验把知识真正内化~


一、全章核心知识图谱

1. 网络层概述(4.1)

  网络层的核心功能是把数据报从源主机送到目的主机。两个关键概念:

  • 转发(Forwarding):单路由器的本地动作,把包从输入端口送到输出端口,微秒级,属于数据平面。
  • 路由选择(Routing):全网范围的路径计算,秒级,属于控制平面。

  因特网的网络层提供尽力而为服务(Best-Effort) ------不保证可靠、不保证保序、不保证时延、不保证带宽。可靠性由运输层TCP保证,体现了端到端原则

2. 路由器工作原理(4.2)

  路由器由四大组件组成:输入端口、交换结构、输出端口、路由选择处理器。

  • 输入端口:物理层处理→链路层处理→查找转发表(最长前缀匹配,TCAM硬件加速)→排队
  • 交换结构:经内存交换(低端)、经总线交换(中端)、经互联网络交换(高端,交叉开关)
  • 输出端口:排队→调度(FIFO/优先级/WFQ)→封装→发送
  • 排队位置:输出排队(最常见)、输入排队(队头阻塞HOL,用VOQ解决)
  • 分组调度:FIFO(简单但不公平)、优先级排队(保证重要流量但可能饥饿)、WFQ(按权重公平分配)、AQM/RED(主动队列管理避免全局同步)

3. IP协议(4.3)

  IPv4数据报首部20字节(无选项时),关键字段:版本、首部长度、TOS/DS、总长度、标识/标志/片偏移(分片)、TTL、协议、首部校验和、源/目的IP。

  编址:32位地址,点分十进制。有类编址(A/B/C类)已过时,现在用CIDR(a.b.c.d/n)。子网划分提高地址利用率,隔离广播域。特殊地址:0.0.0.0、255.255.255.255、127.0.0.1、私有地址(10/8、172.16/12、192.168/16)。

  DHCP四步握手自动分配IP:Discover→Offer→Request→ACK。

  NAT让多个内部主机共享一个公网IP,同时转换IP和端口,维护NAT转换表。违反端到端原则但简单有效,广泛部署。

  IPv6:128位地址彻底解决地址耗尽,首部固定40字节,取消校验和/分片/选项,改用扩展首部。冒号十六进制表示,支持零压缩。过渡策略:双栈、隧道、转换(NAT64)。

4. 泛化转发和SDN(4.4)

  传统转发只看目的IP,功能死板。泛化转发用"匹配+操作(Match+Action)"模式,可匹配任意字段(链路层/网络层/传输层),执行任意操作(转发/丢弃/修改/复制/排队)。

  OpenFlow是泛化转发的典型实现,流表由流表项组成(匹配字段、优先级、计数器、操作、超时)。多级流表降低TCAM成本,组表实现负载均衡和故障切换。

  SDN把控制平面集中到控制器,数据平面由OpenFlow交换机组成。控制器用编程语言实现复杂网络逻辑,集中管理、灵活可编程。

5. 中间盒(4.5)

  中间盒是执行除普通IP转发外处理的网络设备。常见类型:防火墙、NAT、负载均衡器、IDS/IPS、WAN优化器、流量整形器、VPN网关。

  中间盒的挑战:违反端到端原则、配置复杂、性能瓶颈、可扩展性差、协议僵化。未来方向:NFV(软件化)、SDN(集中控制)。


二、课后习题精选

复习题(R系列)

R1. 数据报网络中,转发和路由选择有什么区别?

  转发是单路由器的本地动作------当数据包到达输入端口时,路由器根据转发表决定从哪个输出端口发送,是微秒级的操作。路由选择是全网范围的路径计算------所有路由器协同工作,计算从源到目的地的完整路径,是秒级的操作。打个比方:转发是"到了路口往左拐还是往右拐",路由选择是"出发前用导航规划整条路线"。

R2. 为什么运输层能提供可靠数据传输,而网络层不提供?

  这体现了端到端原则。网络层如果提供可靠服务,每个路由器都需要维护连接状态、做确认和重传,大大增加了路由器的复杂度和成本。而运输层在端系统实现可靠性,更灵活------应用可以根据需求选择TCP(需要可靠)或UDP(不需要可靠)。而且链路层已经有差错检测,运输层也有校验和,网络层再做一遍是冗余。

R3. 最长前缀匹配是什么?为什么需要它?

  最长前缀匹配是指:当一个IP地址匹配转发表中的多条前缀时,选择前缀长度最长(最具体)的那条。比如目的地址192.168.1.100同时匹配192.168.1.0/24和192.168.0.0/16,应该选/24那条。需要最长前缀匹配是因为转发表中可能有默认路由(0.0.0.0/0)和更具体的路由,应该优先使用更具体的路由。

R4. NAT是如何工作的?它有什么缺点?

  NAT路由器维护一张转换表,记录内部地址:端口到外部地址:端口的映射。外出数据包的源IP和源端口被转换成公网IP和新端口;进入数据包的目的IP和目的端口根据转换表改回内部地址。缺点:违反端到端原则(外部无法主动连接内部主机)、NAT设备有状态(增加复杂度和故障点)、P2P应用需要NAT穿透技术、不是解决地址耗尽的根本方案。

R5. SDN的核心思想是什么?它和传统网络有什么区别?

  SDN的核心思想是把控制平面从路由器中分离出来,集中到一个远程控制器中。数据平面的交换机只负责转发(通过OpenFlow协议接收控制器下发的流表),控制平面的路由计算全部由控制器完成。区别:传统网络每个路由器自己算路由(分布式),SDN由控制器统一算路由(集中式);传统网络功能由硬件决定(固定),SDN功能由控制器软件编程(灵活可编程)。

习题(P系列)

P1. 考虑一个有8个接口的路由器,每个接口的IP地址和子网如下:接口0: 192.168.1.1/24,接口1: 192.168.2.1/24,接口2: 10.0.0.1/8,接口3: 172.16.0.1/12。请写出该路由器的转发表(用最长前缀匹配)。

  转发表如下:

目的前缀 输出接口
192.168.1.0/24 接口0
192.168.2.0/24 接口1
10.0.0.0/8 接口2
172.16.0.0/12 接口3
0.0.0.0/0 默认接口(如接口4)

  当一个目的地址为192.168.1.50的数据包到达时,它匹配192.168.1.0/24(最长前缀),从接口0转发。当目的地址为10.1.2.3时,匹配10.0.0.0/8,从接口2转发。当目的地址为8.8.8.8时,只匹配默认路由0.0.0.0/0,从默认接口转发。

P2. 假设一个IP数据报的总长度为4000字节(首部20字节,数据3980字节),需要经过一个MTU为1500字节的链路。请计算需要分成几个片,每个片的偏移量和MF标志。

  MTU=1500字节,每个片的IP首部20字节,所以每个片最多承载1480字节数据。1480是8的倍数(片偏移以8字节为单位),符合要求。

  数据部分3980字节:

  • 片1:数据1480字节,偏移0,MF=1(后面还有片)
  • 片2:数据1480字节,偏移1480/8=185,MF=1
  • 片3:数据3980-1480-1480=1020字节,偏移2960/8=370,MF=0(最后一个片)

  共3个片。注意:片偏移以8字节为单位,所以偏移量分别是0、185、370。

P3. 考虑一个使用RED的路由器,队列最小阈值5个包,最大阈值15个包。当队列长度为10个包时,RED的丢包概率是多少?(假设最大丢包概率为0.1)

  RED的丢包概率公式(线性增长):当队列长度在min_th和max_th之间时,丢包概率 = max_p × (avg_len - min_th) / (max_th - min_th)。

  代入:0.1 × (10 - 5) / (15 - 5) = 0.1 × 5/10 = 0.05 = 5%。

  当队列长度小于5时,丢包概率为0;大于15时,丢包概率为1(所有新到的包都丢弃)。RED通过在队列满之前就随机丢包,避免了弃尾策略导致的TCP全局同步问题。

P4. 一个NAT路由器的转换表如下:

内部地址:端口 外部地址:端口
192.168.1.10:3000 202.1.1.1:5000
192.168.1.20:4000 202.1.1.1:5001

  请描述以下数据包经过NAT时的转换:

(a) 源192.168.1.10:3000 → 目的128.1.1.1:80(外出)

(b) 源128.1.1.1:80 → 目的202.1.1.1:5001(进入)

  (a) 外出数据包:NAT查找转换表,源192.168.1.10:3000匹配第一条,转换为源202.1.1.1:5000,目的不变。转换后:源202.1.1.1:5000 → 目的128.1.1.1:80。

  (b) 进入数据包:NAT查找转换表,目的202.1.1.1:5001匹配第二条,转换为目的192.168.1.20:4000,源不变。转换后:源128.1.1.1:80 → 目的192.168.1.20:4000。


三、Wireshark实验:探究IP

实验目标

  通过Wireshark抓包,观察IP数据报的实际格式和字段,理解IP分片、TTL、协议号等概念,验证理论知识。

实验步骤

步骤1:捕获IP数据报

  打开Wireshark,选择正在使用的网络接口(如Wi-Fi或以太网),开始抓包。然后打开浏览器访问一个网站(如www.baidu.com),或者在命令行执行ping www.baidu.com。抓包几秒钟后停止。

  在Wireshark的过滤栏中输入ip,只显示IP数据报。点击任意一个IP数据报,在中间的详情面板中展开"Internet Protocol Version 4",可以看到IP首部的各个字段。

步骤2:观察IP首部字段

  在详情面板中,你可以看到以下字段:

  • Version(版本):值为4,表示IPv4
  • Header Length(首部长度):通常为20字节(值为5,5×4=20)
  • Differentiated Services Field(区分服务字段):通常为0x00(普通服务)
  • Total Length(总长度):整个IP数据报的长度(首部+数据)
  • Identification(标识):同一个数据报的所有片有相同标识
  • Flags(标志):DF位(不分片)和MF位(更多片)
  • Fragment Offset(片偏移):通常为0(未分片)
  • Time to Live(生存时间):常见值64(Linux/macOS)或128(Windows)
  • Protocol(协议):6表示TCP,17表示UDP,1表示ICMP
  • Header Checksum(首部校验和):Wireshark会验证校验和是否正确
  • Source(源IP):你的电脑的IP地址
  • Destination(目的IP):服务器的IP地址

步骤3:观察TTL变化

  执行traceroute www.baidu.com(Windows上是tracert),同时用Wireshark抓包。你会看到一系列TTL从1开始递增的IP数据报------TTL=1的包被第一个路由器丢弃并回送ICMP超时报文,TTL=2的包到达第二个路由器......这就是traceroute的工作原理。

  在Wireshark中过滤icmp,可以看到每个路由器回送的"Time-to-live exceeded"报文,其中包含了原始数据报的信息。

步骤4:观察IP分片(可选)

  要观察IP分片,可以发送一个超过MTU的大数据包。在Linux/macOS上执行:ping -s 5000 www.baidu.com(发送5000字节的ICMP包)。在Wireshark中过滤ip,你会看到这个大数据包被分成多个片,每个片有相同的标识(Identification),MF标志和片偏移不同。

  注意:很多系统默认设置了DF位(不分片),如果路径MTU小于数据包大小,路由器会丢弃并回送"Fragmentation Needed"ICMP报文。这就是路径MTU发现机制。

步骤5:观察IPv6(可选)

  如果你的网络支持IPv6,可以在Wireshark中过滤ipv6,观察IPv6数据报的格式。IPv6首部固定40字节,没有校验和字段,地址是128位的冒号十六进制格式。可以执行ping6 ipv6.google.com(如果支持)来生成IPv6流量。

实验思考问题

  1. 你抓到的IP数据报中,协议字段的值有哪些?分别对应什么协议?
  2. TTL的初始值是多少?经过了多少跳到达目的地?
  3. 你观察到IP分片了吗?如果有,每个片的偏移量和MF标志是什么?
  4. 对比IPv4和IPv6首部,有哪些字段被取消了?为什么?
  5. 用Wireshark查看TCP数据报的IP首部,源IP和目的IP分别是什么?和你用ifconfig/ipconfig查到的一致吗?

本节核心总结(必看)

  第4章网络层:数据平面的核心知识体系:

一、五大核心模块

  1. 网络层概述:转发vs路由选择、数据平面vs控制平面、尽力而为服务
  2. 路由器工作原理:输入端口→交换结构→输出端口、最长前缀匹配、三种交换方式、排队与调度
  3. IP协议:IPv4首部格式、CIDR编址、子网划分、DHCP、NAT、IPv6
  4. 泛化转发与SDN:Match+Action、OpenFlow流表、集中控制器
  5. 中间盒:防火墙、NAT、负载均衡器、IDS、NFV与SDN趋势

二、高频考点

  • 最长前缀匹配的计算
  • IP分片的计算(偏移量、MF标志)
  • 子网划分和CIDR地址计算
  • NAT转换表的工作原理
  • 三种交换方式的对比
  • SDN与传统网络的区别
  • IPv4与IPv6首部的对比

三、实验要点

  • Wireshark查看IP首部各字段
  • TTL与traceroute原理
  • IP分片观察
  • IPv4与IPv6对比

结语

  第4章网络层:数据平面到这里就全部结束了!这一章我们从网络层的基本概念出发,深入了路由器的内部结构,学习了IP协议的每一个字段,了解了SDN如何革新网络架构,还认识了网络中各种中间盒。这些知识构成了理解现代计算机网络的核心基础。

  数据平面解决的是"数据包到了路由器怎么转发"的问题,而控制平面要解决的是"路由器怎么知道该往哪转发"的问题------也就是路由选择协议。下一章第5章我们将学习网络层:控制平面,包括链路状态路由算法(OSPF)、距离向量路由算法、BGP(因特网的路由协议)、SDN控制平面、ICMP等内容。控制平面是网络的"大脑",决定了数据的走向,同样精彩!

  建议大家在学习完理论后,一定要动手做Wireshark实验------亲眼看到IP数据报的结构、TTL的变化、分片的过程,比看书本上的图印象深刻得多。理论结合实践,才是学习计算机网络的最佳方式。

  如果你觉得这篇笔记对你有帮助,欢迎点赞收藏~有问题也欢迎留言讨论,我们一起进步!下一章控制平面见!

相关推荐
我爱cope2 小时前
【计算机网络 | 传输层3:TCP 协议概述:面向连接、可靠传输到底意味着什么?】
网络·网络协议·学习·tcp/ip·计算机网络·传输层
zyf1044166 小时前
暑期实践日志 Day49:复盘题库出题成果,夯实章节考点
学习·计算机网络·剪辑·暑期实践·课题任务
啊阿狸不会拉杆7 小时前
《计算机网络-自顶向下方法》5.7 网络管理、SNMP和NETCONF/YANG 读书笔记
开发语言·计算机网络·php
SomeBottle8 小时前
【小记】图片托管从又拍云迁移到腾讯云 EO + COS(兼容图片处理参数)
python·计算机网络·学习笔记·对象存储·cdn·折腾
啊阿狸不会拉杆10 小时前
《计算机网络-自顶向下方法》5.1 概述 读书笔记
网络·计算机网络·智能路由器
河北之花11 小时前
计算机三级:RIP表格
计算机网络·智能路由器
白狐_79812 小时前
408 计算机网络|HTTP 的 RTT 怎么数:用多道题讲清楚
网络协议·计算机网络·http
啊阿狸不会拉杆14 小时前
《计算机网络-自顶向下方法》5.2 路由选择算法 读书笔记
计算机网络·算法·路由
xieliyu.14 小时前
HTTPS 加密流程深度解析|从 HTTP 痛点到 TLS 握手全过程
网络·笔记·网络协议·计算机网络·http·https