Skip to content

IP 协议:寻址、路由与分包转发 ​

很多人第一次接触网络,会把 IP 理解成“一个地址”。

这当然只说对了一小部分。

IP 是 Internet Protocol,也就是互联网协议。它真正解决的是 在一个由很多网络和路由设备组成的环境里,数据包如何带着目标地址,从源主机一路转发到目标主机。


1. IP 协议到底在解决什么问题 ​

如果没有 IP,一台机器很难知道:

  1. 目标机器是谁
  2. 数据包该往哪条路走
  3. 跨网段、跨路由器时谁来继续转发

所以 IP 的核心职责是:

  1. 逻辑寻址
  2. 数据包封装
  3. 路由转发

它不负责的是:

  1. 不保证可靠送达
  2. 不保证按序到达
  3. 不处理应用层语义

🌟 所以 IP 的边界很清楚,它负责把包尽力送到目标机器,不负责把包可靠、按序、无重复地交付给应用。


2. IP 地址是什么 ​

IP 地址可以看成 网络层用来标识主机或接口的一种逻辑地址。

它和 MAC 地址不一样:

概念更偏什么
IP 地址网络层逻辑寻址
MAC 地址链路层本地硬件地址

在真实网络里:

  1. IP 负责跨网络寻址
  2. MAC 更偏当前链路里的本地投递

3. IPv4 和 IPv6 怎么理解 ​

3.1 IPv4 ​

IPv4 是目前大量系统里仍然常见的一代协议。

它使用 32 位地址,常见写法例如:

text
192.168.1.10

3.2 IPv6 ​

IPv6 是为了解决地址空间不足、路由聚合和协议演进等问题而推进的新一代协议。

常见写法例如:

text
2408:8207:2c10:abcd::10

学习时最重要的不是强背格式,而是先知道:

  1. IPv4 地址空间有限
  2. IPv6 地址空间更大,设计也更现代

4. 路由到底是什么 ​

路由可以看成:

当目标地址不在本地网络里时,数据包应该下一跳发给谁。

也就是说,主机发包时通常不是自己知道全世界所有路径,而是:

  1. 看目标是否本地可达
  2. 如果不在本地网段,就把包交给默认网关
  3. 后续由一跳一跳的路由设备继续转发

所以路由器解决的是:

  1. 看目标 IP
  2. 查路由表
  3. 决定下一跳

5. IP 包为什么还要分片和重组 ​

网络链路能承载的数据帧大小不是无限的。

这就带来一个现实问题:

如果上层交下来的一段数据太大,底层链路一次装不下怎么办。

于是就会涉及:

  1. 分片
  2. 传输
  3. 重组

这部分你不用一开始就把所有字段背下来,但要先知道:

  1. 网络传输不是“无限大一整块数据直接飞过去”
  2. 包大小、链路限制和 MTU 会影响传输行为

6. IP 协议的能力边界 ​

这部分非常重要。

6.1 IP 负责把包送到目标主机附近 ​

它关心的是机器级别的寻址和转发。

6.2 IP 不负责可靠交付 ​

如果包丢了、乱序了、重复了,IP 不会像 TCP 那样替你补上全部机制。

6.3 IP 不知道业务请求是什么 ​

HTTP、RPC、文件上传、视频流,对 IP 来说本质上都只是不同的数据负载。

所以 IP 的能力边界很像:

  1. 我尽量往目标机器送
  2. 但送没送到、顺序对不对、应用怎么解释,不是我单独负责

7. 一个数据包大致怎么走 ​

可以用最简化的流程理解:

  1. 应用把数据交给传输层
  2. 传输层再交给网络层
  3. 网络层给数据加上源 IP 和目标 IP
  4. 主机根据路由决定发给本地网关还是本地目标
  5. 路由器一路根据目标 IP 查表转发
  6. 最终到达目标主机

这就是为什么 IP 经常和“寻址”“路由”“下一跳”绑定在一起。


8. 常见命令示例 ​

下面这些命令不是协议本身,但很适合帮助理解网络层行为:

bash
ping 8.8.8.8
traceroute example.com
ifconfig
netstat -rn

它们分别常用于观察:

  1. 连通性
  2. 路由路径
  3. 本机网络接口
  4. 路由表

9. 常见误区 ​

9.1 以为 IP 地址就是机器的“永久身份” ​

不准确。

很多地址是动态分配的,网络环境一变,地址也可能变化。

9.2 以为 IP 一定可靠 ​

不是。

可靠性更多是传输层,尤其是 TCP 在补。

9.3 以为“能 ping 通”就代表应用一定能访问 ​

不代表。

网络层可达,不等于传输层端口可达,也不等于应用层服务正常。


10. 一句话总结 ​

IP 协议这条主线,本质上是在解决 如何让数据包带着逻辑地址,在多网络和多路由设备组成的环境里,被一步步转发到目标主机。

基于 VitePress 构建的个人技术笔记。