IP 协议总览
IP 是网络层的寻址与转发协议:它把数据报从源送到目的,做的是尽力而为的交付——不保证送达、不保证顺序、不保证不重复,可靠性与有序性交给上层协议或应用自己保证。转发是逐跳独立决策的,每一跳只看目的地址和本地路由表,因此同一批数据报可能走出不同的路径。现行的两个版本长期共存:旧版本地址空间紧张,新版本容量极大,运营商与云环境普遍采用双栈部署。
基本信息
| 层次 | 网络层,承载传输层协议与网络控制消息 |
|---|---|
| 特性 | 无连接、尽力而为、逐跳独立转发 |
| 版本 | 旧版本使用较短地址,新版本使用更长地址,双栈并存 |
| 配套协议 | 地址解析、路由选择、差错报告等辅助协议 |
| 常见配置 | 地址、掩码、网关、路由表 |
典型使用场景
- 网站与应用部署:为服务器配置地址、网关与路由
- 网络排障:确认地址配置、路由可达与转发路径
- 云环境规划:划分子网、设计地址段与访问策略
- 多网卡主机:为不同业务划分不同地址与路由
- 地址转换与隧道:在受限环境下打通不同网段
查看地址与路由
查看地址与路由
ip -4 addr show # 看旧版本地址与掩码
ip -6 addr show # 看新版本地址
ip route show # 看路由表,默认网关就在其中
ip route get 8.8.8.8 # 直接问内核:去这个地址会走哪条路径,排查多网卡最有用两个版本怎么区分
| 对比项 | 旧版本 | 新版本 |
|---|---|---|
| 地址长度 | 较短,地址空间紧张 | 很长,地址空间极大 |
| 地址写法 | 点分十进制 | 冒号分隔的十六进制 |
| 地址转换 | 普遍使用 | 设计上不需要,可原生直连 |
| 常见部署 | 仍大量存在 | 云与运营商逐步普及,多为双栈 |
排障要点
- 先确认地址与掩码是否正确,再看路由是否存在,最后才怀疑对端
- 多网卡主机必须用内核视角的路由查询确认出口,否则容易抓错网卡的包
- 连通性测试要同时覆盖两个版本,只测一个版本会漏掉双栈环境里的问题
「尽力而为」意味着丢包、乱序、重复都可能发生:协议只负责投递尝试,不承诺质量。应用如果对可靠性有要求,要么使用面向连接的传输层协议,要么自己实现确认与重传。
中间设备会改写地址与端口:抓包看到的地址不一定等于对端真实地址。排查转换相关问题时,必须在两端同时抓包对照,只看一侧会得出完全错误的结论。