第3章 IP:网际协议
所属:TCP/IP详解 卷1:协议 来源:TCP/IP详解 卷1:协议
本章介绍IP协议,包括IP首部、IP地址分类、子网寻址、子网掩码和IP转发等。
3.1 引言
IP的作用
IP(网际协议)的作用:
- 网络层的核心协议
- 负责分组的选路和转发
- 不可靠、无连接
- 尽力而为的交付
IP是网络层的核心。
IP的特点
IP的特点:
-
不可靠
- 不保证交付
- 丢了不重传
- 顺序不保证
- 重复不保证
-
无连接
- 没有连接状态
- 每个分组独立处理
- 不同分组可能走不同路径
-
尽力而为
- 尽量送到
- 但不保证
- 可靠性由上层(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类 | 0 | 8位 | 24位 | 0.0.0.0 - 127.255.255.255 | 大型网络 |
| B类 | 10 | 16位 | 16位 | 128.0.0.0 - 191.255.255.255 | 中型网络 |
| C类 | 110 | 24位 | 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):
- 把一个大网络分成多个小网络
- 从主机号借位当子网号
- 提高地址利用率
- 便于管理
子网把大网络分成小网络。
为什么需要子网
为什么需要子网:
-
提高地址利用率
- 一个B类有6万多主机
- 很多网络用不完
- 浪费地址
-
便于管理
- 不同部门不同子网
- 分开管理
- 更安全
-
减少广播域
- 每个子网是一个广播域
- 广播不影响其他子网
- 减少广播流量
子网有很多好处。
子网的结构
子网的地址结构:
- 网络号 + 子网号 + 主机号
- 从主机号借位
- 借多少位自己定
例子(B类地址):
原始: 网络号(16位) + 主机号(16位)
子网后:网络号(16位) + 子网号(8位) + 主机号(8位)
子网从主机号借位。
3.7 子网掩码
什么是子网掩码
子网掩码(Subnet Mask):
- 32位
- 用来区分网络号和主机号
- 网络部分为1,主机部分为0
- 和IP地址按位与得到网络地址
子网掩码用来区分网络和主机。
子网掩码的表示
两种表示方法:
-
点分十进制
- 255.255.255.0
- 255.255.0.0
- 最常用
-
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 1500ifconfig有很多用法。
3.9 IP转发
什么是IP转发
IP转发(IP Forwarding):
- 路由器的功能
- 收到分组后
- 根据目的地址
- 选路转发
- 送到下一跳
IP转发是路由器的核心功能。
转发的过程
IP转发的过程:
-
收到分组
- 从某个接口收到IP数据报
-
检查目的地址
- 是不是自己的?
- 是:交给上层
- 不是:转发
-
查路由表
- 找最长匹配的路由
- 确定下一跳和出接口
-
转发
- TTL减1
- 重新计算检验和
- 从出接口发出去
转发过程:收→查→发。
路由表
路由表的条目:
- 目的网络
- 下一跳
- 出接口
- 掩码
- 等等
路由查找:
- 最长匹配优先
- 最具体的路由优先
- 都没有就用默认路由
路由表指导转发。
3.10 源站选路
什么是源站选路
源站选路(Source Routing):
- IP选项的一种
- 发送方指定路径
- 中间路由器按指定路径转发
- 可以控制分组走哪条路
源站选路由发送方指定路径。
两种源站选路
两种源站选路:
-
严格源站选路(Strict Source Route)
- 必须严格按指定的路径
- 每一跳都要指定
- 不能变
-
松散源站选路(Loose Source Route)
- 指定必须经过的路由器
- 中间可以经过其他路由器
- 比较灵活
严格和松散两种。
源站选路的用途
源站选路的用途:
- 测试特定路径
- 诊断网络问题
- 强制走特定路径
注意:
- 安全风险
- 很多路由器禁用
- 可能被用于攻击
源站选路有安全风险。
3.11 小结
IP首部
-
首部格式
- 20字节固定部分
- 最多40字节选项
- 总长度最大65535
-
关键字段
- 版本、首部长度
- 总长度、标识
- TTL、协议
- 源地址、目的地址
IP地址
-
地址分类
- A类:0开头,8位网络号
- B类:10开头,16位网络号
- C类:110开头,24位网络号
- D类:1110开头,多播
- E类:1111开头,保留
-
特殊地址
- 环回:127.x.x.x
- 私有地址:10/8, 172.16/12, 192.168/16
- 广播:255.255.255.255
子网
-
什么是子网
- 从主机号借位
- 分成多个小网络
-
子网掩码
- 区分网络和主机
- 点分十进制或CIDR表示
-
计算网络地址
- IP AND 掩码 = 网络地址
IP转发
-
转发过程
- 收到分组
- 查路由表
- 转发出去
-
路由表
- 最长匹配
- 默认路由
源站选路
-
两种类型
- 严格源站选路
- 松散源站选路
-
用途
- 测试路径
- 诊断问题
-
安全
- 有风险
- 常被禁用
关键概念
-
IP协议
- 不可靠、无连接、尽力而为
-
IP地址
- 32位
- 分类
- 子网
-
子网掩码
- 区分网络和主机
- CIDR表示
-
IP转发
- 路由器功能
- 路由表
-
源站选路
- 指定路径
- 严格/松散