进阶 #network#ip#ipv4
IP 协议与 IPv4 地址
IP(Internet Protocol)是互联网的"寻址系统"——每个设备有唯一的 IP 地址,路由器根据 IP 地址把数据包从源头发送到目的地
🏠 互联网的”门牌号”
你在淘宝下单——快递员怎么把包裹送到你手上?你的地址(门牌号)告诉快递员的。
IP 地址就是计算机在互联网上的”门牌号”——每个连接到互联网的设备都有一个唯一的 IP 地址(或通过 NAT 共享)。
📐 IP(Internet Protocol,互联网协议) 的核心:
- 给每个设备分配唯一的地址
- 把数据包从源 IP 路由到目标 IP
- 尽力而为——包可能丢、乱序、重复,IP 层不保证可靠(那是 TCP 的工作)
📮 IPv4 地址
IPv4 地址是 32 位二进制数——写成方便人类看的”点分十进制”:
32 位二进制:
11000000 10101000 00000001 00000001
↓ 每 8 位(1 字节)转成十进制
192. 168. 1. 1
所以:192.168.1.1 是一个 IPv4 地址
IPv4 地址总数:2³² ≈ 42.9 亿个。听起来很多,但全球设备数量远超 43 亿——这就是为什么 IPv4 地址早就用完了。
IP 地址的组成部分
IP 地址分为两部分——就像快递地址:北京市 + 海淀区中关村大街5号
网络号:城市(标识网络)
主机号:具体房号(标识设备)
子网掩码:告诉计算机"哪部分是网络号,哪部分是主机号"
255.255.255.0 = /24 = 前 24 位是网络号
IP 地址分类
| 类别 | 范围 | 默认掩码 | 用途 |
|---|---|---|---|
| A 类 | 1.0.0.0 - 126.255.255.255 | /8 | 大型网络 |
| B 类 | 128.0.0.0 - 191.255.255.255 | /16 | 中型网络 |
| C 类 | 192.0.0.0 - 223.255.255.255 | /24 | 小型网络(宿舍、家庭) |
特殊 IP 地址
| 地址 | 含义 |
|---|---|
| 127.0.0.1 | localhost(本机回环地址)——自己访问自己 |
| 0.0.0.0 | 表示”所有 IP”或”当前网络” |
| 255.255.255.255 | 广播地址——发送给同一网络的所有设备 |
| 10.x.x.x / 172.16-31.x.x / 192.168.x.x | 私有 IP——局域网内使用,不上互联网 |
📦 IP 数据包格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
┌───────────────┬───────────────────────────────────────────────┐
│ 版本 │ 头部长度│ 服务类型 │ 总长度 │
├───────────────┼───────────────────────────────────────────────┤
│ 标识 │标志│ 片偏移 │
├───────────────────────────────┴───────────────────────────────┤
│ 生存时间(TTL) │ 协议 │ 头部校验和 │
├───────────────────────────────────────────────────────────────┤
│ 源 IP 地址 │
├───────────────────────────────────────────────────────────────┤
│ 目标 IP 地址 │
├───────────────────────────────────────────────────────────────┤
│ 选项(可选,通常为空) │
├───────────────────────────────────────────────────────────────┤
│ 数据 │
└───────────────────────────────────────────────────────────────┘
IP 头部的关键字段
| 字段 | 大小 | 作用 |
|---|---|---|
| 版本 | 4 位 | IPv4 或 IPv6 |
| TTL | 8 位 | 最大跳数——每经过一个路由器减 1,到 0 就丢弃(防止死循环) |
| 协议 | 8 位 | 上层协议——6=TCP、17=UDP |
| 源 IP | 32 位 | 发件地址 |
| 目标 IP | 32 位 | 收件地址 |
# 查看本机 IP 地址
$ ip addr show # Linux
$ ifconfig # macOS/Linux
$ ipconfig # Windows
# traceroute——看 IP 数据包经过哪些路由器
$ traceroute www.baidu.com
traceroute to 39.156.66.10, 30 hops max
1 192.168.1.1 (家里路由器)
2 10.0.0.1 (运营商网关)
3 202.96.0.1 (城市出口)
4 ...
TTL 的作用:traceroute 利用了 TTL——先发 TTL=1 的包(第一个路由器丢弃并发回 ICMP 超时),再发 TTL=2……从而逐跳探测路径上的每个路由器。
📝 小结
| 概念 | 一句话 |
|---|---|
| IP 地址 | 互联网的”门牌号”——32 位二进制(IPv4) |
| 网络号 + 主机号 | 城市 + 房号——由子网掩码区分 |
| TTL | 最大跳数——防止 IP 包在网络中死循环 |
| 私有 IP | 192.168.x.x / 10.x.x.x——局域网内部使用 |
| 尽力而为 | IP 层不保证可靠——丢包、乱序、重复都可能发生 |