万字超详细(宝宝级)计算机网络期末(幽默版)下
第四章 网络层:互联网的 “交通指挥中心”
开场:从 “寄快递” 看懂网络层
网络层就像 “全国快递调度系统”—— 既要决定快递走哪条路(路由选择),又要给每个包裹贴对 “地址标签”(IP 地址),还得处理 “快递丢件” 问题(ICMP 协议)。接下来每个知识点,先给你用 “快递梗”“生活梗” 唠明白,再上专业定义,关键信息用表格总结,保证你一看就懂、一记就牢!
4.1 网络层的几个重要概念
4.1.1 虚电路服务 vs 数据报服务(表格对比)
| 对比维度 | 梗版解读(快递类比) | 专业定义 | 虚电路服务 | 数据报服务 |
| 核心思路 | 虚电路 =“预约快递专线”,全程走固定路线;数据报 =“随机快递路线”,每次可能走不同路 | 可靠通信责任归属 | 可靠通信由网络保证(专线兜底) | 可靠通信由用户主机保证(自己盯物流) |
| 连接建立 | 虚电路 = 寄快递前先 “预约专线”;数据报 = 直接丢快递,不用预约 | 是否需要建立连接 | 必须建立虚电路连接 | 不需要建立连接 |
| 终点地址 | 虚电路 = 预约时给一次地址,后续不用重复写;数据报 = 每个包裹都写全地址 | 终点地址使用方式 | 仅连接建立阶段使用 | 每个分组都含完整终点 IP 地址 |
| 分组转发 | 虚电路 = 所有快递走同一条预约路线;数据报 = 每个快递单独选路 | 分组转发方式 | 同一条虚电路的分组按同一路由转发 | 每个分组独立选择路由转发 |
| 节点故障影响 | 虚电路 = 专线经过的快递站坏了,所有快递都堵了;数据报 = 某快递站坏了,换条路走 | 节点故障处理 | 过故障节点的虚电路全部失效 | 故障节点可能丢分组,路由重新选择 |
| 分组顺序 | 虚电路 = 按寄件顺序送达,不会乱;数据报 = 可能绕路,先寄的反而后到 | 分组到达顺序 | 总是按发送顺序到达终点 | 到达终点时不一定按发送顺序 |
| 差错 / 流量控制 | 虚电路 = 快递站帮你盯;数据报 = 自己盯物流、催件 | 端到端处理责任 | 可由网络负责,也可由用户主机负责 | 完全由用户主机负责 |
4.1.2 与 IP 协议配套的 “三兄弟”
-
梗版:IP 协议是 “主角”,负责给包裹贴地址;ARP 协议是 “地址翻译官”—— 把 IP 地址(快递单上的 “收件人姓名 + 地址”)翻译成 MAC 地址(快递站的 “货架编号”);ICMP 协议是 “快递客服”—— 包裹丢了、地址错了,它发 “提示消息”;IGMP 协议是 “群聊管理员”—— 管理 “多播群”(比如直播时给一群人发同一视频流)。
-
专业版:与网际协议 IP 配套使用的协议有三个:地址解析协议 ARP(实现 IP 地址到 MAC 地址的转换)、网际控制报文协议 ICMP(用于传递差错报告和询问消息)、网际组管理协议 IGMP(用于管理多播组中的成员)。
4.1.3 中间设备:不同层的 “快递站”(表格对比)
| 中间设备 | 对应层次 | 梗版解读(快递站类比) | 专业定义 |
| 转发器 | 物理层 | “网线延长器快递站”—— 只负责把信号放大,不看内容 | 物理层设备,仅放大物理信号,实现物理层信号的转发 |
| 网桥 / 桥接器 | 数据链路层 | “小区内快递站”—— 只在小区内分快递,看 MAC 地址 | 数据链路层设备,根据 MAC 地址转发帧,隔离碰撞域 |
| 路由器 | 网络层 | “跨省快递调度站”—— 看 IP 地址,决定快递走哪条跨省路线 | 网络层核心设备,根据 IP 地址选择路由,转发 IP 分组 |
| 网关 | 网络层以上 | “国际快递中转站”—— 处理不同协议的转换(比如 IPv4 转 IPv6) | 网络层以上的设备,实现不同网络协议的转换,用于异构网络互联 |
4.1.4 直接交付 vs 间接交付
-
梗版:直接交付 =“同小区送快递”—— 收件人在同一个局域网(小区),直接送到家,不用经过其他快递站;间接交付 =“跨省送快递”—— 收件人在其他局域网(其他省份),得经过多个路由器(快递站)转发。
-
专业版:直接交付指分组的源主机和目的主机在同一个网络,分组直接从源主机发送到目的主机,无需经过路由器;间接交付指源主机和目的主机不在同一个网络,分组需经过一个或多个路由器转发,才能到达目的主机。
4.1.5 IP 地址:互联网的 “身份证号”
-
梗版:IP 地址是 “给每台电脑的全球唯一身份证号”,32 位长(IPv4),就像 “11010010.00001110.00100011.00000111” 这样的二进制串,人类看不懂,所以转成十进制(比如 [128.14.35.7])。每个连互联网的设备接口,都得有一个唯一的 IP 地址,不然就像 “快递没写收件人地址”,送不出去。
-
专业版:IP 地址是分配给互联网上每台主机(或路由器)每个接口的 32 位(IPv4)全球唯一标识符,用于在网络层标识设备接口,实现分组的路由和转发。
分类的 IP 地址(A/B/C 类单播地址)
-
梗版:A 类地址是 “大公司专属”—— 网络号占 8 位,能容纳超多主机(比如微软、谷歌);B 类地址是 “中型企业专属”—— 网络号占 16 位,主机数中等;C 类地址是 “小公司 / 家庭专属”—— 网络号占 24 位,主机数少(比如小区宽带)。
-
专业版:分类的 IP 地址将 32 位地址分为网络号和主机号,A 类(网络号 8 位)、B 类(网络号 16 位)、C 类(网络号 24 位)均为单播地址,用于一对一通信;D 类为多播地址,E 类为保留地址。
一般不指派的特殊 IP 地址(表格总结)
| 网络号 | 主机号 | 源地址使用 | 目的地址使用 | 梗版解读 | 专业含义 |
| 0 | 0 | 可以 | 不可 | “我自己”—— 电脑刚开机没 IP 时,临时用它代表自己 | 本网络上的本主机(DHCP 协议中用于请求 IP) |
| 0 | X | 可以 | 不可 | “本小区的 X 号住户”—— 在本网络内找主机 X | 本网络上主机号为 X 的主机 |
| 全 1 | 全 1 | 不可 | 可以 | “小区广播”—— 给本网络所有主机发消息,路由器不转发 | 本网络广播(受限广播),各路由器不转发 |
| Y | 全 1 | 不可 | 可以 | “Y 小区广播”—— 给网络号为 Y 的所有主机发消息 | 网络号为 Y 的网络广播(直接广播) |
| 127 | 非全 0 / 全 1 | 可以 | 可以 | “自己跟自己说话”—— 测试电脑网卡是否正常(比如 ping 127.0.0.1) | 本地软件环回测试地址,用于测试主机 TCP/IP 协议栈 |
4.1.6 无分类编址 CIDR(无分类域间路由选择)
CIDR 核心概念
-
梗版:CIDR 是 “IP 地址的打包快递”—— 把多个连续的 IP 地址打包成一个 “地址块”,比如把 128.14.32.0 到 128.14.47.255 这 4096 个 IP 打包成 “128.14.35.7/20”,斜线后的 “20” 代表 “前 20 位是地址块标签(网络前缀),后 12 位是具体住户号(主机号)”。地址掩码就是 “标签模板”,前 20 位是 1(代表标签),后 12 位是 0(代表住户号),比如 255.255.240.0/20。
-
专业版:CIDR 取消分类 IP 地址的网络号 / 主机号划分,用 “网络前缀 + 主机号” 表示 IP 地址(记为 IP 地址 / 前缀长度)。网络前缀指明地址块的共同前缀,地址掩码由连续的 1(长度 = 前缀长度)和连续的 0 组成,用于提取网络前缀。CIDR 地址块是网络前缀相同的所有连续 IP 地址的集合。
CIDR 地址块计算示例(以 128.14.35.7/20 为例)
| 计算项 | 二进制表示 | 十进制结果 | 梗版解读 |
| 原始 IP 地址 | 10000000.00001110.00100011.00000111 | 128.14.35.7 | 具体住户地址 |
| 网络前缀(前 20 位) | 10000000.00001110.0010 | 128.14.32 | 地址块标签 |
| 主机号(后 12 位) | 0011.00000111 | 3.7 | 住户号 |
| 最小地址(主机号全 0) | 10000000.00001110.00100000.00000000 | 128.14.32.0 | 地址块第一个住户 |
| 最大地址(主机号全 1) | 10000000.00001110.00101111.11111111 | 128.14.47.255 | 地址块最后一个住户 |
| 地址掩码(前 20 位 1) | 11111111.11111111.11110000.00000000 | 255.255.240.0/20 | 地址块标签模板 |
常用 CIDR 地址块(表格呈现)
| 网络前缀长度 | 点分十进制掩码 | 包含地址数 | 相当于分类网络数 | 梗版解读 |
| /13 | 255.248.0.0 | 512K | 8 个 B 类 / 2048 个 C 类 | 大区域快递站,覆盖 8 个中型网络 |
| /16 | 255.255.0.0 | 64K | 1 个 B 类 / 256 个 C 类 | 中型城市快递站,覆盖 1 个中型网络 |
| /24 | 255.255.255.0 | 256 | 1 个 C 类 | 小区快递站,覆盖 1 个小型网络 |
| /27 | 255.255.255.224 | 32 | 1/8 个 C 类 | 单元楼快递站,覆盖 1 个小型网络的 1/8 |
CIDR 三个特殊地址块
-
梗版:/32=“专属快递柜”—— 只有一个 IP,给单台主机用;/31=“双人快递盒”—— 只有 2 个 IP,给点对点链路(比如路由器之间的专线)用;0.0.0.0/0=“默认快递路线”—— 不知道往哪送时,就走这条默认路。
-
专业版:①/32(前缀 32 位):无主机号,用于主机路由;②/31(前缀 31 位):仅 2 个 IP,用于点对点链路;③0.0.0.0/0(前缀 0 位):默认路由,用于无匹配路由时的转发。
4.1.7 IP 地址的特点(表格总结)
| 特点 | 梗版解读 | 专业定义 |
| 网络前缀 + 主机号 | IP 地址 =“小区标签 + 住户号”,缺一不可 | 每一个 IP 地址由网络前缀和主机号两部分组成,标识网络和网络内的主机 |
| 标识接口而非主机 | 一台电脑连两个网络(比如笔记本连 WiFi 和网线),就有两个 IP,像 “一个人有两个快递地址” | IP 地址标志一台主机(或路由器)的一个接口,而非整个主机 |
| 转发器 / 交换机不划分网络 | 小区里的交换机(楼道路由器)连的电脑,都算一个网络,像 “同一栋楼算一个小区” | 转发器或交换机连接的若干局域网仍为一个网络,网络边界由路由器划分 |
| 网络平等 | 不管是 A 类还是 C 类网络,在互联网中地位一样,像 “不管小区大小,快递待遇相同” | 所有分配到网络前缀的网络在互联网中地位平等,无优先级差异 |
4.1.8 IP 地址 vs MAC 地址(表格对比)
| 对比维度 | 梗版解读 | 专业定义 | IP 地址 | MAC 地址 |
| 所属层次 | IP 地址 =“快递单上的收件人地址”(全国通用);MAC 地址 =“快递站货架编号”(小区内用) | 对应协议层次 | 网络层及以上(逻辑地址) | 数据链路层(物理地址) |
| 分配方式 | IP 地址 =“快递站分配的临时地址”(可改);MAC 地址 =“货架出厂编号”(固定) | 分配与修改 | 动态分配(如 DHCP),可修改 | 固化在网卡 ROM 中,全球唯一,不可修改 |
| 使用场景 | IP 地址 =“跨省快递指路”;MAC 地址 =“小区内分快递” | 通信范围 | 用于跨网络通信(路由转发) | 用于同一网络内帧的传输(链路层转发) |
| 封装关系 | IP 数据报 =“快递包裹”,交给数据链路层后,套上 “MAC 帧外壳”(写 MAC 地址) | 封装层次 | 封装在 IP 数据报首部 | 封装在 MAC 帧首部,IP 数据报作为 MAC 帧的数据 |
4.2 IP 层转发分组过程
4.2.1 基于终点的转发(以 P141 例 4-2 为例)
-
梗版:路由器转发分组就像 “快递站分件”—— 先看收件人 IP 地址(比如 202.113.0.3),查 “路由表”(快递路线表),找到对应的 “下一站快递站”(下一跳路由器 IP),然后把包裹发过去。比如路由器收到目的 IP 为 202.113.0.3 的分组,查路由表发现该 IP 属于 “202.113.0.0/24” 网络,下一跳是 192.168.1.2,就把分组发给 192.168.1.2。
-
专业版:基于终点的转发指路由器根据分组的目的 IP 地址,查找路由表,确定对应的下一跳路由器和输出端口,将分组转发到下一跳。转发过程中,路由器仅关注目的 IP 地址的网络前缀,不关心主机号。
4.2.2 最长前缀匹配(以 P142 例 4-3 为例)
-
梗版:最长前缀匹配 =“快递单地址越具体,越优先匹配”。比如收到目的 IP 为 128.14.35.7 的分组,路由表中有 “128.14.32.0/20”(前缀 20 位)和 “128.14.35.0/24”(前缀 24 位),优先匹配前缀更长的 “128.14.35.0/24”,因为它更具体(精确到小区,而非大区域)。
-
专业版:最长前缀匹配是路由器转发分组的核心原则,即从路由表中选择与目的 IP 地址网络前缀匹配最长的路由条目,以确保分组转发到最精确的网络,减少转发路径错误。
4.3 网际控制报文协议 ICMP
4.3.1 ICMP 报文的种类(表格总结)
| 报文类型 | 类型值 | 梗版解读(快递客服类比) | 专业功能 | 典型场景 |
| 差错报告报文 - 终点不可达 | 3 | “快递送不到”—— 收件人地址错、小区不让进,客服发通知 | 当分组无法送达目的地址时,路由器向源主机发送差错报告 | 目的 IP 不存在、端口未开放、路由不可达 |
| 差错报告报文 - 时间超过 | 11 | “快递超时”—— 快递在路上走太久(TTL 值为 0),客服通知寄件人 | 分组的 TTL(生存时间)值减为 0,或分片重组超时,路由器发送差错报告 | 路由环路导致分组循环、分片重组超时 |
| 差错报告报文 - 参数问题 | 12 | “快递单填错”——IP 首部参数错误(比如校验和错),客服退回 | 发现 IP 数据报首部参数错误,无法转发,路由器发送差错报告 | IP 首部校验和错误、选项字段格式错误 |
| 差错报告报文 - 改变路由(Redirect) | 5 | “快递路线改了”—— 原来的路线绕远,客服告诉寄件人新路线 | 路由器发现源主机使用的路由不是最优路由,通知源主机更新路由 | 源主机使用默认路由,存在更短路径时 |
| 询问报文 - 回送请求 / 回答 | 8/0 | “快递测试”—— 寄件人发 “测试包裹”,收件人收到后回发,确认通路正常 | 源主机发送 Echo 请求报文,目的主机收到后回发 Echo 回答报文,测试连通性 | ping 命令(测试两台主机是否连通) |
| 询问报文 - 时间戳请求 / 回答 | 13/14 | “快递计时”—— 寄件人发 “计时包裹”,记录发送 / 接收时间,测算延迟 | 源主机发送时间戳请求,目的主机回发时间戳回答,用于同步时间或测算时延 | 网络时间同步、时延测量 |
4.4 IPv6
4.4.1 IPv6 的 8 大核心变化(表格对比)
| 变化点 | 梗版解读(快递系统升级类比) | 专业改进 | 对比 IPv4 |
| 更大地址空间 | “快递地址从 11 位升级到 39 位”—— 原来 32 位地址不够用(比如物联网设备太多),现在 128 位,够用到 “地球装不下设备” | 地址长度从 32 位增至 128 位 | 32 位(约 43 亿地址)→128 位(地址数量极大,满足未来需求) |
| 扩展地址层次 | “快递地址分更多级”—— 原来分 “省 - 市 - 区”,现在分 “全球 - 区域 - 城市 - 小区 - 楼栋”,路由更高效 | 地址层次结构更丰富,支持多级子网划分 | 分类地址层次简单(仅网络号 + 主机号),IPv6 层次更灵活 |
| 灵活首部格式 | “快递单可自定义贴纸”—— 基础首部固定,可选功能(比如加密、优先级)用 “扩展首部”,不浪费空间 | 基础首部固定(40 字节),定义多个可选扩展首部,按需添加 | IPv4 首部选项集成在首部,易浪费带宽,灵活性低 |
| 改进选项 | “快递单选项放包裹里”—— 选项信息放在有效载荷中,不占首部空间,转发更快 | 选项信息放在扩展首部(属于有效载荷),不影响基础首部处理 | IPv4 选项在首部,增加路由器处理时间 |
| 协议可扩充 | “快递系统能加新功能”—— 未来有新应用(比如元宇宙通信),不用重构协议,直接扩展 | 支持协议功能的后续扩充,适应新应用场景 | IPv4 协议架构固定,难以扩展新功能 |
| 即插即用(自动配置) | “快递地址自动分配”—— 设备连网后自动获取 IPv6 地址,不用装 DHCP,像 “手机连 WiFi 自动连网” | 支持无状态自动配置,设备无需依赖 DHCP 服务器即可获取地址 | IPv4 需 DHCP 服务器分配地址(或手动配置),无即插即用能力 |
| 支持资源预分配 | “快递预留专线”—— 直播、视频会议需要稳定带宽,IPv6 可提前预留资源,不卡顿 | 支持服务质量(QoS),可预分配带宽和时延资源,保障实时应用 | IPv4 无原生资源预分配机制,实时应用易受网络拥堵影响 |
| 8 字节对齐首部 | “快递单按 8 字节排版”—— 首部长度是 8 字节整数倍,路由器处理更快,像 “按标准尺寸打包,分拣效率高” | 首部长度必须是 8 字节的整数倍,提升路由器转发效率 | IPv4 首部按 4 字节对齐,处理效率低于 IPv6 |
4.4.2 IPv6 的常用地址分类(表格总结)
| 地址类型 | 二进制前缀 | IPv6 记法 | 梗版解读 | 专业用途 |
| 未指明地址 | 00…0(128 位) | ::/128 | “无地址”—— 设备刚连网,还没分配地址,像 “快递没写收件人” | 仅用于设备初始化阶段,不能作为源地址或目的地址 |
| 环回地址 | 00…1(128 位) | ::1/128 | “自己跟自己说话”—— 测试设备 IPv6 协议栈,像 “寄快递给自己” | 本地软件环回测试,相当于 IPv4 的 127.0.0.1 |
| 多播地址 | 11111111(8 位) | FF00::/8 | “群聊快递”—— 给一群设备发同一数据(比如直播),像 “批量寄同款快递” | 一对多通信,用于多播组数据传输(如视频会议、直播) |
| 本地站点单播地址 | 1111111011(10 位) | FEC0::/10 | “小区内专属地址”—— 仅在本地站点(比如公司园区)内使用,出了园区无效 | 本地站点内的单播通信,不接入互联网 |
| 本地链路单播地址 | 1111111010(10 位) | FE80::/10 | “楼内专属地址”—— 仅在本地链路(比如家庭 WiFi)内使用,不能连互联网 | 本地链路内的单播通信(如家庭内设备互联),无需路由器转发 |
| 全球单播地址 | 除上述外的前缀 | - | “全球通用地址”—— 能连互联网,像 “全国通用快递地址” | 互联网中的跨网络单播通信,是 IPv6 的主要地址类型 |
4.5 互联网的路由选择协议
4.5.1 分层次路由选择协议(表格对比)
| 协议类型 | 英文缩写 | 适用范围 | 梗版解读(快递调度类比) | 专业定义 | 代表协议 |
| 内部网关协议 | IGP | 自治系统(AS)内部(比如一个公司、一个学校的网络) | “小区内快递调度”—— 负责同一小区内的快递路线规划,不管小区外 | 自治系统(AS)内部的路由选择协议,用于计算 AS 内的路由 | RIP 协议、OSPF 协议 |
| 外部网关协议 | EGP | 自治系统之间(比如百度网络和阿里网络之间) | “跨省快递调度”—— 负责不同小区之间的快递路线协商,协调跨区域运输 | 自治系统之间的路由选择协议,用于计算 AS 间的路由 | BGP-4 协议 |
补充:自治系统(AS)相关概念
-
梗版:自治系统是 “快递独立运营区”—— 比如一个公司的网络就是一个 AS,有自己的 “快递调度规则”(IGP 协议);不同 AS 之间要互相发快递,得用 “跨区调度规则”(EGP 协议)。域内路由 =“小区内调度”,域间路由 =“跨省调度”。
-
专业版:自治系统(AS)是互联网中一个独立管理的网络区域,使用统一的路由选择协议(IGP)。自治系统内部的路由选择称为域内路由选择(intradomain routing),自治系统之间的路由选择称为域间路由选择(interdomain routing)。
4.5.2 内部网关协议 RIP
-
梗版:RIP 协议是 “小区内的简易快递路线表”—— 路由器之间只互相通知 “我到某个网络要走 2 步(经过 2 个路由器)”,距离用 “路由器数量” 衡量(直接连接的网络距离 = 1)。优点是简单,适合小网络(比如几十台设备的小区);缺点是 “好消息传得快,坏消息传得慢”—— 比如某条路线断了,要很久才能通知到所有路由器,像 “快递站知道某条路堵了,却迟迟没告诉其他站”。
-
专业版:RIP(路由信息协议)是基于距离向量算法的 IGP 协议,距离定义为 “经过的路由器数”(直接连接网络距离 = 1,非直接连接网络距离 = 经过路由器数 + 1)。RIP 仅适用于小型互联网,核心特点是 “好消息传播快,坏消息传播慢”(因距离向量算法的收敛速度慢)。
4.5.3 距离向量算法(以 P161 例 4-4 为例)
-
梗版:距离向量算法是 “路由器的路线更新规则”—— 每个路由器都有一张 “距离表”,记录 “到每个网络的距离” 和 “下一跳路由器”。比如路由器 A 收到路由器 B 的通知 “B 到网络 X 距离 = 2”,A 就计算 “自己到 X 的距离 = A 到 B 的距离(1)+2=3”,如果这个距离比原来的记录近,就更新路线,像 “快递站 A 听快递站 B 说‘到 X 小区要 2 步’,就算出自己到 X 要 3 步,比原来的 4 步近,就改走 B 的路线”。
-
专业版:距离向量算法的核心是 “每个路由器向邻居路由器发送自己的路由表(距离向量),邻居路由器根据收到的信息更新自己的路由表”。更新规则为:对于每个目的网络 N,若通过邻居路由器 R 到达 N 的距离(本路由器到 R 的距离 + R 到 N 的距离)小于当前记录的距离,则更新路由表,将下一跳设为 R,距离设为计算值。
4.5.4 内部网关协议 OSPF
-
梗版:OSPF 协议是 “小区内的精密快递路线表”—— 比 RIP 高级,路由器之间互相通知 “我和哪个路由器相邻,这条链路的速度快不快(度量值,比如带宽、时延)”,而不是只说 “距离多少步”。OSPF 还把大网络分成 “区域”(比如把一个大公司分成 “研发区”“行政区”),每个区域内的路由器只处理本区域的路线,减少信息交换量。关键角色包括:主干区域(连接所有区域的 “主干道”)、区域边界路由器(连接区域和主干的 “中转站”)、主干路由器(在主干区域内的 “调度员”)、自治系统边界路由器(连接其他 AS 的 “跨区接口”)。
-
专业版:OSPF(开放最短路径优先)是基于链路状态算法的 IGP 协议,“链路状态” 指 “本路由器的相邻路由器及链路度量值(费用、距离、时延、带宽等)”。OSPF 采用层次化区域划分(如主干区域、普通区域),核心角色包括区域边界路由器(连接区域与主干)、主干路由器(位于主干区域)、自治系统边界路由器(连接 AS 与其他 AS)。OSPF 适用于中大型互联网,收敛速度快、路由精度高。
4.6 路由器
4.6.1 路由器的本质与结构
-
梗版:路由器是 “互联网的快递中转站”,本质是一台 “多接口专用电脑”—— 有多个 “快递入口”(输入端口)和 “快递出口”(输出端口),任务就是把收到的 “快递(IP 分组)” 转发到正确的出口。路由器分两部分:“路线规划部(路由选择部分)”—— 负责制定 “快递路线表(路由表)”,比如 “到北京的快递走 A 出口”;“快递分拣部(分组转发部分)”—— 负责按路线表分拣快递,由 “交换结构(分拣传送带)”“输入端口(收件窗口)”“输出端口(发件窗口)” 组成。
-
专业版:路由器是具有多个输入 / 输出端口的专用计算机,核心任务是转发 IP 分组。路由器分为路由选择部分(控制层面)和分组转发部分(数据层面):①路由选择部分:负责计算和维护路由表(由路由协议实现);②分组转发部分:由交换结构、输入端口、输出端口组成,负责根据路由表转发分组。
4.6.2 分组转发 vs 路由选择(表格对比)
| 对比维度 | 梗版解读(快递类比) | 专业定义 | 分组转发(数据层面) | 路由选择(控制层面) |
| 涉及范围 | 分组转发 =“单个快递站分拣快递”;路由选择 =“全国快递站一起制定路线表” | 涉及的路由器数量 | 仅涉及一个路由器 | 涉及互联网中的多个路由器 |
| 核心任务 | 分组转发 =“按现成路线表分快递”;路由选择 =“制定新的路线表” | 核心功能 | 根据转发表(由路由表生成)将分组从输入端口转发到输出端口 | 协同计算和更新路由表,确定最优转发路径 |
| 实现方式 | 分组转发 =“快递员按表分拣”;路由选择 =“总部开会定路线” | 实现机制 | 硬件 / 软件快速转发(强调效率) | 由路由协议(如 RIP、OSPF、BGP)实现(强调正确性) |
| 频率 | 分组转发 =“每个快递都要做”;路由选择 =“路线变了才做” | 执行频率 | 每个分组到达时都执行,频率高 | 仅在网络拓扑变化(如链路故障、新增网络)时执行,频率低 |
本章总结:网络层的 “核心三件事”
-
地址标识:用 IP 地址(IPv4/IPv6)给设备接口贴 “全球唯一标签”,配合 MAC 地址实现 “跨网络 + 同网络” 通信;
-
路由转发:用 RIP/OSPF/BGP 等协议制定 “路线表”,路由器按 “最长前缀匹配” 规则转发分组,确保数据走最优路;
-
差错处理:用 ICMP 协议当 “客服”,处理 “地址错、超时、路线改” 等问题,保障通信顺畅。
第五章 运输层:互联网的 “搞笑打工人”
开场:从 “外卖 / 快递翻车现场” 看懂运输层
如果网络层是 “外卖平台调度中心”,那运输层就是 “外卖小哥”—— 有的小哥是 “顺丰级强迫症”(TCP):送餐前先打电话确认,漏菜必补,超时必赔;有的是 “饿了么急单侠”(UDP):车没停稳就扔餐,撒了不管,但能卡着点送到。接下来全是搞笑名场面,保证你笑着懂知识!
5.1 运输层协议概述
5.1.1 TCP vs UDP:“强迫症小哥” vs “摆烂急单侠”(表格对比)
| 协议类型 | 搞笑梗版(外卖小哥人设) | 专业定义 | 适用场景(对应 “订单类型”) |
| TCP(面向连接) | “顺丰级强迫症小哥”:1. 送餐前必打电话:“您好,您点的奶茶到楼下了,方便取吗?”(建立连接)2. 漏了珍珠必补:“不好意思,珍珠撒了,我回店里重新做一杯!”(重传)3. 按顺序送:先送奶茶,再送小吃,绝不搞反(按序交付)4. 送到要签字:“麻烦确认一下,餐没漏吧?”(四次挥手释放连接) | 面向连接、可靠交付、全双工通信、面向字节流的运输层协议,通过重传、确认等机制保证数据不丢、不乱 | 怕 “翻车” 的订单:刷网页(缺个图片像少块肉)、发邮件(漏附件等于白发)、传文件(电影缺段剧情能气疯) |
| UDP(无连接) | “饿了么摆烂急单侠”:1. 不打电话直接扔:车停路边,餐往外卖柜一塞就跑(无需连接)2. 撒了假装没看见:“反正顾客没当场说,可能没发现吧?”(尽最大努力交付,不重传)3. 装多少送多少:餐盒满了就直接送,不拆分(面向报文)4. 堵车也猛冲:“超时扣钱,管它路上堵不堵,先踩油门再说!”(无拥塞控制) | 无连接、尽最大努力交付、面向报文、无拥塞控制的运输层协议,不保证可靠传输,但传输效率高 | 能 “忍翻车” 的急单:视频通话(卡一下像卡痰,忍忍就过)、直播(漏帧像主播眨了下眼)、DNS 查询(查错了再查一次,反正快) |
5.1.2 应用层与运输层协议对应:“不同订单找不同小哥”(表格)
| 应用场景 | 应用层协议 | 运输层协议(小哥类型) | 搞笑梗解读(订单名场面) |
| 查域名(查 “奶茶店地址”) | DNS | UDP(急单侠) | “我现在就要知道‘蜜雪冰城’的 IP(门店地址),等 1 秒都嫌久,急单侠快上!”(DNS 查询超 1 秒就像等奶茶等出耐心,不可能) |
| 传小文件(发 “作业答案”) | TFTP | UDP(急单侠) | “就一张作业答案图片,急单侠扔过来就行,撒了大不了再发一次,反正小!”(小文件重传成本 = 重新拍张照,不值当用强迫症小哥) |
| 视频通话(和对象 “云约会”) | 专用协议 | UDP(急单侠) | “对象脸卡成马赛克也不能断!要是等强迫症小哥重传,约会早凉了,摆烂就摆烂,至少没断联!”(延迟 1 秒比卡帧致命,UDP 的 “快” 比 “好” 重要) |
| 发邮件(给老板 “交报告”) | SMTP | TCP(强迫症小哥) | “报告漏个附件,老板能骂我半天!必须让强迫症小哥送,漏了必补,绝不能出岔子!”(邮件丢附件 = 工作失误,TCP 的可靠是 “保命符”) |
| 刷网页(看 “八卦新闻”) | HTTP | TCP(强迫症小哥) | “八卦新闻缺个图,像吃西瓜没吐籽,难受!强迫症小哥必须把每个图都送到,一个都不能少!”(网页缺资源 = 阅读体验崩塌,TCP 保证完整) |
5.1.3 端口:“外卖柜格子编号”(搞笑版)
-
搞笑梗版:端口就是 “小区外卖柜的格子编号”—— 比如 80 号格子是 “浏览器专属柜”(刷网页的餐都放这),21 号格子是 “文件传输柜”(传文件的餐放这),53 号格子是 “DNS 查地址柜”(查门店地址的纸条放这)。要是没有编号,外卖小哥可能把 “浏览器的奶茶” 放进 “微信的格子”,你打开微信找奶茶,找破头都没有!
-
专业版:端口是应用层与运输层的抽象通信终点,用于标识应用程序。运输层通过端口号将数据准确交付给对应进程,避免不同应用的数据混淆,分为服务器端知名端口(固定编号)和客户端临时端口(动态分配)。
5.1.4 知名端口号:“外卖柜固定格子”(搞笑表格)
| 应用程序 | 端口号 | 搞笑梗解读(格子用途) |
| FTP(文件传送) | 21 | “大文件专属柜”—— 送 “10G 电影” 的强迫症小哥,必把餐放 21 号柜,绝不乱塞 |
| HTTP(网页) | 80 | “八卦新闻柜”—— 刷 “明星塌房” 新闻的餐,全放 80 号柜,打开浏览器就能取 |
| HTTPS(加密网页) | 443 | “隐私外卖柜”—— 买 “情趣用品” 的餐(刷网银、淘宝),放 443 号加密柜,别人看不到 |
| DNS(域名查询) | 53 | “查地址纸条柜”—— 问 “蜜雪冰城在哪” 的纸条,全放 53 号柜,急单侠扔了就走 |
| SMTP(邮件) | 25 | “老板报告柜”—— 给老板发的 “加班报告”,放 25 号柜,强迫症小哥必确认老板收到 |
5.2 用户数据报协议 UDP(“摆烂急单侠” 的 6 大摆烂行为)
5.2.1 UDP 的 6 大摆烂特点(搞笑表格)
| 特点 | 搞笑梗版(急单侠摆烂行为) | 专业定义 |
| 无连接 | “不打电话直接冲”—— 外卖小哥看地址在 10 楼,不打电话确认有没有电梯,直接扛着餐跑上去,结果顾客不在家,餐扔门口就走 | 发送方无需与接收方建立连接,直接发送 UDP 数据报,无需三次握手 |
| 尽最大努力交付 | “撒了不管,送了就行”—— 奶茶撒了一半,小哥心想 “至少送到了,顾客没说就是没发现”,绝不回头补 | 不提供可靠交付,不重传丢失的数据,不处理乱序,仅保证数据正确时交付 |
| 面向报文 | “装多少送多少,不拆不拼”—— 顾客点了 “奶茶 + 汉堡 + 薯条”,小哥把三个打包成一个大盒子,不拆分,哪怕盒子塞不下也硬塞 | UDP 数据报长度等于应用层数据长度,不拆分或合并应用层数据,保留报文边界 |
| 无拥塞控制 | “堵车也猛踩油门”—— 晚高峰路上堵成狗,小哥为了不超时,从自行车道超 car,哪怕剐蹭也不管,先送完再说 | 不具备拥塞控制机制,发送速率由应用层决定,网络拥堵时仍维持原速率,可能加剧拥堵 |
| 支持多交互 | “一次送三户,效率拉满”—— 小哥同时接了 101、102、103 的单,把三户的餐放一个袋子里,到楼下喊一声 “101-103 取餐”,谁先抢是谁的 | 支持一对一、一对多、多对一、多对多通信,UDP 数据报可发送给单个或多个接收方 |
| 首部开销小 | “快递单只写地址,别的不填”—— 小哥的外卖单只写 “10 楼 A 户”,不写顾客电话、餐品名称,单子小,贴得快 | UDP 首部仅 8 字节(源端口、目的端口、长度、校验和),开销远小于 TCP(20 字节起) |
5.3 传输控制协议 TCP(“强迫症小哥” 的 5 大强迫症行为)
5.3.1 TCP 的 5 大强迫症特点(搞笑表格)
| 特点 | 搞笑梗版(强迫症小哥行为) | 专业定义 |
| 面向连接 | “三打电话确认,少一次不行”——1. 出发前:“您好,您的餐 10 分钟后到,在家吗?”(第一次握手)2. 到楼下:“我到楼下了,您下来取还是送上去?”(第二次握手)3. 送门前:“我在门口了,麻烦开下门”(第三次握手)少一次都不送,怕白跑 | 发送方与接收方需经过 “三次握手” 建立连接,“四次挥手” 释放连接,连接建立后才传输数据 |
| 点对点通信 | “一次只送一户,多一户不干”—— 小哥接了 101 的单,哪怕 102 就在隔壁,也绝不顺路送 102 的餐,“我的单只有 101,多送算加班!” | 每一条 TCP 连接仅有两个端点(套接字:IP 地址 + 端口号),只能实现点对点(一对一)通信 |
| 可靠交付 | “漏一粒米都要重煮”—— 顾客点的炒饭少了一粒米,小哥当场崩溃:“不行,我得回店里重新炒一份,少一粒都不行!”(重传);炒饭顺序乱了(先放蛋后放饭),也要倒回去重新炒(按序交付) | 通过校验和(查错)、确认(收餐签字)、重传(漏餐补送)、滑动窗口(控制送餐速度)等机制,保证数据不丢失、不重复、按序到达 |
| 全双工通信 | “送餐同时收反馈,两不误”—— 小哥送餐时,一边递餐一边问:“味道怎么样?要不要加辣?”(发送数据),顾客说 “太咸了”(接收数据),同时进行,不用等送完再问 | TCP 连接为全双工模式,发送方和接收方均有发送缓存和接收缓存,可同时发送和接收数据 |
| 面向字节流 | “把炒饭拆成米粒送,再拼回去”—— 小哥把一份炒饭拆成单个米粒,按顺序送,到顾客家再拼成一碗完整的炒饭,绝不整个碗送(不像 UDP 按 “碗” 送) | TCP 将应用层数据视为连续的字节流,不保留报文边界,按字节粒度拆分、传输,接收方重组为完整数据 |
5.3.2 TCP 套接字:“外卖收发地址”(搞笑版)
-
搞笑梗版:套接字就是 “顾客的详细地址 + 外卖柜编号”—— 比如 “192.168.1.100:80”,翻译过来就是 “XX 小区 192 栋 168 单元 1 楼 100 号,80 号外卖柜”。强迫症小哥送餐时,必须对着地址念三遍:“192 栋 168 单元…80 号柜… 没错!” 要是地址错了,哪怕送到门口也不递餐,怕送错人挨骂!
-
专业版:TCP 连接的端点称为套接字(Socket),由 “IP 地址:端口号” 唯一标识。一条 TCP 连接由两个套接字确定(源套接字 + 目的套接字),确保数据在两个端点间准确传输,避免混淆。
5.4 可靠传输的工作原理(“强迫症小哥的送餐效率”)
-
搞笑梗版:信道利用率就是 “小哥的送餐装满率”—— 比如小哥骑电动车送餐,装餐要 10 分钟(TD),顾客确认收餐要 2 分钟(TA),往返一趟要 30 分钟(RTT)。要是小哥只装 1 份餐就跑,利用率 = 10/(10+30+2)=23%,像 “空车跑大半路,傻!”;要是装 5 份餐,利用率 = 50/(50+30+2)=61%,才够 “不浪费油钱”!
-
专业版:信道利用率 U = TD / (TD + RTT + TA),TD 为发送分组时间(分组长度 / 数据率),RTT 为往返时间,TA 为确认分组发送时间。利用率越高,信道资源越不浪费,TCP 通过滑动窗口提高利用率。
5.5 TCP 可靠传输的实现(“强迫症小哥的送餐套路”)
5.5.1 滑动窗口:“小哥的电动车装餐量”(搞笑版)
| 窗口类型 | 搞笑梗版(电动车装餐套路) | 专业定义 |
| 发送窗口 | “电动车最大装餐量”—— 小哥的电动车最多装 5 份餐(发送窗口 = 5),没收到确认前,能连续送 5 份,送出去的餐要记在小本本上(暂存),万一顾客说 “没收到”,好重送 | 发送方允许连续发送的字节范围,由接收方告知的窗口大小决定,已发送未确认的数据需暂存于发送缓存 |
| 接收窗口 | “顾客家的餐柜容量”—— 顾客家的餐柜只能放 3 份餐(接收窗口 = 3),小哥送第 4 份时,顾客说 “柜子满了,等我吃完再送!”(窗口缩小),小哥就只能等 | 接收方允许接收的字节范围,随应用层读取数据的速度动态调整,避免接收缓存溢出 |
| 发送缓存 | “小哥的备用餐箱”—— 里面放两类餐:①刚从店里拿的待送餐(应用层数据);②送出去没确认的餐(怕丢了重送),像 “小哥随身带的备用奶茶,撒了能补” | 发送方暂存数据的缓存:①应用层待发送数据;②已发送未确认数据,用于超时重传 |
| 接收缓存 | “顾客家的临时餐架”—— 上面放两类餐:①按序到的餐(还没吃,比如先到的奶茶);②乱序到的餐(比如先到的薯条,等奶茶到了再一起吃),像 “顾客把薯条放一边,等奶茶到了再开吃” | 接收方暂存数据的缓存:①按序到达未被应用层读取的数据;②未按序到达的数据,确保按序交付 |
5.5.2 超时重传时间:“小哥等顾客确认的耐心值”(搞笑版)
-
搞笑梗版:超时重传时间(RTO)就是 “小哥等顾客确认的耐心”—— 要是上次顾客 10 分钟才回消息(RTT=10),小哥就把耐心设为 “10_0.8 + 这次 RTT_0.2 + 波动 * 4”(加权平均)。要是耐心设太短(比如 5 分钟),顾客刚去拿快递,小哥就重送,白跑一趟;设太长(比如 1 小时),顾客早饿疯了,投诉!
-
专业版:TCP 通过加权平均计算 RTO:①RTTs(加权平均往返时间)=0.8_旧 RTTs +0.125_新 RTT;②RTTd(往返时间偏差)=0.75_旧 RTTd +0.25_| 新 RTT-RTTs|;③RTO=RTTs+4*RTTd,平衡 “不白跑” 和 “不超时”。
5.5.3 选择确认 SACK:“顾客说‘缺哪份补哪份’”(搞笑版)
-
搞笑梗版:顾客点了 1-5 号餐,只收到 1、2、4、5,就给小哥发消息:“缺 3 号餐,别的都收到了!”(SACK 确认),小哥不用重送 1-5,只补 3 号就行,像 “顾客不说‘全没收到’,小哥不用白跑一趟,省时间!” 要是没有 SACK,顾客说 “没收到”,小哥只能重送 1-5,亏大了!
-
专业版:选择确认(SACK)允许接收方指明已接收的字节块范围,发送方仅重传未确认的字节块,而非重传全部数据,提高重传效率。
5.6.1 TCP 拥塞控制的 4 大算法:“外卖小哥的避堵套路”(搞笑版 + 专业版)
| 算法 | 搞笑梗版(外卖小哥避堵名场面) | 专业逻辑 | 拥塞窗口(cwnd)变化(以初始 cwnd=1、ssthresh=8 为例) |
| 慢开始(Slow Start) | “新手小哥不敢猛冲”:刚入职的小哥不知道哪条路堵,第一天只带 1 份餐(cwnd=1)出门,送完没堵,第二天带 2 份(cwnd=2),再没堵带 4 份(cwnd=4)… 像 “新手司机不敢开快,每过一个路口就加速一点”,直到带 8 份餐时(cwnd=ssthresh=8),老员工说 “别翻倍了,前面可能堵!” | 网络空闲时,逐步增加发送速率,避免突然发送大量数据导致拥堵。cwnd 从 1 开始,每次 RTT 翻倍,直到 cwnd 达到 “慢开始门限(ssthresh)”,转入拥塞避免阶段 | 1→2→4→8(达到 ssthresh,停止翻倍) |
| 拥塞避免(Congestion Avoidance) | “老司机稳步前进”:小哥带 8 份餐出门(cwnd=8),发现路有点堵但没完全堵,就不敢再翻倍带餐了,每天只多带 1 份(cwnd=9→10→11…),像 “老司机在高速上保持 100 码,不猛踩油门,避免追尾”,直到某天带 12 份餐时(cwnd=12),突然堵死了(检测到拥塞) | 接近网络容量时,平稳增加发送速率,维持网络稳定。cwnd 每次 RTT 加 1,直到检测到拥塞(超时或收到 3 个重复确认),触发拥塞处理 | 8→9→10→11→12(检测到拥塞,进入快重传 / 超时重传) |
| 快重传(Fast Retransmit) | “顾客催 3 次就重送”:小哥送了 1-10 号餐,顾客连续发 3 条消息:“没收到 6 号餐!”“真没收到 6 号!”“6 号餐呢?”(3 个重复确认),小哥没等超时,当场掉头回店里补 6 号餐,像 “顾客催 3 次,肯定是真没收到,别等了,赶紧补!” | 当接收方收到乱序数据时,连续发送 3 个重复确认(对已正确接收的最后一个字节的确认),发送方收到后无需等待超时,立即重传丢失的分组,减少重传延迟 | 收到 3 个重复确认,立即重传丢失分组,不改变 cwnd,重传后转入快恢复 |
| 快恢复(Fast Recovery) | “堵死后不从头来”:小哥堵在路上(检测到拥塞),要是按老办法,得回到只带 1 份餐(cwnd=1),太浪费时间!现在他聪明了:把 “慢开始门限(ssthresh)” 设为当前 cwnd 的一半(比如 cwnd=12→ssthresh=6),然后 cwnd 从 6 开始,每次加 1(6→7→8…),像 “堵死后不退回起点,从中间开始稳步加速”,避免重新慢开始的低效 | 检测到拥塞后,不回到慢开始的初始 cwnd=1,而是将 ssthresh 设为当前 cwnd 的一半,cwnd 从 ssthresh 开始,按拥塞避免的规则每次加 1,快速恢复发送速率 | 检测到拥塞→ssthresh=12/2=6→cwnd=6→7→8→9…(按拥塞避免规则增加) |
补充:超时重传的 “摆烂处理”(对比快重传)
-
搞笑梗版:要是小哥没收到顾客催单(没收到 3 个重复确认),而是等了半天没动静(超时),就以为 “路彻底堵死了”,直接把餐全卸了,重新从 1 份开始带(cwnd=1,ssthresh = 当前 cwnd/2),像 “新手小哥堵死了就慌了,回到起点重新来,效率低但稳妥”。
-
专业版:若因超时检测到拥塞,发送方将 ssthresh 设为当前 cwnd 的一半,cwnd 重置为 1,重新进入慢开始阶段,适用于严重拥堵场景,但恢复速度慢。
5.6 总结:运输层的 “打工人图鉴”
| 角色 | 核心技能 | 搞笑口头禅 | 适合岗位 |
| TCP(强迫症小哥) | 可靠交付、按序传输、拥塞控制 | “漏了?我重送!乱了?我重排!堵了?我慢走!” | 重要订单配送(网页、邮件、文件) |
| UDP(急单侠) | 速度快、开销小、支持多播 | “要快?找我!怕丢?别找我!堵车?我超!” | 急单配送(视频、直播、DNS) |
| 端口(外卖柜) | 精准匹配应用 | “80 号柜是网页的!53 号柜是 DNS 的!别放错!” | 数据分拣员 |
| 滑动窗口(装餐量) | 控制发送速率 | “你柜子满了?我等!你能装 5 份?我送 5 份!” | 流量调节器 |
本章彩蛋:用 “双十一快递” 理解运输层
-
你在淘宝买衣服(应用层),下单后淘宝把订单交给 “顺丰(TCP)”,顺丰会:①打电话确认你在不在家(建立连接);②丢件了重发(重传);③按订单顺序送(先送衣服,再送赠品)—— 这是 TCP 的可靠传输。
-
你在直播间抢秒杀(应用层),主播说 “3、2、1 上链接”,链接通过 “普通快递(UDP)” 发给你,可能有的没收到(丢包),但能最快收到 —— 这是 UDP 的速度优先。
-
要是没有端口,快递员可能把 “衣服订单” 送到 “外卖柜”,你永远找不到 —— 这是端口的重要性!
第六章 应用层:互联网的 “搞笑生活服务站”
开场:从 “点外卖、刷抖音” 看懂应用层
应用层就是互联网的 “生活服务中心”——DNS 是 “地图查餐厅地址”,FTP 是 “网购退货传文件”,HTTP 是 “刷抖音看视频”,TELNET 是 “远程帮朋友修电脑”。接下来全是搞笑名场面,保证你边笑边懂 “平时用的网,到底是怎么工作的”!
6.1 域名系统 DNS:互联网的 “地图查地址”
6.1.1 DNS 的核心作用(搞笑梗版)
-
搞笑梗版:你想上 “淘宝”,但电脑只认识 “140.205.94.119” 这种 IP 地址(像餐厅的门牌号),不认识 “www.taobao.com”(像餐厅的名字)。DNS 就像 “高德地图”,你输入 “淘宝”(域名),它帮你查出对应的 “门牌号”(IP 地址),电脑才能找到淘宝服务器。要是没有 DNS,你上淘宝得记一长串数字,比记女朋友生日还难!
-
专业版:域名系统 DNS 是互联网的命名系统,用于将便于人类记忆的域名(如www.baidu.com)转换为计算机识别的 IP 地址,实现主机的定位,是互联网通信的 “地址翻译官”。
6.1.2 域名结构:“餐厅地址的层级”(搞笑表格)
| 域名层级 | 搞笑梗解读(餐厅地址类比) | 专业定义 | 示例(www.taobao.com) |
| 顶级域名 | “餐厅所在城市”—— 比如 “北京”“上海”,区分大区域 | 域名的最高层级,分为国家顶级域名、通用顶级域名、基础结构域名 | .com(通用顶级域名,代表商业机构) |
| 二级域名 | “餐厅所在区”—— 比如 “朝阳区”“静安区”,区分城市内区域 | 顶级域名下的第二层域名,由机构或个人申请,代表具体组织 | .taobao(二级域名,代表淘宝公司) |
| 三级域名 | “餐厅名字”—— 比如 “海底捞”“西贝”,具体标识某个服务 | 二级域名下的子域名,用于区分组织内的不同服务 | www(三级域名,代表淘宝的万维网服务) |
6.1.3 顶级域名分类(搞笑表格)
| 顶级域名类型 | 搞笑梗解读 | 示例 |
| 国家顶级域名(nTLD/ccTLD) | “按国家分的餐厅区”—— 比如 “中国区餐厅”“美国区餐厅” | .cn(中国)、.us(美国)、.jp(日本) |
| 通用顶级域名(gTLD) | “按餐厅类型分”—— 比如 “商业餐厅”“教育餐厅”“政府餐厅” | .com(商业)、.edu(教育,比如北大.edu.cn)、.gov(政府,比如中国政府.gov.cn)、.org(非营利组织) |
| 基础结构域名(arpa) | “餐厅后台通道”—— 不对外营业,只给工作人员用,用于反向 DNS 解析(IP 查域名) | .arpa(仅用于技术用途,用户看不到) |
6.1.4 我国二级域名(搞笑版)
-
搞笑梗版:我国把二级域名分成 “按行业分”(类别域名)和 “按省份分”(行政区域名)—— 比如 “.edu.cn” 是 “教育行业的中国餐厅”(北大、清华),“.bj.cn” 是 “北京的中国餐厅”(北京本地网站),像 “按菜系和省份给餐厅分类,好找!”
-
专业版:我国二级域名分为类别域名(7 个,如.edu.cn教育、.gov.cn政府、.com.cn商业)和行政区域名(34 个,对应 34 个省 / 自治区 / 直辖市,如.bj.cn北京、.sh.cn上海)。
6.2 文件传送协议:互联网的 “快递传文件”
6.2.1 FTP:“顺丰级文件快递”(搞笑梗版)
-
搞笑梗版:FTP 是 “传大文件的顺丰”—— 你想给朋友传 10G 的电影,用微信传太慢(像送快递走路),用 FTP 传就像 “顺丰空运”:①先登录朋友的 FTP 服务器(像去快递网点寄件);②选文件类型(是文本还是视频,像选 “易碎品”“普通件”);③设置权限(能不能改文件,像 “能不能拆快递”);④开始传输,还能暂停、续传(像快递半路停了,下次接着送)。最牛的是,FTP 能屏蔽 “电脑系统差异”—— 你用 Windows,朋友用 Mac,传文件也不会乱码(像顺丰能送不同形状的快递,不用你自己打包)。
-
专业版:文件传送协议 FTP 是互联网常用的文件传送协议,采用客户 - 服务器模式,使用 TCP 连接,支持交互式访问,可指定文件类型与格式,设置存取权限,屏蔽不同计算机系统的细节,适合异构网络间的文件传输。
6.2.2 文件共享协议分类:“快递 vs 上门取件”(搞笑表格)
| 协议类型 | 搞笑梗解读(文件传送类比) | 专业定义 | 代表协议 |
| 文件传送协议 | “快递传文件”—— 把文件复制一份,用 “快递” 寄给对方,对方改的是 “副本”,改完要再寄回来 | 复制整个文件,对副本进行访问,修改后需传回原节点 | FTP、TFTP |
| 联机访问协议 | “上门取件改文件”—— 对方直接访问你电脑里的文件,像 “朋友来你家直接改你电脑里的文档”,不用复制,改的是 “原文件” | 允许同时存取一个文件,远地访问如同本地访问,由操作系统负责透明存取 | NFS(网络文件系统) |
6.2.3 网络传文件的 “坑”(搞笑版)
-
搞笑梗版:不同电脑传文件,就像 “不同国家的人交换礼物”——①存储格式不同:你用 Windows 存的文件,朋友用 Mac 打开可能乱码(像你送 “筷子”,朋友用 “刀叉” 用不了);②目录结构不同:你电脑里 “D 盘 / 电影” 的文件,朋友电脑里没有 D 盘(像你说 “礼物在客厅抽屉”,朋友家没有客厅);③命令不同:你用 “复制” 命令,朋友用 “copy” 命令(像你说 “谢谢”,朋友说 “thank you”,互相听不懂);④权限不同:你能改文件,朋友只能看(像你能拆礼物,朋友只能看不能拆)。FTP 就是 “万能翻译官”,帮你填这些坑!
-
专业版:网络环境下复制文件的复杂性包括:①存储数据格式不同;②文件目录结构与命名规则不同;③操作系统命令不同;④访问控制方法不同。FTP 通过统一的协议规范解决这些问题。
6.2.4 TFTP:“小文件的平邮快递”(搞笑表格)
| TFTP 特点 | 搞笑梗解读(平邮类比) | 专业定义 |
| 小而简单 | “快递单只有一行字”—— 代码少,占内存小,像 “平邮的快递单只写地址,别的都不填” | 协议简单,代码所占内存小,易于实现 |
| 使用 UDP | “平邮不打电话”—— 用 UDP 传输,不用建立连接,像 “平邮直接扔邮箱,不确认收件人在不在” | 使用客户 - 服务器模式和 UDP 数据报,需自己实现差错改正 |
| 仅支持文件传输 | “只送文件,不送别的”—— 不能列目录、不能改权限,像 “平邮只送包裹,不帮你查物流、改地址” | 仅支持文件的读和写,不支持交互,无列目录、身份鉴别功能 |
| 512 字节数据块 | “每次送一小包”—— 每次传 512 字节,最后一次可能不足 512 字节,像 “平邮每次送一小盒,多了分几次送” | 每次传送的数据报含 512 字节数据(最后一次可不足),数据报文按序编号 |
| 支持 ASCII / 二进制 | “能送文本,也能送视频”—— 像 “平邮能送信纸,也能送 U 盘” | 支持 ASCII 码(文本)和二进制(视频、图片)两种传送方式 |
6.3 远程终端协议 TELNET:“远程帮朋友修电脑”
6.3.1 TELNET 的核心作用(搞笑梗版)
-
搞笑梗版:TELNET 是 “远程控制的‘隔空取物’”—— 朋友电脑坏了,他不会修,你说 “我远程帮你弄”,打开 TELNET:①用 TCP 连接朋友的电脑(像 “你和朋友连了视频电话”);②你在自己电脑上敲键盘(像 “你指挥朋友按哪个键”);③朋友电脑的屏幕内容传到你这(像 “朋友把电脑屏幕对着摄像头给你看”)。最牛的是 “透明服务”—— 你感觉就像在操作自己的电脑,朋友感觉就像有人在他电脑前操作,像 “你灵魂出窍到朋友电脑前”!
-
专业版:远程终端协议 TELNET 是互联网正式标准,采用客户 - 服务器模式,使用 TCP 连接,允许用户通过本地主机登录到远地主机,将本地击键传送到远地主机,同时将远地主机的输出返回本地屏幕,提供透明的远程终端服务。
6.4 万维网 WWW:“刷抖音、看网页的幕后推手”
6.4.1 WWW 的本质:“互联网的‘短视频 APP’”(搞笑版)
-
搞笑梗版:WWW 就是 “你每天刷的抖音、淘宝、百度的总和”—— 是一个 “大规模信息储藏所”,用 “链接” 把不同网站连起来(像你刷抖音时,从一个视频滑到另一个视频),你想找什么信息,点链接就能主动获取(像你刷到感兴趣的视频,点进去看更多),不用像 “看电视一样被动等内容”。
-
专业版:万维网 WWW 是大规模联机信息储藏所,通过 “链接” 实现不同站点的访问,用户可主动按需获取信息,是分布式超媒体系统,基于超文本技术,信息分布在整个互联网,由各主机独立管理。
6.4.2 超文本 vs 超媒体:“纯文字小说 vs 短视频”(搞笑表格)
| 对比维度 | 搞笑梗解读 | 专业定义 | 超文本 | 超媒体 |
| 内容形式 | “纯文字小说”—— 只有文字,像 “你看的电子书只有字,没有图” | 文档内容类型 | 仅包含文本信息 | 包含文本、图形、图像、声音、动画、视频等多媒体信息 |
| 体验感 | “看小说”—— 只能读文字,想象画面 | 用户体验 | 体验单一,依赖文字想象 | 体验丰富,多感官刺激 |
| 代表例子 | “纯文字网页”—— 比如早期的 “新闻网页只有文字,没有图” | 实际应用 | 早期 WWW 文档、纯文本博客 | 现代网页(抖音、淘宝、百度)、短视频平台 |
6.4.3 WWW 的 “四大难题” 与解决方案(搞笑表格)
| 难题 | 搞笑梗解读(像 “做短视频 APP 要解决的问题”) | 解决方案 | 专业作用 |
| 怎么标志 “每个视频的地址”? | 你想分享一个抖音视频,得有个唯一链接(像 “视频编号”),不然别人找不到 | 统一资源定位符 URL | 给每个万维网文档分配唯一标识符,实现资源定位 |
| 怎么 “滑到下一个视频”? | 你点视频里的 “下一个” 按钮,得有协议保证能顺利跳转,不然点了没反应 | 超文本传送协议 HTTP | 定义浏览器与服务器的通信格式和规则,实现链接访问 |
| 怎么 “让视频在不同手机上显示正常”? | 你用苹果手机拍的视频,朋友用安卓手机看,得有统一格式,不然显示乱码 | 超文本标记语言 HTML | 定义文档的显示格式,使不同主机都能正确显示文档,标识链接位置 |
| 怎么 “找到想看的视频”? | 你想找 “猫咪搞笑视频”,不能一个个翻,得有 “搜索功能” | 搜索引擎 | 帮助用户快速查找所需信息,如百度、谷歌、抖音搜索 |
6.4.4 URL:“视频的唯一链接”(搞笑版)
-
搞笑梗版:URL 就是 “抖音视频的链接”(比如https://v.douyin.com/iF3xQ7a/),相当于 “视频在互联网上的身份证号”—— 不管你在哪个城市、用什么手机,只要输入这个链接,就能找到对应的视频。URL 的格式像 “快递地址”:https(用什么方式送,像 “顺丰”)://v.douyin.com(送到哪个服务器,像 “北京快递网点”)/iF3xQ7a/(具体哪个视频,像 “网点里的 101 号包裹”)。
-
专业版:统一资源定位符 URL 是万维网资源的唯一地址,格式为 “协议:// 主机名:端口号 / 路径 / 文件名”,用于标识资源的位置和访问方式,实现互联网范围内资源的精准定位。
6.4.5 HTTP:“刷视频的‘传输通道’”(搞笑表格)
| HTTP 特点 | 搞笑梗解读(像 “短视频 APP 的传输规则”) | 专业定义 |
| 面向事务 | “刷一个视频算一次‘事务’”—— 你点一个视频,服务器送过来,这次交互就结束,像 “你买一瓶水,付钱拿水,交易结束” | 面向事务的应用层协议,一次请求对应一次响应,完成一个事务 |
| 使用 TCP | “用‘顺丰’送视频”——TCP 可靠,保证视频不丢帧,像 “顺丰保证快递不丢,HTTP 保证视频不缺段” | 使用 TCP 连接进行可靠传输,避免数据丢失或乱序 |
| 定义通信规则 | “规定‘你点视频’怎么说,‘服务器送视频’怎么回复”—— 你点视频时,浏览器发 “GET / 视频地址 HTTP/1.1”(像 “你说‘我要 101 号包裹’”),服务器回复 “200 OK”(像 “快递员说‘好的,给你’”) | 定义浏览器与万维网服务器的通信格式(请求报文、响应报文)和规则 |
| 无状态 | “服务器不记得你”—— 你刷完一个视频再刷第二个,服务器不知道 “你刚才刷过哪个”,像 “快递员不记得你上次买过什么,每次都当新顾客” | 无状态协议,服务器不保留客户的历史信息,简化服务器设计,支持大量并发请求 |
6.4.6 HTTP 报文结构:“刷视频的‘对话记录’”(搞笑表格)
| 报文类型 | 组成部分 | 搞笑梗解读(像 “你和快递员的对话”) | 专业定义 |
| 请求报文(客户→服务器) | 开始行 | “你说‘我要 101 号包裹’” | 包含请求方法(GET/POST)、URL、HTTP 版本,标识请求类型 |
| 首部行 | “你说‘我要大瓶的,冰的’” | 说明浏览器信息(如 User-Agent)、请求内容类型等,可选 | |
| 实体主体 | “一般不用,除非你要上传视频(POST 请求)” | 请求携带的数据(如表单数据、文件),GET 请求一般无 | |
| 响应报文(服务器→客户) | 开始行 | “快递员说‘好的,给你(200 OK)’” | 包含 HTTP 版本、状态码(200 成功、404 找不到)、状态描述 |
| 首部行 | “快递员说‘这是冰的,别摔了’” | 说明服务器信息(如 Server)、响应内容类型(如 text/html)等 | |
| 实体主体 | “快递员给你的‘101 号包裹’(视频 / 网页内容)” | 服务器返回的资源内容(如 HTML 文档、视频数据) |
6.4.7 万维网文档分类:“静态视频 vs 动态视频”(搞笑表格)
| 文档类型 | 搞笑梗解读 | 专业定义 | 例子 |
|---|---|---|---|
| 动态文档 | “直播带货的实时画面”—— 内容随时间 / 用户变化,比如你看直播时,画面里的 “库存数” 每秒都在变,每个人看到的库存可能不一样(你看剩 10 件,别人看剩 8 件),像 “直播画面实时生成,不是预先录好的” | 内容由服务器实时生成,根据用户请求或时间动态变化,每次访问内容可能不同 | 电商商品页(实时库存、价格)、天气预报页(实时更新温度) |
| 活动文档 | “能互动的短视频”—— 文档里有 “小动画” 或 “交互按钮”,比如你点网页里的 “抽奖按钮”,会弹出抽奖结果,不用等服务器重新发内容,像 “你在视频里点‘暂停’‘快进’,不用重新加载整个视频” | 包含可在客户端执行的代码(如 JavaScript),客户端可直接交互,无需频繁请求服务器 | 网页小游戏(如在线拼图)、带交互按钮的表单页 |
6.4.8 搜索引擎:“互联网的‘找货向导’”(搞笑表格)
| 搜索引擎类型 | 搞笑梗解读(像 “找餐厅的方式”) | 专业定义 | 例子 |
| 全文检索搜索引擎 | “按菜名找餐厅”—— 你输入 “北京烤鸭”,它会在所有餐厅的 “菜单”(网页内容)里搜,把包含 “北京烤鸭” 的餐厅都列出来,像 “百度、谷歌”,搜得全但可能有垃圾结果 | 抓取互联网大量网页,建立全文索引,根据关键词在网页内容中匹配,返回相关结果 | 百度、谷歌、必应 |
| 分类目录搜索引擎 | “按菜系找餐厅”—— 它把餐厅分成 “川菜”“粤菜”“东北菜” 等目录,你点 “川菜”→“北京”,就能找到北京的川菜馆,像 “逛商场按楼层找店”,结果准但不够全 | 由人工编辑将网站按主题分类,形成层级目录,用户通过浏览目录查找相关网站,不依赖关键词 | 早期的雅虎、新浪分类目录 |
6.5 电子邮件:“互联网的‘纸质信件’”
6.5.1 电子邮件的核心协议:“寄信 vs 收信”(搞笑表格)
| 协议 | 作用 | 搞笑梗解读(像 “寄信流程”) | 专业定义 |
| SMTP(简单邮件传送协议) | “寄信到邮局”—— 把你写的邮件从你的邮箱 “送到对方的邮箱服务器”,像 “你把信投进邮筒,邮局把信送到对方城市的邮局” | 用于发送邮件,实现从发件人邮箱客户端到收件人邮箱服务器的传输,使用 TCP 连接 | |
| POP3(邮局协议版本 3) | “从邮局取信”—— 你从对方的邮箱服务器 “把邮件下载到自己的电脑”,像 “对方去邮局把你寄的信取回家” | 用于接收邮件,实现从收件人邮箱服务器到收件人邮箱客户端的传输,支持离线阅读 |
- 搞笑补充:比如你用 QQ 邮箱给朋友的网易邮箱发邮件:①你点 “发送”,SMTP 协议把邮件从你的 QQ 邮箱客户端送到 “网易邮箱服务器”(像你把信从家投到邮筒,邮局送到朋友城市的邮局);②朋友打开网易邮箱,POP3 协议把邮件从 “网易邮箱服务器” 下载到他的电脑(像朋友去邮局取信回家)。要是没有这两个协议,邮件就像 “写好的信没地方投,或者投了对方取不到”!
6.6 动态主机配置协议 DHCP:“互联网的‘自动分配 IP 地址’”
6.6.1 DHCP 的核心作用:“自动发‘门牌号’”(搞笑梗版)
-
搞笑梗版:你家小区新搬来一户人家(新设备连网),要是每次都要物业上门给 “门牌号”(IP 地址),太麻烦!DHCP 就像 “小区自动门牌号分配机”—— 新设备一连 WiFi(连网),就给 DHCP 服务器发消息:“我要个门牌号!” 服务器马上分配 “IP 地址、子网掩码、默认路由器、DNS 服务器” 这四个 “必备信息”,像 “分配机给新住户发‘1 单元 301 号’(IP)、‘小区大门密码’(子网掩码)、‘小区物业电话’(默认路由器)、‘地图 APP 地址’(DNS)”,不用人工操作,超方便!
-
专业版:动态主机配置协议 DHCP 用于自动为网络中的新设备分配 IP 地址及相关网络参数(子网掩码、默认路由器 IP、DNS 服务器 IP),采用客户 - 服务器模式,使用 UDP 协议,避免人工配置的繁琐,提高网络管理效率。
6.6.2 DHCP 需要配置的 “四件套”(搞笑表格)
| 配置项目 | 搞笑梗解读(像 “新住户的‘必备信息’”) | 专业作用 |
| IP 地址 | “门牌号”—— 新设备在网络中的唯一标识,像 “1 单元 301 号”,别人能找到它 | 标识设备在互联网中的位置,实现分组的路由和转发 |
| 子网掩码 | “小区大门密码”—— 区分 “本小区住户” 和 “外小区住户”,像 “只有知道密码的才能进小区” | 区分 IP 地址中的网络前缀和主机号,判断目的主机是否在同一子网 |
| 默认路由器 IP | “小区物业电话”—— 设备要给 “外小区住户” 发数据(跨子网通信),就找默认路由器,像 “有问题找物业” | 跨子网通信时的默认转发设备,将分组转发到其他子网 |
| DNS 服务器 IP | “地图 APP 地址”—— 设备要查 “域名对应的 IP”(比如查 “淘宝” 的 IP),就找 DNS 服务器,像 “找地方用地图 APP” | 提供域名到 IP 地址的解析服务,实现域名访问 |
6.6.3 DHCP 的 “专属端口”(搞笑版)
-
搞笑梗版:DHCP 客户(新设备)和服务器(分配机)用 “专属电话” 沟通 —— 客户用 68 号端口(像 “新住户的临时电话”),服务器用 67 号端口(像 “分配机的固定电话”)。要是用别的端口,可能会和 “微信、浏览器” 的端口冲突,像 “新住户打错电话,打到别人家去了”,分配不了 IP 地址!
-
专业版:DHCP 客户使用 UDP 的 68 号端口发送请求,DHCP 服务器使用 UDP 的 67 号端口接收请求并发送响应,固定端口号避免与其他应用的端口冲突,确保通信正常。
6.6.4 DHCP 中继代理:“小区的‘代收快递点’”(搞笑梗版)
-
搞笑梗版:要是每个小区都装一个 “IP 分配机”(DHCP 服务器),太浪费钱!DHCP 中继代理就像 “小区的代收快递点”—— 每个小区装一个中继代理,它知道 “总分配机”(总 DHCP 服务器)的地址。新设备发 “要 IP” 的请求,中继代理先收下,再转发给总分配机,总分配机分配好 IP 后,再通过中继代理传给新设备,像 “新住户把‘要门牌号’的申请交给代收点,代收点转给总物业,总物业批了再转回来”,不用每个小区都装总分配机!
-
专业版:DHCP 中继代理用于解决 “无需每个子网都部署 DHCP 服务器” 的问题,每个子网部署一个中继代理,中继代理配置总 DHCP 服务器的 IP 地址,接收子网内客户的 DHCP 请求,转发给总 DHCP 服务器,再将服务器的响应转发给客户,减少 DHCP 服务器的数量,降低网络成本。
第六章 总结:应用层的 “生活服务清单”
| 协议 / 系统 | 核心作用 | 搞笑 “生活别名” | 一句话总结 |
| DNS | 域名转 IP | “地图查地址” | 帮你把 “淘宝” 翻译成电脑能懂的 “IP 地址”,不然记数字记到疯 |
| FTP/TFTP | 文件传送 | “顺丰 / 平邮传文件” | 传大文件用 FTP(顺丰),传小文件用 TFTP(平邮),各有各的用 |
| TELNET | 远程终端 | “远程修电脑” | 隔着屏幕操作别人的电脑,像 “灵魂出窍帮人修 bug” |
| WWW(HTTP/HTML/URL) | 网页访问 | “刷抖音 / 淘宝” | HTTP 是 “传输通道”,HTML 是 “显示格式”,URL 是 “视频链接”,三者一起让你刷网无忧 |
| 电子邮件(SMTP/POP3) | 发送 / 接收邮件 | “互联网寄信” | SMTP 帮你 “寄信到邮局”,POP3 帮你 “从邮局取信”,比纸质信快 100 倍 |
| DHCP | 自动分配 IP | “自动发门牌号” | 新设备连网不用手动输 IP,DHCP 自动分配,像 “小区给新住户自动发门牌号” |
本章彩蛋:用 “一天的生活” 串起应用层
-
早上起来刷抖音:用HTTP协议传视频,URL定位具体视频,HTML显示画面,DNS把 “douyin.com” 转成 IP 地址;
-
给同事发邮件:用SMTP协议发送,同事用POP3协议接收;
-
传工作文件给领导:用FTP协议传大文件,怕麻烦就用微信(底层也用应用层协议);
-
新电脑连 WiFi:DHCP自动分配 IP 地址,不用手动输;
-
远程帮家里修电脑:用TELNET(或类似远程工具)远程控制 —— 你一天的上网生活,全是应用层在 “背后干活”!
