📌 核心结论(TL;DR):
IP 核心字段 :
TTL防止路由环路,标识/标志/片偏移用于大包分片。CIDR 划分 :
IP / 掩码,掩码为 1 的是网络号,为 0 的是主机号。私有 IP :
10.x、172.16.x~172.31.x、192.168.x用于局域网,不能直接上公网。NAT 技术:路由器通过替换私有 IP 和端口为公网 IP,实现多设备共享上网,拯救了 IPv4。
路由表 :通过
ip route查看,default指向默认网关,负责跨网段转发。
一、 IP 协议头部

IP 报文头部最少 20 字节,最关键的有:
-
8 位协议:表示上层是 TCP(6) 还是 UDP(17)。
-
8 位 TTL(生存时间):每过一个路由器减 1,减为 0 则丢弃。防止数据包在网络中死循环。
-
分片字段 :因为以太网 MTU(最大传输单元)通常为 1500 字节,如果 IP 包过大,必须依靠
16位标识、3位标志和13位片偏移进行分片和重组。
二、 CIDR 与子网掩码
过去把 IP 分为 A/B/C 类太浪费,现在全部使用 CIDR(无类别域间路由)。
-
比如
192.168.1.10/24:-
/24代表子网掩码前 24 位全为 1(即 255.255.255.0)。 -
将 IP 和掩码按位与,得到网络号
192.168.1.0。 -
剩下 8 位是主机号,可以分配 28−2=25428−2=254 台主机。
-
全 0 是网络地址,全 1 是广播地址,不能分配给主机。
-
三、 公网 IP、私有 IP 与 NAT
IPv4 只有 43 亿个地址,根本不够用。
-
私有 IP :
10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。只能在局域网内通信。 -
NAT(网络地址转换) :你的电脑是私有 IP,家庭路由器拥有公网 IP。你上网时,路由器把你的私有 IP 和端口替换成公网 IP 和随机端口,并在本地记录映射表。回包时再反向替换回去。NAT 让几十亿台设备共享了极少的公网 IP。
四、 实战:网络排查命令

-
ip addr:查看网卡、IP、MAC 地址。云服务器通常只显示内网 IP。 -
ip route:查看路由表。重点是default via xxx,这是数据包出局域网必经的默认网关。 -
ping -c 4 baidu.com:查看 TTL,大致推算经过了多少个路由器。 -
traceroute baidu.com:追踪数据包的每一跳路由。
自我实战操作
网络层的配置不需要写 C 代码,而是熟练使用 Linux 的网络排查命令。
bash
cd ~/linux_study/network_test
实战 1:查看你的网卡与 CIDR
bash
# 查看网卡配置 (看 inet 后面的 IP 和 netmask)
ip addr
# 或者用老命令
ifconfig


👉 现象 :在你的云服务器上,你大概率会看到一个 eth0 网卡,IP 可能是 10.x.x.x 或者 172.x.x.x(这说明你的云服务器用的是私有 IP,并通过阿里云/腾讯云的 NAT 转发访问外网)。
实战 2:查看路由表与网关
bash
ip route
# 或者用老命令
route -n


👉 现象 :你会看到一行 default via 10.0.0.1 dev eth0。这代表默认路由 。当你访问百度(不在你的局域网网段时),数据包会默认扔给 10.0.0.1 这个网关(也就是路由器),由它替你转交。
实战 3:验证 TTL 与路由追踪
bash
# 使用 ping 查看目的主机的 TTL
ping -c 4 baidu.com
# 使用 traceroute 查看数据包经过了多少个路由器
# 需要先安装:sudo apt install traceroute -y
traceroute baidu.com


👉 现象:
-
ping的结果里有一项ttl=52。这是因为百度服务器的 Linux 默认 TTL 是 64,中间经过了 12 个路由器(64 - 12 = 52)。 -
traceroute会打印出 1 跳、2 跳、3 跳... 的 IP 地址。这就是 IP 协议"一问一答"找路的过程。

现象 :执行 apt install 安装软件时,终端突然变成了紫红色背景,提示 Daemons using outdated libraries(使用过时库的守护进程),列出了一大堆服务。
原因 :Ubuntu 的安全机制。在更新了系统核心动态库后,为了让正在后台运行的服务(如 dbus、ssh 等)立刻应用新版本的安全补丁,系统会弹窗询问是否重启它们。
解决 :千万不要按 Ctrl+C 强制退出! 保持默认的 <Ok> 选项,直接敲击回车键 。系统会自动重启服务并完成后续的安装流程。如果强行中断,很可能会导致 apt 锁死,后续安装报错。
实战 4:体验 NAT(内网穿透的前提)
如果你是云服务器,在云控制台看看你的公网 IP ,然后再看 ip addr 里的内网 IP 。你会发现它们完全不一样。这就证明了云厂商在机房出口做了一层巨大的 NAT 网关。这也是为什么我们在写服务器代码 bind 的时候,必须写 INADDR_ANY,而不能写死公网 IP。