第3章 IP:网际协议

所属:TCP/IP详解 卷1:协议 来源:TCP/IP详解 卷1:协议

本章介绍IP协议,包括IP首部、IP地址分类、子网寻址、子网掩码和IP转发等。


3.1 引言

IP的作用

IP(网际协议)的作用:

  • 网络层的核心协议
  • 负责分组的选路和转发
  • 不可靠、无连接
  • 尽力而为的交付

IP是网络层的核心。


IP的特点

IP的特点:

  1. 不可靠

    • 不保证交付
    • 丢了不重传
    • 顺序不保证
    • 重复不保证
  2. 无连接

    • 没有连接状态
    • 每个分组独立处理
    • 不同分组可能走不同路径
  3. 尽力而为

    • 尽量送到
    • 但不保证
    • 可靠性由上层(TCP)保证

IP是不可靠、无连接、尽力而为的。


本章讨论的内容

本章讨论的内容:

  • IP首部格式
  • IP地址分类
  • 子网寻址
  • 子网掩码
  • 特殊IP地址
  • ifconfig命令
  • IP转发
  • 源站选路

本章介绍IP协议的基本概念。


3.2 IP首部

IP首部格式

IPv4首部格式:

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 版本 | 首部长度 |  服务类型   |          总长度               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          标识                 | 标志 |      片偏移           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  生存时间  |     协议        |        首部检验和             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         源IP地址                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         目的IP地址                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    选项(如果有)                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    数据(如果有)                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

IP首部有固定的格式。


IP首部字段

IP首部各字段:

字段长度说明
版本4位IP版本,IPv4是4
首部长度4位首部长度,单位是4字节
服务类型8位TOS,服务质量
总长度16位整个数据报的长度(字节)
标识16位唯一标识,分片用
标志3位分片标志
片偏移13位分片偏移,单位8字节
生存时间8位TTL,跳数限制
协议8位上层协议
首部检验和16位首部的校验和
源地址32位源IP地址
目的地址32位目的IP地址
选项可变可选,最多40字节
数据可变上层数据

IP首部有很多字段。


关键字段说明

版本(Version):

  • 4位
  • IPv4是4
  • IPv6是6

首部长度(IHL):

  • 4位
  • 单位是4字节
  • 最小5(20字节)
  • 最大15(60字节)

总长度(Total Length):

  • 16位
  • 整个数据报的长度
  • 最大65535字节
  • 包含首部和数据

生存时间(TTL):

  • 8位
  • Time To Live
  • 每经过一个路由器减1
  • 到0就丢弃
  • 防止无限循环

协议(Protocol):

  • 8位
  • 上层协议
  • 1=ICMP, 6=TCP, 17=UDP

各字段有不同的作用。


3.3 IP地址

IP地址的结构

IP地址:

  • 32位(IPv4)
  • 通常写成点分十进制
  • 比如192.168.1.1
  • 网络号 + 主机号

IP地址由网络号和主机号组成。


点分十进制表示

点分十进制(Dotted Decimal):

  • 32位分成4个字节
  • 每个字节用十进制表示
  • 用点号分隔
  • 范围:0.0.0.0 到 255.255.255.255

例子:

  • 192.168.1.1
  • 10.0.0.1
  • 127.0.0.1

点分十进制是最常用的表示方法。


3.4 IP地址分类

五类地址

IP地址分为五类:

类别第一位网络号位数主机号位数范围用途
A类08位24位0.0.0.0 - 127.255.255.255大型网络
B类1016位16位128.0.0.0 - 191.255.255.255中型网络
C类11024位8位192.0.0.0 - 223.255.255.255小型网络
D类1110--224.0.0.0 - 239.255.255.255多播
E类1111--240.0.0.0 - 255.255.255.255保留

IP地址分为五类。


A类地址

A类地址:

  • 第一位是0
  • 网络号占8位
  • 主机号占24位
  • 第一个字节:0-127
  • 网络数:126个(0和127保留)
  • 每个网络主机数:2^24-2 = 16,777,214

特殊的A类:

  • 0.0.0.0:本网络
  • 127.x.x.x:环回地址

A类地址数量少,但每个网络主机多。


B类地址

B类地址:

  • 前两位是10
  • 网络号占16位
  • 主机号占16位
  • 第一个字节:128-191
  • 网络数:2^14 = 16,384
  • 每个网络主机数:2^16-2 = 65,534

B类地址比较均衡。


C类地址

C类地址:

  • 前三位是110
  • 网络号占24位
  • 主机号占8位
  • 第一个字节:192-223
  • 网络数:2^21 = 2,097,152
  • 每个网络主机数:2^8-2 = 254

C类地址数量多,但每个网络主机少。


D类和E类

D类地址:

  • 前四位是1110
  • 用于多播
  • 不区分网络号和主机号
  • 范围:224.0.0.0 - 239.255.255.255

E类地址:

  • 前五位是11110
  • 保留地址
  • 用于实验
  • 范围:240.0.0.0 - 255.255.255.255

D类多播,E类保留。


3.5 特殊IP地址

特殊地址表

特殊IP地址:

地址说明
0.0.0.0本网络上的本主机
255.255.255.255受限广播
网络号.0网络地址
网络号.全1直接广播
127.x.x.x环回地址
10.x.x.x私有地址(A类)
172.16-31.x.x私有地址(B类)
192.168.x.x私有地址(C类)
169.254.x.x链路本地地址

有很多特殊的IP地址。


私有地址

私有地址(Private Address):

  • 不在互联网上路由
  • 用于内部网络
  • 可以重复使用
  • 需要NAT才能上网

私有地址范围:

  • A类:10.0.0.0 - 10.255.255.255
  • B类:172.16.0.0 - 172.31.255.255
  • C类:192.168.0.0 - 192.168.255.255

私有地址用于内部网络。


广播地址

广播地址(Broadcast Address):

  • 主机号全为1
  • 发给网络上所有主机
  • 两种:受限广播和直接广播

受限广播:

  • 255.255.255.255
  • 本网络内广播
  • 路由器不转发

直接广播:

  • 网络号 + 全1主机号
  • 发给特定网络的所有主机
  • 路由器可以转发

广播地址发给所有主机。


3.6 子网寻址

什么是子网

子网(Subnet):

  • 把一个大网络分成多个小网络
  • 从主机号借位当子网号
  • 提高地址利用率
  • 便于管理

子网把大网络分成小网络。


为什么需要子网

为什么需要子网:

  1. 提高地址利用率

    • 一个B类有6万多主机
    • 很多网络用不完
    • 浪费地址
  2. 便于管理

    • 不同部门不同子网
    • 分开管理
    • 更安全
  3. 减少广播域

    • 每个子网是一个广播域
    • 广播不影响其他子网
    • 减少广播流量

子网有很多好处。


子网的结构

子网的地址结构:

  • 网络号 + 子网号 + 主机号
  • 从主机号借位
  • 借多少位自己定

例子(B类地址):

原始:  网络号(16位) + 主机号(16位)
子网后:网络号(16位) + 子网号(8位) + 主机号(8位)

子网从主机号借位。


3.7 子网掩码

什么是子网掩码

子网掩码(Subnet Mask):

  • 32位
  • 用来区分网络号和主机号
  • 网络部分为1,主机部分为0
  • 和IP地址按位与得到网络地址

子网掩码用来区分网络和主机。


子网掩码的表示

两种表示方法:

  1. 点分十进制

    • 255.255.255.0
    • 255.255.0.0
    • 最常用
  2. CIDR表示法

    • /24
    • /16
    • 表示前多少位是网络位

对应关系:

  • /8 = 255.0.0.0
  • /16 = 255.255.0.0
  • /24 = 255.255.255.0
  • /25 = 255.255.255.128

两种表示方法都常用。


计算网络地址

计算网络地址:

  • IP地址 AND 子网掩码 = 网络地址

例子:

IP地址:   192.168.1.100   = 11000000.10101000.00000001.01100100
子网掩码: 255.255.255.0   = 11111111.11111111.11111111.00000000
          ---------------------------------------------------
网络地址: 192.168.1.0     = 11000000.10101000.00000001.00000000

按位与得到网络地址。


3.8 ifconfig命令

ifconfig的作用

ifconfig命令:

  • 配置网络接口
  • 查看接口状态
  • 设置IP地址
  • 设置子网掩码
  • 设置MTU
  • 等等

ifconfig是接口配置工具。


常用用法

查看接口:

ifconfig
ifconfig eth0

设置IP地址和子网掩码:

ifconfig eth0 192.168.1.100 netmask 255.255.255.0

开启/关闭接口:

ifconfig eth0 up
ifconfig eth0 down

设置MTU:

ifconfig eth0 mtu 1500

ifconfig有很多用法。


3.9 IP转发

什么是IP转发

IP转发(IP Forwarding):

  • 路由器的功能
  • 收到分组后
  • 根据目的地址
  • 选路转发
  • 送到下一跳

IP转发是路由器的核心功能。


转发的过程

IP转发的过程:

  1. 收到分组

    • 从某个接口收到IP数据报
  2. 检查目的地址

    • 是不是自己的?
    • 是:交给上层
    • 不是:转发
  3. 查路由表

    • 找最长匹配的路由
    • 确定下一跳和出接口
  4. 转发

    • TTL减1
    • 重新计算检验和
    • 从出接口发出去

转发过程:收→查→发。


路由表

路由表的条目:

  • 目的网络
  • 下一跳
  • 出接口
  • 掩码
  • 等等

路由查找:

  • 最长匹配优先
  • 最具体的路由优先
  • 都没有就用默认路由

路由表指导转发。


3.10 源站选路

什么是源站选路

源站选路(Source Routing):

  • IP选项的一种
  • 发送方指定路径
  • 中间路由器按指定路径转发
  • 可以控制分组走哪条路

源站选路由发送方指定路径。


两种源站选路

两种源站选路:

  1. 严格源站选路(Strict Source Route)

    • 必须严格按指定的路径
    • 每一跳都要指定
    • 不能变
  2. 松散源站选路(Loose Source Route)

    • 指定必须经过的路由器
    • 中间可以经过其他路由器
    • 比较灵活

严格和松散两种。


源站选路的用途

源站选路的用途:

  • 测试特定路径
  • 诊断网络问题
  • 强制走特定路径

注意:

  • 安全风险
  • 很多路由器禁用
  • 可能被用于攻击

源站选路有安全风险。


3.11 小结

IP首部

  1. 首部格式

    • 20字节固定部分
    • 最多40字节选项
    • 总长度最大65535
  2. 关键字段

    • 版本、首部长度
    • 总长度、标识
    • TTL、协议
    • 源地址、目的地址

IP地址

  1. 地址分类

    • A类:0开头,8位网络号
    • B类:10开头,16位网络号
    • C类:110开头,24位网络号
    • D类:1110开头,多播
    • E类:1111开头,保留
  2. 特殊地址

    • 环回:127.x.x.x
    • 私有地址:10/8, 172.16/12, 192.168/16
    • 广播:255.255.255.255

子网

  1. 什么是子网

    • 从主机号借位
    • 分成多个小网络
  2. 子网掩码

    • 区分网络和主机
    • 点分十进制或CIDR表示
  3. 计算网络地址

    • IP AND 掩码 = 网络地址

IP转发

  1. 转发过程

    • 收到分组
    • 查路由表
    • 转发出去
  2. 路由表

    • 最长匹配
    • 默认路由

源站选路

  1. 两种类型

    • 严格源站选路
    • 松散源站选路
  2. 用途

    • 测试路径
    • 诊断问题
  3. 安全

    • 有风险
    • 常被禁用

关键概念

  1. IP协议

    • 不可靠、无连接、尽力而为
  2. IP地址

    • 32位
    • 分类
    • 子网
  3. 子网掩码

    • 区分网络和主机
    • CIDR表示
  4. IP转发

    • 路由器功能
    • 路由表
  5. 源站选路

    • 指定路径
    • 严格/松散

网际协议