第三章
IP协议
RFC791
TCP/IP详解卷 1,CH3,CH11,CH12
主要内容
? 3.1 IP地址
? 3.2 子网和子网掩码
? 3.3 IP数据报
? 3.4 IP选路
? 3.5 IP的分片处理和重组处理
? 3.6 IP组播技术
? 3.7 IP的未来
? 课下作业
3.1 IP 地址
255 255 255 255
点十进制
最大值
Network Host
32 bits
IP 地址
255 255 255 255
点十进制
最大值
Network Host
128 64 32 16
8 4 2 1
11111111 11111111 11111111 11111111二进制
32 bits
1 8 9 16 17 24 25 32
128 64 32 16
8 4 2 1
128 64 32 16
8 4 2 1
128 64 32 16
8 4 2 1
IP 地址
255 255 255 255
点十进制
最大值
Network Host
128 64 32 16
8 4 2 1
11111111 11111111 11111111 11111111
10101100 00010000 01111010 11001100
二进制
32 bits
172 16 122 204
举例
十进制
二进制
1 8 9 16 17 24 25 32
128 64 32 16
8 4 2 1
128 64 32 16
8 4 2 1
128 64 32 16
8 4 2 1
? A类,
? B类,
? C类,
? D类,
? E类,
IP 地址分类
0 Net-id Host-id Host-id Host-id
10 Net-id Net-id Host-id Host-id
110 Net-id Net-id Net-id Host-id
8 bits 8 bits 8 bits 8 bits
11110 Used for research
1110 Broad cast address
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
A 类地址的网络号字段 net-id 为 1 字节
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
B 类地址的网络号字段 net-id 为 2 字节
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
C 类地址的网络号字段 net-id 为 3 字节
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
A 类地址的主机号字段 host-id 为 3 字节
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
B 类地址的主机号字段 host-id 为 2 字节
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
C 类地址的主机号字段 host-id 为 1 字节
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
D 类地址是多播地址
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
E 类地址保留为今后使用
十进制与二进制的转换
0 0 0 0 0 0 0 0 = 0
1 0 0 0 0 0 0 0 = 128
1 1 0 0 0 0 0 0 = 192
1 1 1 0 0 0 0 0 = 224
1 1 1 1 0 0 0 0 = 240
1 1 1 1 1 0 0 0 = 248
1 1 1 1 1 1 0 0 = 252
1 1 1 1 1 1 1 0 = 254
1 1 1 1 1 1 1 1 = 255
128 64 32 16 8 4 2 1
各类 IP 地址的范围
1
A:
位
0NNNNNNN Host Host Host
8 9 16 17 24 25 32
范围 (1-126)
1
B,10NNNNNN Network Host Host
8 9 16 17 24 25 32
范围 (128-191)
1
C,110NNNNN Network Network Host
8 9 16 17 24 25 32
范围 (192-223)
1
D,1110MMMM Multicast Group Multicast Group Multicast Group
8 9 16 17 2425 32
范围 (224-239)
主机地址
172.16.2.2
172.16.3.10
172.16.12.12
10.1.1.1
10.250.8.11
10.180.30.118
E1
172.16 12 12
Network Host
., Network Interface
172.16.0.0
10.0.0.0
E0
E1
Routing Table
172.16.2.1
10.6.24.2
E0
11111111
可用的主机地址
172 16 0 0
10101100 00010000 00000000 00000000
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Network Host
00000000 00000001
11111111 11111111
11111111 11111110
......
00000000 00000011
11111101
12
3
65534
65535
65536
-
...
2
65534
N
2N-2 = 216-2 = 65534
IP地址的特点
? 由因特网编号授权委员会 INAN(Internet Assigned
Number Authority)统一分配
? 非等级的地址结构
? 一个主机同时连到两个网络上 —— 多接口主机
? IP地址同时指明主机和网络
? 用转发器和网桥连接起来的若干局域网具有相同的网
络号
? 所有分配到网络号的网络都是平等的
? 主机号置全 0可用来指明单个网络的地址
特殊 IP地址
? 网络地址 主机号部分为全 0,用来表示一个网络,而
不是连接到该网络的主机,该地址不能在 IP包中出现。
如,128.1.0.0表示一个 B类网络 128.1
? 直接广播地址 主机号部分为全 1,该地址作为目的地
址时表示发给一个网络中的所有主机,但只有单个包
通过互联网到达该网络,然后送达该网络中的所有主
机。如:目的地址为 128.1.255.255的包是发给一个
B类网络 128.1中的所有主机。
? 有限广播地址 255.255.255.255 表示在本网络中的
一次广播。
? 本机地址 0.0.0.0 当计算机启动时能自动获
得它的 IP地址,但,启动协议也使用 IP来通信。
当使用这个启动协议时,计算机不可能支持一
个正确的 IP源地址,为了处理这一情况,用
0.0.0.0 指本计算机。
? 回送地址 127.*.*.* 用于测试网络应用程序,当一个
应用程序发送数据给另一个应用程序时,数据向下穿
过协议栈到达 IP软件,IP软件把数据向上通过协议栈
返回第二个程序。因此,程序员可以很快地在一台计
算机上测试程序逻辑,而无需两台计算机,也无须通
过网络发送包。根据习惯,经常使用主机号 1,所以常
见的回送地址是 127.0.0.1
特殊 IP地址小结
网络号 主机号 地址类型 用 途
全 0 全 0 本机 启动时使用
网络 全 0 网络 标识一个网络
网络 全 1 直接广播 在特定网络上广播
全 1 全 1 有限广播 在本地网络上广播
127 任意 回送 协议栈测试
保留 IP地址
为了解决 IP地址缺乏问题,IANA在 RFC1918
中规定:保留一些 IP地址空间,用于私有网内,
不在公共网内存在。
? 10.0.0.0/8
? 172.16~31.0.0/16
? 192.168.0.0/24
3.2 子网和子网掩码
? IP地址的设计不合理
不够用
浪费
将 IP地址扩展( IPV6)
划分子网
网络号 子网号 主机号
全 1 全 0
? 子网掩码
? 网络 172.16.0.0
172.16.0.0
不划分子网的 IP地址
172.16.0.1 172.16.0.2 172.16.0.3
…...
172.16.255.253 172.16.255.254
? Network 172.16.0.0
划分子网的 IP地址
172.16.1.0 172.16.2.0
172.16.3.0
172.16.4.0
子网的寻址
172.16.2.200
172.16.2.2
172.16.2.160
172.16.2.1
172.16.3.5
172.16.3.100
172.16.3.150
E0
172.16
Network
Network Interface
172.16.0.0
172.16.0.0
E0
E1
New Routing Table
2 160
Host
.,
172.16.3.1
E1
子网的寻址
172.16.2.200
172.16.2.2
172.16.2.160
172.16.2.1
172.16.3.5
172.16.3.100
172.16.3.150
172.16.3.1
E0
E1
172.16 2 160
Network Host
., Network Interface
172.16.2.0
172.16.3.0
E0
E1
New Routing Table
Subnet
子网掩码
172 16 0 0
255 255 0 0
255 255 255 0
IP
地址
缺省的
子网掩码
有 8位子网号的
子网掩码
Network Host
Network Host
Network Subnet Host
11111111 11111111 00000000
00000000
划分子网要付出代价
? 一个 B类地址本来可容纳 216-2=65534台主机
? 划出 6位子网号后最多可有:
26-2=62个子网
每个子网最多可有 210-2=1022台主机
共容纳 62× 1022=63364台主机
? 比划分子网前少容纳
65534-63364=2170台主机
不划分子网的子网掩码
1… 11 000… 000
111… 111 0… 0
111… 111 000… 000
A类 255.0.0.0
255.255.0.0
255.255.255.0
石油大学 202.194.145.~ 属于 C类地址,没划分子网,
故子网掩码为 255.255.255.0
B类
C类
子网规划
Other
subnets
192.168.5.16
192.168.5.32 192.168.5.48
20 个子网
每个子网内 5 个主机
C 类地址, 192.168.5.0
无类路由选择 CIDR
Classless Inter-Domain Routing
? 用来解决两类问题:
? 主干网路由表的增长 —— 聚合路由,使属于同一个 AS
的多个地址映射到一个地址上。
? IP地址不够用 —— 合理分配网络号和主机号的长度,
使得 IP地址被充分利用。
? 关键技术:在 IP地址和路由表中变长前缀之间有效地
找到最长匹配
? 参考网站,http://www.netland.com.cn/
有类和无类路由协议
路 由 协 议 有类或无类
路由信息协议 RIP 有类
路由信息协议 RIPV2 无类
内部网关路由协议 IGRP 有类
开放最短通路优先 OSPF 无类
边界网关协议 BGP 无类
增强内部网关路由协议 EIGRP 无类
3.3 IP 数据报
首部
数据
前一部分,20字节的固定首部
后一部分:长度可变的选项字段、填充
版本 首部长度 服务类型 总 长 度
标 识 标志 片 偏 移
寿 命 协 议 首部检验和
源 IP 地 址
目 的 IP 地 址
长度可变的选项字段 填 充
数 据
…
比特 0 4 8 16 19 24 31
固
定
部
分
可变
部分
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
数 据 部 分首 部传送
IP 数据报
首
部
发送在前
可变
部分
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
数 据 部 分首 部传送
IP 数据报
固
定
部
分
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
数 据 部 分首 部传送
IP 数据报
固
定
部
分
可变
部分
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
版本 —— 占 4 bit,指 IP协议的版本
目前的 IP 协议版本号为 4 (即 IPv4)
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
首部长度 —— 占 4 bit,可表示的最大数值
是 15 个单位 (一个单位为 4 字节 )
因此 IP 的首部长度的最大值是 60字节。
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
服务类型 —— 占 8 bit,用来获得更好的服务
这个字段以前一直没有被人们使用
? 服务类型 8位 用来获得更好的服务
优先级 D T R C 未用
0 1 2 3 4 5 6 7
Low Delay
High Throughput
High Reliability
Low Cost ToS 0
ToS最多有一位置 1
ToS字段推荐值
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
总长度 —— 占 16 bit,指首部和数据之和的长度,
单位为字节,因此数据报的最大长度为 65535 字节。
总长度必须不超过最大传送单元 MTU。
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
标识 (identification) 占 16 bit,
它是一个计数器,用来产生数据报的标识。
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
标志 (flag) 占 3 bit,目前只有前两个比特有意义。
标志字段的最低位是 MF (More Fragment)。
MF ? 1 表示后面“还有分片”。 MF ? 0 表示最后一个分片。
标志字段中间的一位是 DF (Don't Fragment) 。
只有当 DF ? 0 时才允许分片。
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
片偏移 (12 bit)指出:较长的分组在分片后
某片在原分组中的相对位置。
片偏移以 8 个字节为偏移单位。
偏移 = 0/8 = 0
偏移 = 0/8
= 0
偏移 = 1400/8 = 175 偏移 = 2800/8 = 350
1400 2800 379927991399
3799
需分片的
数据报
数据报片 1
首部
数据部分共 3800 字节
首部 1 首部 2 首部 3
字节 0
数据报片 2 数据报片 3
1400 2800字节 0
IP 数据报分片的举例
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
生存时间 (8 bit)记为 TTL (Time To Live),这是为了
限制数据报在网络中的生存时间, 其单位最初是秒,
但为了方便, 现在都用, 跳数, 作为 TTL 的单位 。
数据报每经过一个路由器, 其 TTL 值就减 1。
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
协议 (8 bit)字段指出此数据报携带的数据使用何种协议
以便目的主机的 IP 层将数据部分上交给哪个处理过程
运输层
网络层 首部
TCP UDP
ICMP IGMP OSPF
数 据 部 分
IP 数据报
协议字段指出应将数据
部分交给哪一个进程
? 常用的协议字段值是:
UDP—— 17 TCP—— 6 ICMP—— 1 IGMP—— 2
BGP—— 3 EGP—— 8 IGP—— 9
OSPF—— 89 TP4—— 29
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
首部检验和 (16 bit)字段只检验数据报的首部
不包括数据部分。
这里不采用 CRC 检验码而采用简单的计算方法。
10101100 00010000
11011011
01101110
10100000
11000100
00000010
首部检验和 RFC1071
00010000 00010000
10010000 00010000 00000010
00000010 10101100
……………
1001000010010010
+
01101101 001110111001000101101111
发送端 接收端
16 bit字 1
16 bit字 2
置为全 0检验和
16 bit字 n
16 bit反码算术运算求和
…
…
取反码
数
据
报
首
部
IP 数据报
16 bit检验和
16 bit字 1
16 bit字 2
16 bit检验和
16 bit字 n
16 bit反码算术运算求和
16 bit结果
…
…
取反码
数据部分
若结果为 0,则保留;
否则,丢弃该数据报
数据部分
不参与检验和的计算
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
源地址和目的地址都各占 4 字节
IP 数据报首部的可变部分
? IP 首部的可变部分就是一个选项字段, 用来支
持排错, 测量以及安全等措施, 内容很丰富 。
? 选项字段的长度可变, 从 1 个字节到 40 个字
节不等, 取决于所选择的项目 。
? 增加首部的可变部分是为了增加 IP 数据报的
功能, 但这同时也使得 IP 数据报的首部长度
成为可变的 。 这就增加了每一个路由器处理数
据报的开销 。
? 实际上这些选项很少被使用 。
选 项
? 安全和处理限制(用于军事领域)
? 记录路径(让每个路由器都记下它的 I P地址)
? 时间戳(让每个路由器都记下它的 I P地址和时间)
? 宽松的源站选路 (为数据报指定一系列必须经过的 I P地址)
? 严格的源站选路 (要求只能经过指定的这些地址,不能经过其他的地
址)。
这些选项很少被使用,并非所有的主机和路由器都支持这些选项。
选项字段一直都是以 4字节作为界限,在必要的时候插入值为 0的填充
字节。这样就保证 I P首部始终是 4字节的整数倍
3.4 IP选路
? 路由器收到待转发的数据报
? 查表 得到下一站路由器入口的 IP地址
? 地址转换 路由器入口的 IP地址 —— 〉 路由器入
口的 MAC地址
? 写帧
? 根据帧中 MAC地址找到下一站路由器入口
? 很多路由表中,下站地址就是写的路由器入口的
MAC地址
查路由表
① 用子网掩码 ∧ 目的站 IP地址 D—— 〉 N (网络号 +子网号)
②若 N=该路由器某个端口的网络号,则直接交付,否则转③
③若路由表中有 D的指明主机路由,则按指明的路由器转发,
否则转④
④若路由表中有到达网络 N的路由,则按表中转发,否则转⑤
⑤若有默认路由,则按默认路由转发,否则转⑥
⑥ 报告路由选择出错
3.5 IP的分片处理和重组处理
? 数据链路不同,MTU也不同。
? 各种数据链路的 MTU
见 TCP/IP综合基础篇 P164
? 以太网 1500字节
? IEEE802.3 1492字节
? 16M令牌环 17914字节
? 4M令牌环 4464字节
? FDDI 4352字节
? X.25 576字节
? 点对点(低时延) 296字节
IP数据报的分片处理和重组处理
? 分片以 8字节为单位进行
? 分片可以反复多次
? 分片的缺点:
? 加重路由器的处理负担
? 只要丢失一个分片,原数据报将全部丢掉。
路径 MTU发现
Path MTU Discovery
? 在现在的操作系统中都有实际安装
? 查资料:路径MTU发现的原理和方法
? 做实验:用 ping,tracert等工具测试MTU
ping和 tracert的用法见, 常用的网络命令, 文档
3.6 IP组播技术
? 为了适应多媒体应用,1989年
Stew.Deering 引入组播技术。
? 应用:
? 视频 /音频会议
? 共享公告板
?, push”技术(广告、信息订阅等)
? 数据发布
? 服务器数据复制 …,
IP组播技术要点
? 寻址 224.0.0.0 --- 239.255.255.255
224.0.0.0 -- 224.0.0.255 为保留
? 224.0.0.1,子网上的所有主机
? 224.0.0.2:子网上的所有路由器
? 动态注册 RFC1112定义了 IGMP
? 组播路由
IGMP 因特网组管理协议
? 采用 IGMP,路由器可以确定哪些本地网段应该接受
某一特定组播组的流量。
? 采用组播,一台主机上运行的多个进程可以属于同一
组播组。
? 主机上运行的进程,或者说用户、应用参与某一主机
接口的组播组。这一概念是理解组播的基础也是理解
的关键。
? 某一接口上的组播组成员是动态的,它随着进程加入
或离开组而改变,这意味着用户基于他们执行的应用
可以动态地参加组播组。
? IGMP处理的是组播数据包分发服务环节的最后一步,
它仅涉及在本地路由器和直连子网的组成员之间传送
组播数据流。
? IGMP并不关心相邻路由器间或跨越互联网的组播数
据包的分发,这是由组播路由协议来完成。
组播路由协议
目前常用的组播路由协议有:
? 距离矢量组播路由协议 DVMRP Distance
Vector Multicast Routing Protocol
? 组播开放最短通路优先 MOSPF Multicast
Open Shortest Path First
? 独立于协议组播 PIM Protocol
Independent Multicast,有两种模式:密
集模式和稀疏模式。
组播路由协议的特点
组播路由协议必须结合传统的单播路由
协议一起工作,以建立网络路经。
协 议 要求的单播路由协议 发送算法
DVMRP RIP 反向路经发送
MOSPF OSPF 最短通路优先
PIM密集模式 任何路由协议 反向路经发送
PIM稀疏模式 任何路由协议 类似于基于核心树的算法
组播应用状况
在国外应用非常广泛
? 微软公司每个月都要用组播技术传播多媒体数据流
? Cisco公司已经用 IP/TV来进行实时视频流组播,用于公司内部的会议和
培训。
? 美国田纳西州的 Promus饭店已经使用 StarBurst通信公司的软件,通过卫
星链路向所属分店分发软件升级和数据更新信息。
? MCI公司以及 BBN Planet公司等一些 Internet服务提供商正在有限的基
础上进行组播试验,包括 UUNET Technologies在内的供应商已经开始向
客户提供组播服务,Digital Xpress公司通过卫星经销组播服务。
组播中的主要问题
? 管理问题
? 要防止的攻击:
? 泛洪攻击
? 会话冲突
? 未授权的接收者接受组播数据
? 以别的数据源淹没真正的源,改变会话的内容。
IGMPv3增加了对当前 IP组的管理
? 安全问题
? 服务质量问题 QoS
组播的前景
? 由于组播是一项非常实用的技术,为了推动它的发展,
由全球主要的网络设备厂商、电信运营公司和 ISPs成
立了一个论坛型的组织, IP组播倡议组织 (IPMI)”。
许多大公司,包括 AT&T,IBM,Cisco,Microsoft
和 3Com等都支持 IP组播技术,并且成为了 IPMI的成
员。
? IPMI的目的是与 IETF中的组播工作组一起制定 IP组
播标准,并加速这些标准的采用。随着组播技术的进
一步完善,以及更多高效、实用的组播应用程序被开
发出来,组播将获得更加广泛的应用。
3.7 IP的未来 —— IPv6
? IPv4所面临的问题
? IPv4的地址严重匮乏
? 路由表急剧膨胀
? 网络安全
? 暂时的解决方法
? NAT
? CIDR
? IPv6特点
? 新的地址方案
? 效率更高
? 更灵活
? 功能更强
? …,..
IPv6地址表示
? 冒号十六进制表示法 x:x:x:x:x:x:x:x
? 每段 16 位,如:
FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
? 允许零压缩,如:
? FF01:0:0:0:0:0:0:101 = FF01::101
? 0:0:0:0:0:0:0:1 =,:1
? 0:0:0:0:0:0:0:0 =,:
? 允许 IPv4地址和 IPv6地址 混合使用
? IPv4 兼容地址:支持隧道方式在 IPv4中传 IPv6
包(高 96比特为 0),,202.112.109.47
? IPv4映象地址:用于 IPv6节点访问只支持 IPv4的
节点。,,FFFF:202.112.109.47
IPv6地址类型
? RFC2373
? 可聚集全球地址
? 001 1/8 total space
? 链路本地地址
? 1111111010 1/1024 total space
? 节点本地地址
? 1111111011 1/1024 total space
? 多点传送地址
? 11111111 1/256 total space
IPV4到 IPV6的过渡
? 隧道技术
? 双协议栈
? 查资料,IPV4到 IPV6的过渡技术
? 做实验:做一个隧道,来传输 IPV4和
IPV6数据报
课下作业(必做)
1.查资料,IPV4到 IPV6的过渡技术研究
并做相应的实验
2.查资料,IP欺骗原理及防御策略
并做相应的实验
3.查资料,IP组播技术研究
课下作业(选作)
1.编写一个解析 IP数据包的程序,用该程序捕获
网络中的 IP数据包,解析数据包的内容,将结
果显示在标准输出上,并同时写入日志文件。
(注:使用 socket编程)
运行格式:程序名 日志文件
2.编程序,监控网络,捕获一段时间内网络上的 IP数据包,按 IP数
据包的源地址统计出该源地址在该段时间内发出的 IP数据包的个
数,将其写入日志文件或用图形表示出来(建议用图形表示出统
计结果)
运行格式:程序名 时间间隔 日志文件名
3.编程序,判断一个 IP地址是否合法,并判断该地址是否属于一个
给定的子网。
运行格式:程序名 子网号 /子网掩码中 1的个数 IP地址
IP协议
RFC791
TCP/IP详解卷 1,CH3,CH11,CH12
主要内容
? 3.1 IP地址
? 3.2 子网和子网掩码
? 3.3 IP数据报
? 3.4 IP选路
? 3.5 IP的分片处理和重组处理
? 3.6 IP组播技术
? 3.7 IP的未来
? 课下作业
3.1 IP 地址
255 255 255 255
点十进制
最大值
Network Host
32 bits
IP 地址
255 255 255 255
点十进制
最大值
Network Host
128 64 32 16
8 4 2 1
11111111 11111111 11111111 11111111二进制
32 bits
1 8 9 16 17 24 25 32
128 64 32 16
8 4 2 1
128 64 32 16
8 4 2 1
128 64 32 16
8 4 2 1
IP 地址
255 255 255 255
点十进制
最大值
Network Host
128 64 32 16
8 4 2 1
11111111 11111111 11111111 11111111
10101100 00010000 01111010 11001100
二进制
32 bits
172 16 122 204
举例
十进制
二进制
1 8 9 16 17 24 25 32
128 64 32 16
8 4 2 1
128 64 32 16
8 4 2 1
128 64 32 16
8 4 2 1
? A类,
? B类,
? C类,
? D类,
? E类,
IP 地址分类
0 Net-id Host-id Host-id Host-id
10 Net-id Net-id Host-id Host-id
110 Net-id Net-id Net-id Host-id
8 bits 8 bits 8 bits 8 bits
11110 Used for research
1110 Broad cast address
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
A 类地址的网络号字段 net-id 为 1 字节
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
B 类地址的网络号字段 net-id 为 2 字节
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
C 类地址的网络号字段 net-id 为 3 字节
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
A 类地址的主机号字段 host-id 为 3 字节
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
B 类地址的主机号字段 host-id 为 2 字节
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
C 类地址的主机号字段 host-id 为 1 字节
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
D 类地址是多播地址
net-id
24 bit
host-id
24 bit
net-id
16 bit
net-id
8 bit
IP 地址中的网络号字段和主机号字段
0A 类地址
host-id
16 bit
B 类地址
C 类地址 01 1
host-id
8 bit
D 类地址 1110 多 播 地 址
E 类地址 保 留 为 今 后 使 用1111 0
01
E 类地址保留为今后使用
十进制与二进制的转换
0 0 0 0 0 0 0 0 = 0
1 0 0 0 0 0 0 0 = 128
1 1 0 0 0 0 0 0 = 192
1 1 1 0 0 0 0 0 = 224
1 1 1 1 0 0 0 0 = 240
1 1 1 1 1 0 0 0 = 248
1 1 1 1 1 1 0 0 = 252
1 1 1 1 1 1 1 0 = 254
1 1 1 1 1 1 1 1 = 255
128 64 32 16 8 4 2 1
各类 IP 地址的范围
1
A:
位
0NNNNNNN Host Host Host
8 9 16 17 24 25 32
范围 (1-126)
1
B,10NNNNNN Network Host Host
8 9 16 17 24 25 32
范围 (128-191)
1
C,110NNNNN Network Network Host
8 9 16 17 24 25 32
范围 (192-223)
1
D,1110MMMM Multicast Group Multicast Group Multicast Group
8 9 16 17 2425 32
范围 (224-239)
主机地址
172.16.2.2
172.16.3.10
172.16.12.12
10.1.1.1
10.250.8.11
10.180.30.118
E1
172.16 12 12
Network Host
., Network Interface
172.16.0.0
10.0.0.0
E0
E1
Routing Table
172.16.2.1
10.6.24.2
E0
11111111
可用的主机地址
172 16 0 0
10101100 00010000 00000000 00000000
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Network Host
00000000 00000001
11111111 11111111
11111111 11111110
......
00000000 00000011
11111101
12
3
65534
65535
65536
-
...
2
65534
N
2N-2 = 216-2 = 65534
IP地址的特点
? 由因特网编号授权委员会 INAN(Internet Assigned
Number Authority)统一分配
? 非等级的地址结构
? 一个主机同时连到两个网络上 —— 多接口主机
? IP地址同时指明主机和网络
? 用转发器和网桥连接起来的若干局域网具有相同的网
络号
? 所有分配到网络号的网络都是平等的
? 主机号置全 0可用来指明单个网络的地址
特殊 IP地址
? 网络地址 主机号部分为全 0,用来表示一个网络,而
不是连接到该网络的主机,该地址不能在 IP包中出现。
如,128.1.0.0表示一个 B类网络 128.1
? 直接广播地址 主机号部分为全 1,该地址作为目的地
址时表示发给一个网络中的所有主机,但只有单个包
通过互联网到达该网络,然后送达该网络中的所有主
机。如:目的地址为 128.1.255.255的包是发给一个
B类网络 128.1中的所有主机。
? 有限广播地址 255.255.255.255 表示在本网络中的
一次广播。
? 本机地址 0.0.0.0 当计算机启动时能自动获
得它的 IP地址,但,启动协议也使用 IP来通信。
当使用这个启动协议时,计算机不可能支持一
个正确的 IP源地址,为了处理这一情况,用
0.0.0.0 指本计算机。
? 回送地址 127.*.*.* 用于测试网络应用程序,当一个
应用程序发送数据给另一个应用程序时,数据向下穿
过协议栈到达 IP软件,IP软件把数据向上通过协议栈
返回第二个程序。因此,程序员可以很快地在一台计
算机上测试程序逻辑,而无需两台计算机,也无须通
过网络发送包。根据习惯,经常使用主机号 1,所以常
见的回送地址是 127.0.0.1
特殊 IP地址小结
网络号 主机号 地址类型 用 途
全 0 全 0 本机 启动时使用
网络 全 0 网络 标识一个网络
网络 全 1 直接广播 在特定网络上广播
全 1 全 1 有限广播 在本地网络上广播
127 任意 回送 协议栈测试
保留 IP地址
为了解决 IP地址缺乏问题,IANA在 RFC1918
中规定:保留一些 IP地址空间,用于私有网内,
不在公共网内存在。
? 10.0.0.0/8
? 172.16~31.0.0/16
? 192.168.0.0/24
3.2 子网和子网掩码
? IP地址的设计不合理
不够用
浪费
将 IP地址扩展( IPV6)
划分子网
网络号 子网号 主机号
全 1 全 0
? 子网掩码
? 网络 172.16.0.0
172.16.0.0
不划分子网的 IP地址
172.16.0.1 172.16.0.2 172.16.0.3
…...
172.16.255.253 172.16.255.254
? Network 172.16.0.0
划分子网的 IP地址
172.16.1.0 172.16.2.0
172.16.3.0
172.16.4.0
子网的寻址
172.16.2.200
172.16.2.2
172.16.2.160
172.16.2.1
172.16.3.5
172.16.3.100
172.16.3.150
E0
172.16
Network
Network Interface
172.16.0.0
172.16.0.0
E0
E1
New Routing Table
2 160
Host
.,
172.16.3.1
E1
子网的寻址
172.16.2.200
172.16.2.2
172.16.2.160
172.16.2.1
172.16.3.5
172.16.3.100
172.16.3.150
172.16.3.1
E0
E1
172.16 2 160
Network Host
., Network Interface
172.16.2.0
172.16.3.0
E0
E1
New Routing Table
Subnet
子网掩码
172 16 0 0
255 255 0 0
255 255 255 0
IP
地址
缺省的
子网掩码
有 8位子网号的
子网掩码
Network Host
Network Host
Network Subnet Host
11111111 11111111 00000000
00000000
划分子网要付出代价
? 一个 B类地址本来可容纳 216-2=65534台主机
? 划出 6位子网号后最多可有:
26-2=62个子网
每个子网最多可有 210-2=1022台主机
共容纳 62× 1022=63364台主机
? 比划分子网前少容纳
65534-63364=2170台主机
不划分子网的子网掩码
1… 11 000… 000
111… 111 0… 0
111… 111 000… 000
A类 255.0.0.0
255.255.0.0
255.255.255.0
石油大学 202.194.145.~ 属于 C类地址,没划分子网,
故子网掩码为 255.255.255.0
B类
C类
子网规划
Other
subnets
192.168.5.16
192.168.5.32 192.168.5.48
20 个子网
每个子网内 5 个主机
C 类地址, 192.168.5.0
无类路由选择 CIDR
Classless Inter-Domain Routing
? 用来解决两类问题:
? 主干网路由表的增长 —— 聚合路由,使属于同一个 AS
的多个地址映射到一个地址上。
? IP地址不够用 —— 合理分配网络号和主机号的长度,
使得 IP地址被充分利用。
? 关键技术:在 IP地址和路由表中变长前缀之间有效地
找到最长匹配
? 参考网站,http://www.netland.com.cn/
有类和无类路由协议
路 由 协 议 有类或无类
路由信息协议 RIP 有类
路由信息协议 RIPV2 无类
内部网关路由协议 IGRP 有类
开放最短通路优先 OSPF 无类
边界网关协议 BGP 无类
增强内部网关路由协议 EIGRP 无类
3.3 IP 数据报
首部
数据
前一部分,20字节的固定首部
后一部分:长度可变的选项字段、填充
版本 首部长度 服务类型 总 长 度
标 识 标志 片 偏 移
寿 命 协 议 首部检验和
源 IP 地 址
目 的 IP 地 址
长度可变的选项字段 填 充
数 据
…
比特 0 4 8 16 19 24 31
固
定
部
分
可变
部分
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
数 据 部 分首 部传送
IP 数据报
首
部
发送在前
可变
部分
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
数 据 部 分首 部传送
IP 数据报
固
定
部
分
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
数 据 部 分首 部传送
IP 数据报
固
定
部
分
可变
部分
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
版本 —— 占 4 bit,指 IP协议的版本
目前的 IP 协议版本号为 4 (即 IPv4)
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
首部长度 —— 占 4 bit,可表示的最大数值
是 15 个单位 (一个单位为 4 字节 )
因此 IP 的首部长度的最大值是 60字节。
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
服务类型 —— 占 8 bit,用来获得更好的服务
这个字段以前一直没有被人们使用
? 服务类型 8位 用来获得更好的服务
优先级 D T R C 未用
0 1 2 3 4 5 6 7
Low Delay
High Throughput
High Reliability
Low Cost ToS 0
ToS最多有一位置 1
ToS字段推荐值
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
总长度 —— 占 16 bit,指首部和数据之和的长度,
单位为字节,因此数据报的最大长度为 65535 字节。
总长度必须不超过最大传送单元 MTU。
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
标识 (identification) 占 16 bit,
它是一个计数器,用来产生数据报的标识。
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
标志 (flag) 占 3 bit,目前只有前两个比特有意义。
标志字段的最低位是 MF (More Fragment)。
MF ? 1 表示后面“还有分片”。 MF ? 0 表示最后一个分片。
标志字段中间的一位是 DF (Don't Fragment) 。
只有当 DF ? 0 时才允许分片。
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
片偏移 (12 bit)指出:较长的分组在分片后
某片在原分组中的相对位置。
片偏移以 8 个字节为偏移单位。
偏移 = 0/8 = 0
偏移 = 0/8
= 0
偏移 = 1400/8 = 175 偏移 = 2800/8 = 350
1400 2800 379927991399
3799
需分片的
数据报
数据报片 1
首部
数据部分共 3800 字节
首部 1 首部 2 首部 3
字节 0
数据报片 2 数据报片 3
1400 2800字节 0
IP 数据报分片的举例
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
生存时间 (8 bit)记为 TTL (Time To Live),这是为了
限制数据报在网络中的生存时间, 其单位最初是秒,
但为了方便, 现在都用, 跳数, 作为 TTL 的单位 。
数据报每经过一个路由器, 其 TTL 值就减 1。
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
协议 (8 bit)字段指出此数据报携带的数据使用何种协议
以便目的主机的 IP 层将数据部分上交给哪个处理过程
运输层
网络层 首部
TCP UDP
ICMP IGMP OSPF
数 据 部 分
IP 数据报
协议字段指出应将数据
部分交给哪一个进程
? 常用的协议字段值是:
UDP—— 17 TCP—— 6 ICMP—— 1 IGMP—— 2
BGP—— 3 EGP—— 8 IGP—— 9
OSPF—— 89 TP4—— 29
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
首部检验和 (16 bit)字段只检验数据报的首部
不包括数据部分。
这里不采用 CRC 检验码而采用简单的计算方法。
10101100 00010000
11011011
01101110
10100000
11000100
00000010
首部检验和 RFC1071
00010000 00010000
10010000 00010000 00000010
00000010 10101100
……………
1001000010010010
+
01101101 001110111001000101101111
发送端 接收端
16 bit字 1
16 bit字 2
置为全 0检验和
16 bit字 n
16 bit反码算术运算求和
…
…
取反码
数
据
报
首
部
IP 数据报
16 bit检验和
16 bit字 1
16 bit字 2
16 bit检验和
16 bit字 n
16 bit反码算术运算求和
16 bit结果
…
…
取反码
数据部分
若结果为 0,则保留;
否则,丢弃该数据报
数据部分
不参与检验和的计算
首
部
0 4 8 16 19 24 31
版 本
标志
生 存 时 间 协 议
标 识
服 务 类 型 总 长 度
片 偏 移
填 充
首 部 检 验 和
源 地 址
目 的 地 址
可 选 字 段 (长 度 可 变)
比特
首部长度
0 1 2 3 4 5 6 7
D T R C 未用优 先 级
数 据 部 分
比特
固
定
部
分
可变
部分
源地址和目的地址都各占 4 字节
IP 数据报首部的可变部分
? IP 首部的可变部分就是一个选项字段, 用来支
持排错, 测量以及安全等措施, 内容很丰富 。
? 选项字段的长度可变, 从 1 个字节到 40 个字
节不等, 取决于所选择的项目 。
? 增加首部的可变部分是为了增加 IP 数据报的
功能, 但这同时也使得 IP 数据报的首部长度
成为可变的 。 这就增加了每一个路由器处理数
据报的开销 。
? 实际上这些选项很少被使用 。
选 项
? 安全和处理限制(用于军事领域)
? 记录路径(让每个路由器都记下它的 I P地址)
? 时间戳(让每个路由器都记下它的 I P地址和时间)
? 宽松的源站选路 (为数据报指定一系列必须经过的 I P地址)
? 严格的源站选路 (要求只能经过指定的这些地址,不能经过其他的地
址)。
这些选项很少被使用,并非所有的主机和路由器都支持这些选项。
选项字段一直都是以 4字节作为界限,在必要的时候插入值为 0的填充
字节。这样就保证 I P首部始终是 4字节的整数倍
3.4 IP选路
? 路由器收到待转发的数据报
? 查表 得到下一站路由器入口的 IP地址
? 地址转换 路由器入口的 IP地址 —— 〉 路由器入
口的 MAC地址
? 写帧
? 根据帧中 MAC地址找到下一站路由器入口
? 很多路由表中,下站地址就是写的路由器入口的
MAC地址
查路由表
① 用子网掩码 ∧ 目的站 IP地址 D—— 〉 N (网络号 +子网号)
②若 N=该路由器某个端口的网络号,则直接交付,否则转③
③若路由表中有 D的指明主机路由,则按指明的路由器转发,
否则转④
④若路由表中有到达网络 N的路由,则按表中转发,否则转⑤
⑤若有默认路由,则按默认路由转发,否则转⑥
⑥ 报告路由选择出错
3.5 IP的分片处理和重组处理
? 数据链路不同,MTU也不同。
? 各种数据链路的 MTU
见 TCP/IP综合基础篇 P164
? 以太网 1500字节
? IEEE802.3 1492字节
? 16M令牌环 17914字节
? 4M令牌环 4464字节
? FDDI 4352字节
? X.25 576字节
? 点对点(低时延) 296字节
IP数据报的分片处理和重组处理
? 分片以 8字节为单位进行
? 分片可以反复多次
? 分片的缺点:
? 加重路由器的处理负担
? 只要丢失一个分片,原数据报将全部丢掉。
路径 MTU发现
Path MTU Discovery
? 在现在的操作系统中都有实际安装
? 查资料:路径MTU发现的原理和方法
? 做实验:用 ping,tracert等工具测试MTU
ping和 tracert的用法见, 常用的网络命令, 文档
3.6 IP组播技术
? 为了适应多媒体应用,1989年
Stew.Deering 引入组播技术。
? 应用:
? 视频 /音频会议
? 共享公告板
?, push”技术(广告、信息订阅等)
? 数据发布
? 服务器数据复制 …,
IP组播技术要点
? 寻址 224.0.0.0 --- 239.255.255.255
224.0.0.0 -- 224.0.0.255 为保留
? 224.0.0.1,子网上的所有主机
? 224.0.0.2:子网上的所有路由器
? 动态注册 RFC1112定义了 IGMP
? 组播路由
IGMP 因特网组管理协议
? 采用 IGMP,路由器可以确定哪些本地网段应该接受
某一特定组播组的流量。
? 采用组播,一台主机上运行的多个进程可以属于同一
组播组。
? 主机上运行的进程,或者说用户、应用参与某一主机
接口的组播组。这一概念是理解组播的基础也是理解
的关键。
? 某一接口上的组播组成员是动态的,它随着进程加入
或离开组而改变,这意味着用户基于他们执行的应用
可以动态地参加组播组。
? IGMP处理的是组播数据包分发服务环节的最后一步,
它仅涉及在本地路由器和直连子网的组成员之间传送
组播数据流。
? IGMP并不关心相邻路由器间或跨越互联网的组播数
据包的分发,这是由组播路由协议来完成。
组播路由协议
目前常用的组播路由协议有:
? 距离矢量组播路由协议 DVMRP Distance
Vector Multicast Routing Protocol
? 组播开放最短通路优先 MOSPF Multicast
Open Shortest Path First
? 独立于协议组播 PIM Protocol
Independent Multicast,有两种模式:密
集模式和稀疏模式。
组播路由协议的特点
组播路由协议必须结合传统的单播路由
协议一起工作,以建立网络路经。
协 议 要求的单播路由协议 发送算法
DVMRP RIP 反向路经发送
MOSPF OSPF 最短通路优先
PIM密集模式 任何路由协议 反向路经发送
PIM稀疏模式 任何路由协议 类似于基于核心树的算法
组播应用状况
在国外应用非常广泛
? 微软公司每个月都要用组播技术传播多媒体数据流
? Cisco公司已经用 IP/TV来进行实时视频流组播,用于公司内部的会议和
培训。
? 美国田纳西州的 Promus饭店已经使用 StarBurst通信公司的软件,通过卫
星链路向所属分店分发软件升级和数据更新信息。
? MCI公司以及 BBN Planet公司等一些 Internet服务提供商正在有限的基
础上进行组播试验,包括 UUNET Technologies在内的供应商已经开始向
客户提供组播服务,Digital Xpress公司通过卫星经销组播服务。
组播中的主要问题
? 管理问题
? 要防止的攻击:
? 泛洪攻击
? 会话冲突
? 未授权的接收者接受组播数据
? 以别的数据源淹没真正的源,改变会话的内容。
IGMPv3增加了对当前 IP组的管理
? 安全问题
? 服务质量问题 QoS
组播的前景
? 由于组播是一项非常实用的技术,为了推动它的发展,
由全球主要的网络设备厂商、电信运营公司和 ISPs成
立了一个论坛型的组织, IP组播倡议组织 (IPMI)”。
许多大公司,包括 AT&T,IBM,Cisco,Microsoft
和 3Com等都支持 IP组播技术,并且成为了 IPMI的成
员。
? IPMI的目的是与 IETF中的组播工作组一起制定 IP组
播标准,并加速这些标准的采用。随着组播技术的进
一步完善,以及更多高效、实用的组播应用程序被开
发出来,组播将获得更加广泛的应用。
3.7 IP的未来 —— IPv6
? IPv4所面临的问题
? IPv4的地址严重匮乏
? 路由表急剧膨胀
? 网络安全
? 暂时的解决方法
? NAT
? CIDR
? IPv6特点
? 新的地址方案
? 效率更高
? 更灵活
? 功能更强
? …,..
IPv6地址表示
? 冒号十六进制表示法 x:x:x:x:x:x:x:x
? 每段 16 位,如:
FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
? 允许零压缩,如:
? FF01:0:0:0:0:0:0:101 = FF01::101
? 0:0:0:0:0:0:0:1 =,:1
? 0:0:0:0:0:0:0:0 =,:
? 允许 IPv4地址和 IPv6地址 混合使用
? IPv4 兼容地址:支持隧道方式在 IPv4中传 IPv6
包(高 96比特为 0),,202.112.109.47
? IPv4映象地址:用于 IPv6节点访问只支持 IPv4的
节点。,,FFFF:202.112.109.47
IPv6地址类型
? RFC2373
? 可聚集全球地址
? 001 1/8 total space
? 链路本地地址
? 1111111010 1/1024 total space
? 节点本地地址
? 1111111011 1/1024 total space
? 多点传送地址
? 11111111 1/256 total space
IPV4到 IPV6的过渡
? 隧道技术
? 双协议栈
? 查资料,IPV4到 IPV6的过渡技术
? 做实验:做一个隧道,来传输 IPV4和
IPV6数据报
课下作业(必做)
1.查资料,IPV4到 IPV6的过渡技术研究
并做相应的实验
2.查资料,IP欺骗原理及防御策略
并做相应的实验
3.查资料,IP组播技术研究
课下作业(选作)
1.编写一个解析 IP数据包的程序,用该程序捕获
网络中的 IP数据包,解析数据包的内容,将结
果显示在标准输出上,并同时写入日志文件。
(注:使用 socket编程)
运行格式:程序名 日志文件
2.编程序,监控网络,捕获一段时间内网络上的 IP数据包,按 IP数
据包的源地址统计出该源地址在该段时间内发出的 IP数据包的个
数,将其写入日志文件或用图形表示出来(建议用图形表示出统
计结果)
运行格式:程序名 时间间隔 日志文件名
3.编程序,判断一个 IP地址是否合法,并判断该地址是否属于一个
给定的子网。
运行格式:程序名 子网号 /子网掩码中 1的个数 IP地址