第3章 IP:网际协议
3.1 引言
IP是TCP/IP协议族中最核心的协议。
- 不可靠:不保证数据报到达,错误时发送ICMP
- 无连接:不维护状态信息,数据报独立处理
3.2 IP首部
普通IP首部20字节(无选项),最大60字节。
IP首部字段
| 字段 | 长度 | 说明 |
|---|---|---|
| 版本 | 4bit | 当前为4(IPv4) |
| 首部长度 | 4bit | 以4字节为单位,最大60字节 |
| 服务类型(TOS) | 8bit | 优先权、时延、吞吐量、可靠性 |
| 总长度 | 16bit | 整个数据报长度,最大65535字节 |
| 标识 | 16bit | 唯一标识数据报 |
| 标志 | 3bit | DF(不分片)、MF(更多分片) |
| 片偏移 | 13bit | 分片位置(8字节为单位) |
| TTL | 8bit | 生存时间,每跳减1 |
| 协议 | 8bit | 上层协议(1=ICMP,6=TCP,17=UDP) |
| 检验和 | 16bit | 仅覆盖IP首部 |
| 源IP地址 | 32bit | - |
| 目的IP地址 | 32bit | - |
| 选项 | 可变 | 记录路由、时间戳、源站选路等 |
TOS推荐值
| 应用 | TOS值 |
|---|---|
| Telnet/Rlogin | 0x10(最小时延) |
| FTP数据 | 0x08(最大吞吐量) |
| TFTP | 0x10 |
| SMTP命令 | 0x10 |
| DNS查询 | 0x10 |
3.3 IP路由选择
路由表搜索顺序
- 匹配主机地址(完整匹配)
- 匹配网络地址
- 匹配默认路由
路由表项内容
- 目的IP地址(主机或网络)
- 下一跳路由器IP地址
- 标志(G=网关,H=主机)
- 网络接口
3.4 子网寻址
- 将主机号分为子网号和主机号
- 减少路由表规模
- 子网对外部路由器透明
B类地址子网划分示例
140.252.13.33 网络号:140.252(16bit) 子网号:13(8bit) 主机号:33(8bit)
3.5 子网掩码
32bit值,1表示网络/子网部分,0表示主机部分。
示例:
- 255.255.255.0(8bit子网号)
- 255.255.224.0(11bit子网号)
3.6 特殊情况的IP地址
| 地址 | 描述 |
|---|---|
| 0.0.0.0 | 网络上的主机(源地址) |
| 127.x.x.x | 环回地址 |
| 255.255.255.255 | 受限广播 |
| netid.255.255.255 | 指向网络的广播 |
| netid.subnetid.255 | 指向子网的广播 |
3.7 一个子网的例子
变长子网:140.252.13.0/27
- 掩码:255.255.255.224
- 子网号:11bit
- 主机号:5bit
3.8 ifconfig命令
查看接口配置:
ifconfig -a
输出示例
le0: flags=63<UP,BROADCAST,RUNNING>
inet 140.252.13.33 netmask ffffffe0 broadcast 140.252.13.63
3.9 netstat命令
查看接口信息:
bash
netstat -in
输出字段:MTU、Ipkts、Ierrs、Opkts、Oerrs、Collis
3.10 IP的未来
IP的三个问题
B类地址即将耗尽
32bit地址不够用
路由表规模增长
解决方案
CIDR(无类型域间选路):短期方案
IPv6(下一代IP):长期方案
IPv6候选方案
SIP(64bit地址)
PIP(可变长地址)
TUBA(基于OSI CLNP)
TP/IX(64bit地址,修改TCP/UDP)
3.11 小结
IP提供不可靠、无连接服务。路由选择按主机→网络→默认顺序。子网划分减少路由表规模。