VuePress 站点
首页
数学
计算机基础
Java后端
AI大模型
UI设计
首页
数学
计算机基础
Java后端
AI大模型
UI设计
  • 计算机基础
  • 计算机网络应用

    • 课程笔记:TCP三次握手建立连接
    • 课程笔记:TCP三次握手的必要性
    • 课程笔记:TCP协议缺陷与SYN Flood攻击
    • 课程笔记:TCP四次挥手释放连接
    • 课程笔记:TCP四次挥手释放连接的必要性
    • 课程笔记:TCP 报文段格式与 IP 分组
    • 课程笔记:HTTP/2 新特性——二进制分帧
    • 课程笔记:HTTP/2 新特性——多路复用
    • 课程笔记:HTTP/2 新特性——服务器推送(Server Push)
    • 课程笔记:HTTPS 简介与架构图
    • 课程笔记:HTTPS原理与传输层安全协议(TLS)
    • 课程笔记:HTTPS原理——对称加密算法
    • 课程笔记:HTTPS原理——非对称加密算法
    • 课程笔记:HTTPS 原理 —— 数字签名
    • 课程笔记:HTTPS 原理——证书与 CA
    • 课程笔记:完整的HTTPS协议通信流程
    • 课程笔记:HTTPS 协议的性能损耗
    • 课程笔记:TLS False Start 加速 HTTPS
    • 课程笔记:升级 HTTP 协议到 HTTP/2
    • 课程笔记:通过会话恢复加速 HTTPS
    • 课程笔记:OWASP 组织与十大 Web 安全漏洞
    • 课程笔记:XSS 跨站脚本攻击
    • 课程笔记:存储型XSS跨站脚本攻击
    • 课程笔记:XSS攻击窃取Cookie
    • 课程笔记:反射型XSS跨站脚本攻击
    • 课程笔记:DOM型XSS跨站脚本攻击
    • 课程笔记:植入 JS、HTML 代码攻击
    • 课程笔记:XSS攻击的防护策略
    • 课程笔记:XSS攻击的输入环节防护
    • 课程笔记:XSS 劫持 Cookie 的防护策略
    • 课程笔记:XSS 内容输出防护方案
    • 课程笔记:CSP 内容安全策略
    • 课程笔记:CSP 内容安全策略的应用方式
    • 课程笔记:CSRF 跨站请求伪造攻击原理
    • 课程笔记:CSRF 跨站点请求伪造攻击案例
    • 课程笔记:CSRF 跨站请求伪造防护方案
    • 课程笔记:OWASP CSRFTester 工具的原理与使用
    • 课程笔记:点击劫持攻击原理
    • 课程笔记:点击劫持防护方案
    • 课程笔记:URL 跳转漏洞原理与防护
    • 课程笔记:Session 认证与会话劫持
    • 课程笔记:Session固定与Session保持攻击
    • 课程笔记:注入攻击与 OWASP 靶机平台
    • 课程笔记:SQL盲注与ORM注入攻击及防护
    • 课程笔记:XML注入、代码注入、OS命令注入攻击
    • 课程笔记:文件上传漏洞与文件下载/目录浏览漏洞
    • 课程笔记:访问控制与权限访问漏洞
    • 课程笔记:DDoS 分布式拒绝服务攻击原理与防护
    • 课程笔记:CC(Challenge Collapsar)攻击与防护
    • 课程笔记:CDN 的工作原理
    • 课程笔记:CDN的网络架构和术语说明
    • 课程笔记:CDN应用场景与阿里云CDN
    • 课程笔记:如何使用阿里云CDN服务
    • 课程笔记:CDN 刷新与预热
    • 课程笔记:阿里云 CDN 回源配置
    • 课程笔记:CDN 缓存配置
    • 课程笔记:CDN 访问控制与性能优化
  • 计算机网网络

    • 📖 教材介绍与课程导言
    • 📖 1.1 信息时代的计算机网络
    • 📖 1.2 因特网概述
    • 📖 1.3 电路交换、分组交换和报文交换
    • 📖 1.4 计算机网络的定义和分类
    • 📖 1.5 计算机网络的性能指标(1)
    • 📖 1.5 计算机网络的性能指标(2)
    • 📖 1.6.1 常见的三种计算机网络体系结构
    • 📖 1.6.2 计算机网络体系结构分层的必要性
    • 📖 1.6.3 计算机网络体系结构分层思想举例
    • 📖 计算机网络体系结构中的专用术语
    • 📖 物理层概述
    • 📖 物理层下面的传输媒体
    • 📖 传输方式
    • 📖 编码与调制
    • 📖 2.5 信道的极限容量
    • 📖 2.6 信道复用技术
    • 📖 3.1 数据链路层概述
    • 📖 3.2 数据链路层的三个重要问题
    • 📖 3.2.1 封装成帧和透明传输
    • 📖 3.2.2 差错检测
    • 📖 3.2.3 (1) 可靠传输的相关基本概念
    • 📖 3.2.3 (2) 可靠传输的实现机制 - 停止-等待协议(SW)
    • 📖 3.2.3 (3) 可靠传输的实现机制 - 回退N帧协议(GBN)
    • 📖 3.2.3 (4) 可靠传输的实现机制 - 选择重传协议(SR)
    • 📖 3.3 点对点协议 PPP
    • 📖 3.4 共享式以太网
    • 📖 3.4.1 网络适配器和 MAC 地址
    • 📖 3.4.2 (1) CSMA/CD 协议的基本原理
    • 📖 3.4.2 (2) 共享式以太网的争用期、最小帧长和最大帧长
    • 📖 3.4.2 (3) 共享式以太网的退避算法和信道利用率
    • 📖 3.4.3 使用集线器的共享式以太网
    • 📖 3.4.4 在物理层扩展以太网
    • 📖 3.4.5 (1) 网桥的主要结构和基本工作原理
    • 📖 3.4.5 (2) 透明网桥的自学习和转发帧的过程以及生成树协议STP
    • 📖 3.5 交换式以太网
    • 📖 3.5.1 以太网交换机
    • 📖 3.5.2 共享式以太网和交换式以太网的对比
    • 📖 3.6 以太网的MAC帧格式
    • 📖 3.7.1 虚拟局域网 VLAN 概述
    • 📖 3.7.2 虚拟局域网 VLAN 的实现机制
    • 📖 3.8 以太网的发展
    • 📖 3.9.1 802.11 无线局域网的组成
    • 📖 3.9.2 802.11 无线局域网的物理层
    • 📖 3.9.3 (1) 802.11 无线局域网的数据链路层 —— 使用 CSMA/CA 协议(而不使用 CSMA/CD 协议)
    • 📖 CSMA/CA(载波监听多址接入/碰撞避免)协议的基本工作原理
    • 📖 802.11 无线局域网的 MAC 帧格式
    • 📖 网络层概述
    • 📖 网际协议 IP(网际协议)与异构网络互连
    • 📖 IPv4 地址及其编址方法——概述
    • 📖 IPv4 地址的分类编址方法
    • 📖 IPv4 地址的划分子网编址方法
    • 📖 IPv4 地址的无分类编址方法(CIDR)
    • 📖 IPv4 地址的应用规划
    • 📖 IPv4 地址与 MAC 地址
    • 📖 地址解析协议 ARP
    • 📖 IP 数据报的发送和转发流程
    • 📖 IPv4 数据报的首部格式
    • 📖 静态路由配置
    • 📖 因特网的路由选择协议概述
    • 📖 路由信息协议 RIP(路由信息协议)
    • 📖 开放最短路径优先 OSPF(开放最短路径优先)
    • 📖 边界网关协议 BGP(边界网关协议)
    • 📖 路由器的基本工作原理
    • 📖 网际控制报文协议 ICMP(网际控制报文协议)
    • 📖 虚拟专用网 VPN 和网络地址转换 NAT
    • 📖 IP 多播技术的相关基本概念
    • 📖 在局域网上进行硬件多播
    • 📖 在因特网上进行 IP 多播需要的两种协议
    • 📖 网际组管理协议 IGMP
    • 📖 多播路由选择协议
    • 📖 移动 IP 技术概述
    • 📖 IPv6 引进的主要变化
    • 📖 IPv6 数据报的基本首部和扩展首部
    • 📖 IPv6 地址
    • 📖 从 IPv4 向 IPv6 过渡
    • 📖 网际控制报文协议 ICMPv6
    • 📖 软件定义网络 SDN
    • 📖 运输层概述 — 进程间基于网络的通信
    • 📖 TCP/IP 体系结构运输层中的两个重要协议
    • 📖 运输层端口号、复用与分用的概念
    • 📖 UDP 和 TCP 的对比
    • 📖 TCP 报文段的首部格式
    • 📖 "三报文握手"建立 TCP 连接
    • 📖 "四报文挥手"释放 TCP 连接
    • 📖 TCP 的流量控制 (Flow Control)
    • 📖 TCP 的拥塞控制 (Congestion Control) 及与网际层拥塞控制的关系
    • 📖 TCP 可靠传输的实现
    • 📖 TCP 超时重传时间 (RTO) 的选择
    • 📖 TCP 的选择确认 (SACK)
    • 📖 6.1 应用层概述
    • 📖 6.2 客户—服务器方式和对等方式
    • 📖 6.3 动态主机配置协议 DHCP
    • 📖 6.4 域名系统 DNS
    • 📖 6.5 文件传送协议 FTP
    • 📖 电子邮件
    • 📖 万维网 WWW
    • 📖 网络安全概述
    • 📖 密码学相关基本概念
    • 📖 对称密钥密码体制
    • 📖 公钥密码体制
    • 📖 报文摘要和报文鉴别码
    • 📖 数字签名(digital signature)
    • 📖 实体鉴别
    • 📖 密钥分发
    • 📖 访问控制
    • 📖 网络体系结构各层采取的安全措施—物理层和数据链路层
    • 📖 网络体系结构各层采取的安全措施—网络层
    • 📖 网络体系结构各层采取的安全措施—运输层
    • 📖 网络体系结构各层采取的安全措施—应用层
    • 📖 防火墙访问控制与入侵检测系统
    • 📖 常见的网络攻击及其防范
    • 📖 定长子网划分和变长子网划分的二叉树解法

📖 IPv4 数据报的首部格式

🎯 课程摘要:本节详解 IPv4 数据报首部的各字段含义与功能。首部由 20 字节固定部分 + 最大 40 字节可变部分(可选字段)组成,通过版本、首部长度、总长度、标识、标志、片偏移、TTL(生存时间)、协议、首部校验和等字段实现 IP 协议的各种功能,其中标识/标志/片偏移共同支持数据报分片,TTL(生存时间)防止数据报在网络中无限兜圈。

📝 详细笔记

1. 首部整体结构

  • 组成:IPv4 数据报首部 = 20 字节固定部分 + 最大 40 字节可变部分(可选字段)。
  • 描述方式:TCP/IP 标准中以 32 比特(4 字节)为单位描述,每行 32 比特,每个格子称为字段(或域)。
  • ⚠️ 重点/考点:固定部分必含;可变部分(可选字段)很少使用,但会使首部长度可变,增加路由器处理开销。

2. IPv4 首部各字段详解

字段长度含义备注
版本4 bit表示 IP 协议版本通信双方版本须一致,现广泛使用 IPv4
首部长度4 bit表示首部长度,以 4 字节为单位最小 0101(=5→20B),最大 1111(=15→60B)
区分服务8 bit提供不同等级的服务质量旧称服务类型,一般不使用
总长度16 bit首部 + 数据载荷的总长度,以字节为单位最大 65535 字节
标识16 bit同一数据报的各分片具有相同标识IP 计数器每产生一个数据报加 1
标志3 bitDF=禁止分片,MF=后面还有分片最高位保留置 0
片偏移13 bit分片数据载荷在原数据报中的偏移,以 8 字节为单位必须为整数
生存时间 TTL8 bit限制数据报在网络中的生存跳数最大 255,每经路由器减 1,为 0 则丢弃
协议8 bit指明数据载荷是何种协议数据单元TCP=6, UDP=17, ICMP=1 等
首部校验和16 bit检测首部传输是否出现差错每经路由器需重新计算
源 IP 地址32 bit发送方的 IPv4 地址—
目的 IP 地址32 bit接收方的 IPv4 地址—
可选字段0~40 字节支持排错、测量、安全等功能很少使用
填充可变全 0 填充,确保首部长度为 4 字节整数倍—

3. 首部长度与总长度的关系

  • 首部长度字段:取值以 4 字节为单位,最小 5(→20B 固定部分),最大 15(→60B)。
  • 总长度字段:取值以字节为单位,= 首部长度 + 数据载荷长度。
  • 示例:首部长度字段为 0101(=5→20B),总长度字段为 001111111100(=1020B),则数据载荷 = 1020 − 20 = 1000B。

4. 填充字段的作用

  • 目的:确保 IPv4 数据报首部长度为 4 字节的整数倍。
  • 原理:首部长度字段以 4 字节为单位,故首部长度必须是 4 的整数倍;当固定部分(20B) + 可选字段长度使总长非 4 整数倍时,用全 0 填充补齐。
  • 示例:可选字段 3 字节 → 20+3=23B(非 4 整数倍)→ 填充 1 字节 → 24B,首部长度字段填 0110(=6→24B)。

5. IPv4 数据报分片

  • 分片原因:每种数据链路层协议规定了帧数据载荷的最大长度,即 MTU(最大传送单元)(如以太网 MTU = 1500 字节)。当 IPv4 数据报总长度超过 MTU 时,需分片为更小的数据报。
  • 相关字段:标识、标志、片偏移三者共同用于分片。

标志字段(3 bit)

位名称含义
最高位保留位必须置 0
中间位DF(Don't Fragment)DF=1 禁止分片,DF=0 允许分片
最低位MF(More Fragments)MF=1 后面还有分片,MF=0 是最后分片
  • 片偏移:以 8 字节为单位,指出本分片数据载荷在原数据报数据载荷中的相对位置。

分片示例(原数据报:20B 首部 + 3800B 数据载荷,每片≤1420B)

分片数据载荷总长度标识MFDF片偏移
原数据报3800B382023333000
分片11400B(0~1399)142023333100
分片21400B(1400~2799)14202333310175
分片31000B(2800~3799)10202333300350
  • ⚠️ 重点/考点:除最后一个分片外,每个分片数据载荷长度必须是 8 字节的整数倍(否则后续分片片偏移非整数);各分片标识字段相同。

6. 生存时间 TTL(生存时间)

  • 初始定义:以秒为单位,最大 255 秒;路由器转发时减去耗费时间,为 0 则丢弃。
  • 现行定义:以跳数为单位,路由器每转发一次减 1,为 0 则丢弃。
  • 作用:防止被错误路由的 IP 数据报在路由环路中无限兜圈,浪费网络资源。
  • ⚠️ 重点/考点:TTL(生存时间) 是防环路的关键机制;最大值 255。

7. 协议字段常用值

协议字段值协议
1ICMP
2IGMP
6TCP
17UDP
89OSPF

8. 首部校验和

  • 作用:检测 IPv4 数据报首部在传输过程中是否出现差错。
  • 计算方法(反码算术运算):
    1. 发送端将首部划分为若干 16 比特字的序列,首部校验和字段置全 0;
    2. 用反码算术运算将所有 16 比特字相加,取反码得到校验和,写入字段;
    3. 接收端将首部所有 16 比特字再反码求和并取反码,结果为 0 则无差错,否则丢弃。
  • 特点:每经路由器(因 TTL、标志、片偏移等变化)都需重新计算;检测性能不如 CRC(循环冗余检验),但更易用软件实现,称为因特网校验和。
  • ⚠️ 重点/考点:IPv6 中路由器不再计算首部校验和,以加快转发。

9. 二进制反码求和运算规则

  • 从低位到高位逐列计算:0+0=0,0+1=1,1+1=0 但产生进位 1 加到下一列。
  • 最高位产生进位时,最终结果需加 1(循环进位)。
  • 将最终求和结果取反码即得校验和。

💡 核心总结

  • IPv4 首部 = 20B 固定部分 + 可选字段(0~40B) + 填充,首部长度以 4 字节为单位。
  • 标识/标志/片偏移实现分片:DF 控制是否允许分片,MF 标记是否还有后续分片,片偏移以 8 字节为单位。
  • TTL(生存时间) 以跳数为单位防环路;协议字段标识上层协议;首部校验和用反码求和检测差错。
  • 分片时除最后一片外,各片数据载荷长度须为 8 字节整数倍。

❓ 课后思考 / 经典考题

  1. IPv4 数据报首部长度字段以什么为单位?最小和最大取值各代表多少字节?
  2. 某 IPv4 数据报总长度 3800 字节(含 20B 首部),MTU = 1500 字节,如何分片?写出各分片的 MF、片偏移值。
  3. TTL(生存时间)字段的作用是什么?若没有 TTL,路由环路会造成什么后果?
  4. 为什么除最后一个分片外,每个分片数据载荷长度必须是 8 字节的整数倍?
  5. 首部校验和的计算采用什么运算?为何 IPv6 取消了该字段?
最近更新: 2026/6/23 17:18
Contributors: yangwenguang
Prev
📖 IP 数据报的发送和转发流程
Next
📖 静态路由配置