目录
[二、TCP的核心功能:可靠性 + 流量控制 + 拥塞控制](#二、TCP的核心功能:可靠性 + 流量控制 + 拥塞控制)
[1、IP = 网络号 + 主机号](#1、IP = 网络号 + 主机号)
[五、公网 vs 内网:普通人接触的是"内网"](#五、公网 vs 内网:普通人接触的是“内网”)
[1、网络宏观结构:公网 : 内网 = 1 : n](#1、网络宏观结构:公网 : 内网 = 1 : n)
[1、NAT(Network Address Translation)原理](#1、NAT(Network Address Translation)原理)
[2. 如何判断是否发生分片?](#2. 如何判断是否发生分片?)
一、开篇:为什么我们要"100%可靠"地传输数据?
"我要把数据100%可靠地从A主机送到B主机!"------这正是传输层(Transport Layer) 的核心使命。
在互联网世界中,网络本身是不可靠的 。数据可能丢失、乱序、重复、延迟甚至被篡改。而我们日常使用的网页浏览、文件传输、视频通话等应用,都要求通信必须稳定、准确、可恢复。
于是,TCP(Transmission Control Protocol) 应运而生------它通过一系列精巧的设计,实现了"端到端的可靠性保证",成为现代互联网最基础、最关键的协议之一。
二、TCP的核心功能:可靠性 + 流量控制 + 拥塞控制
| 功能 | 说明 |
|---|---|
| 可靠交付 | 数据不会丢失、不重复、按序到达 |
| 流量控制 | 防止发送方"太快"导致接收方缓冲区溢出 |
| 拥塞控制 | 自动调节发送速率,避免网络拥塞崩溃 |
| 连接管理 | 三次握手建立连接,四次挥手关闭连接 |
| 错误检测与重传 | 使用校验和 + 超时重传机制 |
一句话总结 :TCP 是一个"有状态、面向连接、可靠传输 "的协议,它的目标就是让不可靠的网络变得可靠。
三、网络的本质:被设计过的复杂系统
1、网络不是自然形成的,而是几十年规划与建设的产物
-
互联网起源于美国军方项目 ARPANET;
-
经历了从分组交换 → TCP/IP → 全球互联的演进;
-
每一层协议、每一个地址分配规则,都是经过精心设计的。
关键认知:**网络是被设计过的!**我们学习网络,不是背记知识点,而是要理解:
-
它是如何被构建的?
-
各个组件之间的协作逻辑是什么?
-
为什么要这样设计?
2、路由的本质:查找与淘汰的过程!
路由器分为企业级路由器、和家用路由器、公网的出入口路由器等。
路由 = 查找目标网络的过程, 而查找的本质,是一个不断淘汰无关路径的过程。
**举个例子:**假设你要从北京去上海,但你不知道怎么走:
-
第一步:先问"哪个城市离上海最近?"→ 排除所有非华东的城市;
-
第二步:再问"哪条高速公路通向上海?"→ 排除所有国道或省道;
-
第三步:最后找到"G42沪蓉高速"的出口 → 到达目的地。
类比网络路由:
-
IP 地址 = 目标位置;
-
子网掩码 = 区域边界;
-
路由表 = 导航地图;
-
每跳路由器 = 中间导航点;
所以,"只要我淘汰的效率高,那么整个路由的效率就高"。
四、IP地址的构成与资源争夺
1、IP = 网络号 + 主机号
IPv4 是 32 位地址,分为两部分:
-
网络号(Network ID):标识所属子网;
-
主机号(Host ID):标识该子网中的具体设备。
重要结论:IP地址是有用的、有限的、稀缺的资源 → 大家都要抢!
2、谁在抢?谁来分?
| 角色 | 行为 | 示例 |
|---|---|---|
| ICANN | 全球顶级管理者 | 分配根域名、IPv6地址块 |
| APNIC / RIPE NCC / ARIN | 区域注册机构 | 分配亚太/欧洲/北美地区的IP |
| 各国运营商(如中国电信) | 实际申请者 | 向APNIC申请IP段,用于国内部署 |
| 企业/云厂商 | 最终使用者 | 从运营商租用公网IP或使用私网+NAT |
现实情况 :公网IP并非按"国家"平均分配,而是根据用户规模、经济发展水平、政策支持等因素综合决定。
五、公网 vs 内网:普通人接触的是"内网"
1、网络宏观结构:公网 : 内网 = 1 : n
| 类型 | 特点 | 是否可见于公网 |
|---|---|---|
| 公网(Public Network) | 全球唯一、可路由 | ✅ 可见 |
| 内网(Private Network) | 私有、局域、不可路由 | ❌ 不可见 |
关键事实:
-
普通人直接接触的几乎全是内网(家庭Wi-Fi、公司局域网);
-
内网使用的是私网IP (如
192.168.x.x); -
内网IP可以重复,因为它们只在本地有效。
2、为什么私网IP不能出现在公网?
-
唯一性缺失 :
192.168.1.10在全球有数百万台设备都在用; -
路由无法识别:互联网路由器会丢弃目的地址为私网IP的数据包;
-
安全隔离:防止外部直接访问内部设备。
所以,私网IP只能用于内部通信 ,若需访问公网,必须借助 NAT 技术。
六、NAT:解决IP不足的关键技术
1、NAT(Network Address Translation)原理
-
作用:允许多个内网设备共享一个公网IP。
-
工作方式:
-
内网主机发起请求(源IP =
192.168.1.10); -
路由器将源IP替换为自己的WAN口公网IP(如
203.0.113.45); -
记录映射关系:
(192.168.1.10:50000) ↔ (203.0.113.45:50000); -
响应返回时,路由器根据端口还原并转发。
-
这种机制称为 SNAT(Source NAT),是家庭宽带上网的基础。
2、NAT的优势与代价
| 优点 | 缺点 |
|---|---|
| 解决IPv4地址枯竭 | 破坏端到端通信 |
| 提升安全性(隐藏内网) | 增加路由器负担 |
| 支持多设备共用一个公网IP | P2P、VoIP等需要额外穿透 |
七、路由器:既是网络设备,也是"小型计算机"
1、路由器的功能远超"转发数据"
现代路由器已具备以下能力:
-
运行操作系统(如 Linux、VxWorks);
-
执行路由协议(OSPF、BGP);
-
配置双IP地址(LAN口 + WAN口);
-
实现DHCP服务(自动分配内网IP);
-
支持防火墙、QoS、NAT等功能。
假设路由器背面标签显示:
-
管理地址 :
192.168.2.1→ LAN口IP(内网) -
Wi-Fi名称 :
ChinaNet-TbdJJF→ 无线接入点 -
MAC地址 :
28:77:77:EB:3D:7E→ 硬件标识 -
运营商信息:中国电信 → 表示这是运营商提供的设备
结论:路由器至少要配置两套IP:
-
一套用于内网(如
192.168.1.1); -
一套用于外网(即WAN口公网IP)。
八、传输层如何应对IP分片问题?
1、分片(Fragmentation)发生在哪一层?
**答案:IP层(网络层);**当数据包大小超过链路MTU(最大传输单元)时,IP层会进行分片。
2. 如何判断是否发生分片?
查看IP头部字段:
cpp
struct iphdr {
...
__be16 frag_off; // 分片偏移
__u8 flags; // 更多分片标志
...
};
| 字段 | 含义 |
|---|---|
| MF(More Fragments) | 若为1,表示还有后续分片;为0,表示最后一个分片 |
| Fragment Offset | 本分片在原始报文中的偏移量(单位:8字节) |
判断条件:
-
如果
MF == 1→ 是分片; -
或者
Fragment Offset > 0→ 也是分片; -
只有当
MF == 0 && Fragment Offset == 0时,才是完整报文。
3、如何组装分片?
组装过程依赖两个关键字段:
-
ID(Identification):相同ID的分片属于同一个原始报文;
-
Fragment Offset:决定各分片的顺序。
组装步骤:
-
收集所有来自同一ID的分片;
-
按照
Fragment Offset升序排列; -
检查是否有遗漏:
-
第一片丢失 → 无法重组;
-
中间丢失 → 数据损坏;
-
尾部丢失 → 不完整;
-
-
使用
Fragment Offset + 本分片长度计算下一个分片的偏移; -
重新拼接成原始数据。
注意:
-
没有MF=0且Offset=0的分片,则无法完成组装;
-
分片后,TCP层不再关心分片,只负责确认是否收到全部数据。
九、TCP如何保证"100%可靠"?
1、核心机制详解
| 机制 | 作用 |
|---|---|
| 序列号(Sequence Number) | 每个字节编号,确保按序交付 |
| 确认应答(ACK) | 接收方返回ACK,告知已收到 |
| 超时重传(Timeout Retransmit) | 发送方未收到ACK,则重发 |
| 滑动窗口(Sliding Window) | 实现流量控制,避免拥塞 |
| 快速重传(Fast Retransmit) | 收到重复ACK立即重传,无需等待超时 |
示例:A 发送数据包 seq=100,B 收到后返回 ACK=101;若 A 未收到 ACK,则在超时后重发 seq=100。
2、TCP为何能"跨网络"传输?
-
端到端原则:TCP 不依赖中间网络节点,只关注两端主机;
-
连接建立:通过三次握手确保双方准备好通信;
-
断开连接:四次挥手优雅释放资源;
-
适应性强:能穿越多个路由器、NAT、防火墙。
所以,即使网络复杂,TCP也能"100%可靠"地送达数据。
十、总结:网络是被设计的,我们是参与者
1、三大核心认知
| 认知 | 解读 |
|---|---|
| 网络是被设计的 | 从IP划分到路由策略,每一步都有明确目的 |
| 路由本质是查找 | 通过网络号逐级缩小范围,高效定位目标 |
| TCP是终极保障 | 在不可靠的网络上,实现可靠的端到端通信 |
2、我们每个人都在参与这个系统
-
你家的路由器 → 构建了你的"内网";
-
你支付的网费 → 买的是接入公网的"通道权";
-
你使用的APP → 依赖TCP/IP完成数据传输;
-
你看到的网页 → 经过无数路由器转发而来。
最终结论 :互联网不是魔法,而是一套精密设计的工程系统。我们每一次点击、每一次上传,都是这套系统的运转体现。
附录:关键术语对照表
| 术语 | 解释 |
|---|---|
| MTU | Maximum Transmission Unit,最大传输单元 |
| NAT | Network Address Translation,网络地址转换 |
| CIDR | Classless Inter-Domain Routing,无类别域间路由 |
| ICANN | Internet Corporation for Assigned Names and Numbers,互联网名称与数字地址分配机构 |
| APNIC | Asia Pacific Network Information Centre,亚太网络信息中心 |
| RFC | Request for Comments,互联网标准文档 |
| ARP | Address Resolution Protocol,地址解析协议 |
| DHCP | Dynamic Host Configuration Protocol,动态主机配置协议 |
通过理解这些底层机制,我们不仅能更好地使用网络,更能成为真正的"网络公民"。