第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唯一标识数据报
标志3bitDF(不分片)、MF(更多分片)
片偏移13bit分片位置(8字节为单位)
TTL8bit生存时间,每跳减1
协议8bit上层协议(1=ICMP,6=TCP,17=UDP)
检验和16bit仅覆盖IP首部
源IP地址32bit-
目的IP地址32bit-
选项可变记录路由、时间戳、源站选路等

TOS推荐值

应用TOS值
Telnet/Rlogin0x10(最小时延)
FTP数据0x08(最大吞吐量)
TFTP0x10
SMTP命令0x10
DNS查询0x10

3.3 IP路由选择

路由表搜索顺序

  1. 匹配主机地址(完整匹配)
  2. 匹配网络地址
  3. 匹配默认路由

路由表项内容

  • 目的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提供不可靠、无连接服务。路由选择按主机→网络→默认顺序。子网划分减少路由表规模。