网络知识总库

Book Notes · 12 / 14 · 中文入门

图解TCP/IP
精读笔记

竹下隆史等人以协议族为地图,把网络通信从分层、地址与邻居发现,一路讲到可靠传输、路由选择和常见应用。本页不追逐零散名词,而用六段速读路径建立一张可继续查阅的 TCP/IP 全景图。

作者 竹下隆史等难度 中文入门建议用时 约 90 分钟笔记形式 速读提纲

全书骨架:从分层地图到一次端到端通信

速读时先抓住「谁负责什么」,再把协议放回数据路径。全书可压缩为下面这条从应用意图到链路发送、再由对端逐层还原的主线:

应用生成数据→ TCP / UDP 标识进程→ IP 寻址与路由→ ARP 找下一跳→ 链路承载帧→ 对端逐层解封装
FIG.0 — 协议不是平铺清单,而是沿数据路径协作的职责链
分层是协作边界

每层只向相邻层交付明确结果;同层协议在通信两端形成逻辑对话,实际数据仍由下层承载。

地址有不同作用域

端口定位进程,IP 定位跨网终点,MAC 定位当前链路的下一跳;三者不能互相替代。

控制协议补齐能力

ARP、ICMP、DHCP、DNS 与 NAT 分别解决邻居、差错、配置、名称和地址复用问题。

按需深挖

先记住各协议解决的问题,再用抓包、RFC 与站内演示验证字段和时序,不必首次阅读就背完格式。

01

网络基础与分层模型

先建立共同语言:分层不是把现实切成互不相干的盒子,而是把复杂通信拆成可替换、可排查的职责边界。

协议:通信双方共同遵守的约定

协议规定消息如何表示、按什么顺序交换、收到后如何响应。网络能容纳不同厂商与操作系统,靠的不是实现完全相同,而是接口与线上行为一致。协议族则是一组彼此协作的协议,TCP/IP 的范围远大于 TCP 和 IP 两个名字。

OSI 用来定位,TCP/IP 用来工作

OSI 七层适合作为分析尺,TCP/IP 常被归纳为应用、传输、网际和网络接入四层。二者不是必须逐格硬配的竞争答案:前者细分职责,后者更贴近互联网协议的实际组合。排障时问「问题出现在哪层、上层依赖什么服务」比背层号更有价值。

封装让每层加入自己的控制信息

发送端的数据向下经过各层,每层添加头部;接收端由下向上检查并去除相应头部。应用看到的是内容,TCP 关注端口与可靠性,IP 关注源与目的地址,以太网关注当前链路上的帧传送。

应用数据+ TCP / UDP 头+ IP 头+ 链路头尾 → 帧
FIG.1 — 向下封装:每层只添加本层完成职责所需的信息
易错点:不要把「同层通信」理解为数据跨空直接跳到对端同层。它是逻辑关系;真实比特必须一路向下发送,经介质抵达后再一路向上交付。
02

IP 编址与子网

IP 地址的重点不是把十进制数字背下来,而是理解「网络前缀定位范围、主机部分定位接口」,以及路由器如何用前缀作决定。

地址属于接口,前缀描述网络

IPv4 地址通常写成四组十进制数,但机器按 32 位二进制处理。CIDR 后缀如 /24 表示前 24 位是网络前缀,其余位区分该网络中的接口。设备可有多个接口,因此也可能拥有多个 IP 地址。

子网划分是在地址空间里切边界

子网掩码把地址分成网络位与主机位。判断两个地址是否同网段,就是分别与掩码做按位与,再比较网络地址。划分更长前缀会得到更多、更小的子网;规划时还要保留网络地址与广播地址等特殊用途。

地址192.0.2.73 前缀/24,前三个八位组属于网络部分 网络地址192.0.2.0 判断方法地址 AND 掩码 → 网络地址;网络地址相同即处于同一子网
FIG.2 — 示例使用文档保留地址,只说明计算方法

同网直达,异网交给默认网关

主机先以目标地址和本地掩码判断目标是否在本子网。同网时直接解析目标的链路地址;异网时把帧交给默认网关,由路由器逐跳转发。这里「交给网关」只改变下一跳 MAC,IP 包的最终目的地址仍是远端主机。

易错点:默认网关不是所有数据包的最终目的地。它只是本地不知道更具体路径时选择的下一跳;若目标在同一子网,流量通常不经过网关。
03

IP 周边技术:DNS · ARP · ICMP · DHCP · NAT

IP 只提供尽力而为的寻址与转发,真实网络还需要一组配套机制,补齐名称解析、邻居发现、状态反馈、自动配置与私网出口。

DNS 与 ARP:分别回答名字和下一跳

DNS 把域名解析为地址,并以分层命名、分布式权威和缓存提升规模能力。ARP 则在本地 IPv4 链路上,根据下一跳 IP 询问对应 MAC。前者面向应用可读的名称,后者服务于本地帧交付,作用域完全不同。

ICMP:让 IP 网络能够反馈

ICMP 携带差错与诊断信息,例如目标不可达、超时或回显请求与应答。它不是让 IP 变成可靠传输,而是让主机和路由器有机会说明「为什么没送到」或响应探测。网络策略可能过滤部分 ICMP,所以无响应不能单独证明主机离线。

DHCP 与 NAT:自动配置和地址复用

DHCP 让终端自动获得地址、掩码、默认网关和 DNS 等参数,配置通常带有租约。NAT 在边界转换地址,家用场景还常结合端口转换,让多个私网连接共享一个公网地址。转换设备需要保存映射状态,入站连接因此不能凭空找到内部主机。

DHCP 获得配置→ DNS 得到目标 IP→ ARP 得到下一跳 MAC→ NAT 改写出口映射→ ICMP 反馈网络状态
FIG.3 — 一次外网访问中,周边协议在不同阶段补齐 IP 的能力
易错点:DNS 不是「寻找 MAC」,ARP 也不会解析域名;NAT 更不是防火墙的同义词。它们可能部署在同一台家用路由器里,但协议职责仍应分开理解。
04

TCP 与 UDP

传输层把主机到主机的 IP 能力延伸为进程到进程的通信;TCP 与 UDP 的差异,应从应用需要什么服务来理解。

端口把数据交给正确的应用

IP 地址定位主机接口,端口号标识通信端点上的进程。一个会话通常由源地址、源端口、目的地址、目的端口与传输协议共同区分,因此多项应用能共享同一网络接口而不混淆。

TCP:面向字节流的可靠传输

TCP 建立连接后,用序号、确认、重传和校验处理丢失与乱序;滑动窗口允许多个未确认数据段在途,流量控制保护接收方,拥塞控制则根据网络状态调整发送节奏。它交付有序字节流,但不会替应用保留每次写入的消息边界。

TCP连接、有序字节流、重传、流量与拥塞控制;应用承担消息分帧 UDP无连接数据报、保留报文边界、头部简洁;应用自行处理丢失与顺序需求 共同点都以端口复用应用,也都依赖 IP 完成跨网寻址与转发
FIG.4 — 选择传输协议,本质是选择服务语义与控制责任

UDP:把及时性与控制权留给应用

UDP 以独立数据报发送,不先建立传输层连接,也不内建重传和有序交付。它适合一次问答、广播/多播或由应用自定恢复策略的场景。简洁不等于永远更快:若应用需要可靠性,仍须在上层补上相应机制。

易错点:TCP 的「可靠」不等于应用事务一定成功,也不等于延迟固定。它只保证在连接语义内按序交付字节或明确失败;业务确认、幂等与超时仍由应用设计。
05

路由协议速览

数据平面按路由表转发每个包,控制平面负责形成和更新这些路径。速读本章,只需先掌握路由表匹配和协议分工。

最长前缀匹配决定下一跳

路由表记录目的前缀、下一跳、出口接口与度量等信息。一个目标可能同时匹配默认路由和若干更具体路由,设备选择前缀最长、范围最精确的条目。没有可用条目时,路由器不会猜测路径,而会丢弃并可能返回差错信息。

静态路由与动态路由各有边界

静态路由由管理员明确配置,行为可预测,适合小型或稳定路径;网络变化时需要人工维护。动态路由协议让设备交换可达性并重新计算路径,适合更大或经常变化的拓扑,但也带来收敛、策略和运维复杂度。

域内求可达,域间讲策略

RIP 以距离向量方式传播距离,OSPF 通过链路状态形成拓扑视图;它们主要服务一个管理域内部。BGP 在自治系统之间交换前缀可达性,路径选择不仅考虑技术距离,还承载运营策略。速读阶段先记住使用范围,不必背完报文格式。

收到目的 IP→ 查路由表→ 最长前缀匹配→ 确定出口与下一跳→ 重新封装链路帧
FIG.5 — 路由协议负责准备表,逐包转发只按表作决定
易错点:路由器不会为每个数据包临时运行一次 OSPF 或 BGP。控制协议在后台形成路由信息,转发时走的是高效查表路径;两者速度与职责不同。
06

应用层协议一览

应用层把网络能力变成用户可见的服务。与其孤立背端口,不如用「请求什么、返回什么、依赖哪种传输与安全机制」建立索引。

Web 与名称服务构成最常见入口

HTTP 描述资源请求与响应语义,方法、状态码和首部共同表达操作与元数据;HTTPS 是 HTTP 运行在 TLS 保护之上。DNS 在访问之前把名称解析成地址,也能承载邮件交换等其他资源记录,是多数应用流程的前置依赖。

邮件、文件与远程管理各有协议组合

电子邮件通常由发送与中继协议配合收取协议完成;文件传送与远程登录也各自定义控制和数据交互方式。传统协议的设计背景、安全能力差异很大,实际部署应优先选择加密版本,并区分「协议概念」与具体产品。

浏览网页DNS 解析名称 → TCP 或现代传输建立通道 → HTTP 交换资源 安全保护TLS 提供机密性、完整性与身份认证基础,应用协议在其上运行 运维观察先确认名称、连接、加密与应用响应分别是否成功,再定位故障层次
FIG.6 — 应用服务往往由多个协议串联,而非单个端口独立完成

用一次访问串起全书

打开网页时,终端可能先通过 DHCP 获得配置,用 DNS 找到服务器地址,借 ARP 找到本地下一跳,经 IP 路由到远端,再由 TCP 或其他传输机制承载 HTTP。遇到 HTTPS 还要建立 TLS 安全通道。能按顺序讲清这条链,就已经抓住全书主干。

易错点:端口号是约定和配置入口,不是不可改变的协议身份证。判断流量应结合传输协议、地址、会话与应用内容,不能看到某个端口就武断下结论。

读后自测 · 7 题

1. 为什么说分层模型中的「同层通信」只是逻辑关系?
发送端同层协议生成的控制信息确实由接收端同层协议解释,但数据不能跨空直达对端。它必须在发送端逐层封装,经物理介质传输,再在接收端逐层解封装。
2. IP 地址、MAC 地址与端口号分别定位什么?
IP 地址用于跨网络定位主机接口,MAC 地址用于当前链路内把帧交给下一跳,端口号用于把传输层数据交给正确的应用进程。它们的作用域不同。
3. 主机如何判断目标在本子网,异网时又把帧交给谁?
主机用本地掩码分别处理自己和目标的 IP,比较网络地址。相同则直接在链路上寻找目标;不同则把帧交给默认网关,但 IP 包的最终目的地址仍保持为远端主机。
4. DNS、ARP 和 DHCP 各解决哪一个问题?
DNS 把名称解析为地址等资源信息;ARP 在本地 IPv4 链路上把下一跳 IP 映射为 MAC;DHCP 自动下发地址、掩码、网关和 DNS 等网络配置。
5. TCP 的可靠性由哪些机制支撑?它没有替应用解决什么?
序号、确认、重传、校验、流量控制与拥塞控制共同支撑有序字节流。TCP 不保留应用消息边界,也不保证业务事务成功;应用仍需自行分帧、超时、确认和处理幂等。
6. 路由器为何选择最长前缀匹配,而不是最短路径条目?
同一目标可匹配多个范围不同的前缀,最长前缀代表最具体的目的范围,应先于宽泛的默认或汇总路由。至于协议计算出的路径优劣,是形成候选路由时的另一层问题。
7. 请按顺序说出一次 HTTPS 访问可能涉及的六类机制。
可从 DHCP 获得配置开始,经 DNS 名称解析、ARP 获取本地下一跳、IP 路由转发、TCP 或现代传输建立通信,再由 TLS 保护 HTTP 交换。具体环境可能已有缓存或现成配置,但职责链不变。