●
IP
(
IPv4
)包头
如图:(参考附件)
包头字段表:
字段
|
含义
|
版本号(
Version
)
|
IP
协议的版本,一般是
IPv4
,但
IPv6
会越来越流行
|
包头长度(
Header Length
)
|
定义
IP
包头的长度,长度必须是
4
的倍数,实际比特数应该等于长度
*4
|
DS
字段(
DS Field
)
|
区分服务字段,原来称为
ToS
(服务类型)字节。用于对不同
IP
包应用不同的
QoS
服务级别
|
包长度(
Packet Length
)
|
表示整个
IP
包的长度(包括数据)
|
标识(
Identification
)
|
用于
IP
包分段。如果一个包分成几段,那么这些段都有同样的标识,这样后面就可以用来重组
IP
包
|
标记(
Flags
)
|
用于
IP
包的分段(
3
位)
|
分段偏移(
Fragment Offset
)
|
用于表示
IP
分段在原始
IP
包中的偏移位置
|
生存期(
Time to Live
)
|
用来防止路由循环,通过一次路由器该值就减
1
,如果减为
0
,该
IP
包即丢弃
|
协议(
Protocol
)
|
表示
IP
包承载数据的协议类型
|
包头校验(
Header Checksum
)
|
用来确定包头(非数据)在传输中是否产生错误
|
源地址(
Source IP Address
)
|
32
位的
IP
包发送地址
|
目的地址(
Destination IP Address
)
|
32
位的
IP
包接收地址
|
可选字段和填充(
Optional Header Fields and Padding
)
|
可用于未来扩展的字段,另外,如果可选字段不是
4
的倍数,加入填充信息。
|
●
IP
协议字段值
1
)
ICMP
:
1
2
)
TCP
:
6
3
)
UDP
:
17
4
)
EIGRP
:
88
5
)
OSPF
:
89
6
)
PIM
:
103
●
IPv4
地址回顾:
1
)
32-bit
2
)一般写作“以点分隔的十进制”格式,如
1.2.3
.4
3
)地址是对网络接口而言的,所以包含多个接口的网络设备会有多个
IP
地址
4
)配置了
IP
地址的计算机称为
IP
主机
5
)未被
IP
路由器分隔的一组
IP
主机都处于同一组中,这些分组称为网络、子网或前缀
6
)被
IP
路由器分隔的
IP
主机必定在不同分组中
●
何为分类(
classful
)地址,何为无类(
classless
)地址?
简单地说,分类地址是指
RFC 791
所规定的
A
、
B
和
C
类地址;而无类地址则不按此地址分类,只是把
IP
地址看作两部分:前缀(网络)部分和主机部分。
●分类地址回顾:
地址分类
|
地址的网络
/
主机部分大小
|
第一个八字节的范围
|
默认掩码
|
地址的起始标识位
|
A
|
8/24
|
1-126
|
255.0.0.0
|
0
|
B
|
16/16
|
128-191
|
255.255..0.0
|
10
|
C
|
24/8
|
192-223
|
255.255.255.0
|
110
|
D
|
―
|
224-239
|
―
|
1110
|
E
|
―
|
240-255
|
―
|
|
子网划分后,怎样在
IP
地址中找到网络、子网和主机字段:
1
)网络地址:根据地址分类原则,可能是
8
、
16
或
24bit
2
)子网地址:
32bit
减去网络地址位和主机地址位
3
)主机地址:等于掩码中
0
的个数
子网计算
划分子网的几个捷径
:
1.
你所选择的子网掩码将会产生多少个子网
?
:
2
的
x
次方
-2(x
代表子网位
,
即
2
进制为
1
的部分
) PS
:这里的
x
是指除去默认掩码后的子网位,例如网络地址
192.168.1.1
,掩码
255.255.255.192
,因为是
C
类地址,掩码为
255.255.255.0
。那么
255.255.255.192
(
x.x.x.11000000
)使用了两个
1
来作为子网位。
2.
每个子网能有多少主机
?:
2
的
y
次方
-2(y
代表主机位
,
即
2
进制为
0
的部分
)
3.
有效子网是
?:
有效子网号
=256-10
进制的子网掩码
(
结果叫做
block size
或
base number)
4.
每个子网的广播地址是
?:
广播地址
=
下个子网号
-1
5.
每个子网的有效主机分别是
?
:
忽略子网内全为
0
和全为
1
的地址剩下的就是有效主机地址
.
最后有效
1
个主机地址
=
下个子网号
-2(
即广播地址
-1)
根据上述捷径划分子网的具体实例
:
C
类地址例子
1
:
网络地址
192.168.10.0;
子网掩码
255.255.255.192(/26)
1.
子网数
=2*2-2=2
2.
主机数
=2
的
6
次方
-2=62
3.
有效子网
?:block size=256-192=64;
所以第一个子网为
192.168.10.64,
第二个为
192.168.10.128
4.
广播地址
:
下个子网
-1.
所以
2
个子网的广播地址分别是
192.168.10.127
和
192.168.10.191
5.
有效主机范围是
:
第一个子网的主机地址是
192.168.10.65
到
192.168.10.126;
第二个是
192.168.10.129
到
192.168.10.190
C
类地址例子
2:
网络地址
192.168.10.0;
子网掩码
255.255.255.128(/26)
我知道我举的这个例子只有一个子网位,这通常是不合法的(由
RFC
文档所规定)。但是!世事无绝对,不是吗?这个子网掩码能在你需要两个子网每个子网
126
台主机时给你帮助,不过这是在特殊情况下实现的。在思科路由器的全局配置模式下输入
ip subnet -zero
命令来告诉你的路由器打破规则并使用一个
1
位的子网掩码(这个命令通常在运行
CISCO IOS 12.x
的所有路由器上默认存在)
1.
子网数
=2
2.
主机数
=2
的
7
次方
-2=126
3.
有效子网
?:block size=256-128=128;
所以第一个子网为
192.168.10.0,
第二个为
192.168.10.128
4.
广播地址
:
下个子网
-1.
所以
2
个子网的广播地址分别是
192.168.10.127
和
192.168.10.255
5.
有效主机范围是
:
第一个子网的主机地址是
192.168.10.1
到
192.168.10.126;
第二个是
192.168.10.129
到
192.168.10.254
B
类地址例子
1
:网络地址
:172.16.0.0;
子网掩码
255.255.255.128(/25)
注意!这个不是
C
类地址的子网掩码,然而这个子网划分是有一定难度的,但是!这个掩码却是十分有用的因为它创建了
510
个子网每个子网有
126
个主机,一个很好的组合。
1.
子网数
=2
的
9
次方
-2=510
2.
主机数
=2
的
7
次方
-2=126
3.
有效子网
?:block size=256-255=1
,
2
,
3
,
......
这是第三个八位元组的数值,但是你不能忘记还有一位子网位在第四个八位元组。所以第四个八位元组分为两个子网。例如第三个八位元组表示子网
3
,那第四个八位元组的两个子网为
172.16.3.0
和
172.16.3.128
4.
广播地址
:
下个子网
-1.
所以第一个子网和最后
1
个子网的广播地址分别是
172.16.0.255
和
172.16.255.127
5.
有效主机范围是
:
第一个子网的主机地址是
172.16.0.129
到
172.16.0.254;
最后
1
个是
172.16.255.0
到
172.16.255.126
(补充一下:可能有人问第一个子网为什么不是
172.16.0.0---172.16.0.128
呢?不要忘记!子网位和主机位不能为全
0
或者全
1
,
172.16.0.0
代表了整个
172.16.x.x
网络,同理,最后一个子网也就不可能是
172.16.255.128---172.16.255.255
了。)
B
类地址例子
2
:
网络地址
:172.16.0.0;
子网掩码
255.255.192.0(/18)
1.
子网数
=2*2-2=2
2.
主机数
=2
的
14
次方
-2=16382
3.
有效子网
?:block size=256-192=64;
所以第一个子网为
172.16.64.0,
最后
1
个为
172.16.128.0
4.
广播地址
:
下个子网
-1.
所以
2
个子网的广播地址分别是
172.16.127.255
和
172.16.191.255
5.
有效主机范围是
:
第一个子网的主机地址是
172.16.64.1
到
172.16.127.254;
第二个是
172.16.128.1
到
172.16.191.254
B
类地址例子
3:
网络地址
:172.16.0.0;
子网掩码
255.255.255.224(/27)
1.
子网数
=2
的
11
次方
-2=2046(
因为
B
类地址默认掩码是
255.255.0.0,
所以网络位为
8+3=11)
2.
主机数
=2
的
5
次方
-2=30
3.
有效子网
?:block size=256-224=32;
所以第一个子网为
172.16.0.32,
最后
1
个为
172.16.255.192
4.
广播地址
:
下个子网
-1.
所以第一个子网和最后
1
个子网的广播地址分别是
172.16.0.63
和
172.16.255.223
5.
有效主机范围是
:
第一个子网的主机地址是
172.16.0.33
到
172.16.0.62;
最后
1
个是
172.16.255.193
到
172.16.255.223
A
类地址子网划分
跟
B
类和
C
类并没有什么区别,只是掩码位由
16
位和
8
位变成了
24
位而已。
简单地举个例子吧:
网络地址
: 10.0.0 .0;
子网掩码
255.255.0.0(/16)
1.
子网数
=2
的
8
次方
-2=254
2.
主机数
=2
的
16
次方
-2=65534
3.
有效子网
?:block size=256-255=1
,
2
,
3
,
......;
所以第一个子网为
10.1.0.0,
最后
1
个为
10.254.0.0
4.
广播地址
:
下个子网
-1.
所以第一个子网和最后
1
个子网的广播地址分别是
10.1.255.255
和
10.254.255.255
5.
有效主机范围是
:
第一个子网的主机地址是
10.1.0.1
到
10.1.255.254;
最后
1
个是
10.254.0.1
到
10.254.255.254
无类地址(
CIDR
)、私有地址和
NAT
●
CIDR
和
NAT
的出现都是为了解决
IPv4
地址不足的问题,就目前现状而言,这些方法确实起到了不错的效果,也正是由于它们的有效使用,延缓了
IPv6
替代
IPv4
的步伐。但应该明白,
IPv6
显然才是解决地址不足问题的更长效的方法,而
CIDR
和
NAT
只是过渡性方法。
●
CIDR
的主要作用:在路由表中汇总更为高效,从而提高了路由表的可扩展性。由于它可以汇总多个有类网络为单条路由,这可以看作是子网划分的逆过程,所以又称为超网(
supernetting
)。
●
私有地址主要用于在局域网分配,这些地址在
Internet
上是无效的。这样可以很好地隔离局域网和
Internet
。
RFC 1918
定义了三类私有地址段:
1
)
A
类私有地址:
10.0.0
.0 �C 10.255.255.255
2
)
B
类私有地址:
172.16.0.0 �C 172.31.255.255
3
)
C
类私有地址:
192.168.0.0 �C 192.168.255.255
●
网络地址翻译(
NAT
)定义在
RFC 1631
中。有了这项技术,局域网内部的
IP
地址可以与
Internet
上的主机进行通信。特别在使用私有地址的局域网中,该项技术使用十分广泛。简单地说:
NAT
将内部
IP
地址转换成公网上可用的
IP
地址,从而实现内部
IP
地址与外部公网的通信。
举例:假设某公司注册的公网
IP
地址段是
212.2.3.0/24
,局域网使用的是私有地址段
192.168.0.0/22
,已定义
NAT
记录:
202.2.3.1
对应
192.168.0.1
。它的工作过程是这样的:当内部主机
192.168.0.1
发送
IP
包时,其源地址为
192.168.0.1
,通过
NAT
路由器,其源地址就转换为
202.2.3.1
,这就是公网上可用的
IP
地址了。当公网上的服务器接收到这个
IP
包时,它会认为连接来自
202.2.3.1
,因为是有效的
IP
地址,所以可以建立连接并通信,当服务器发送目的地址为
202.2.3.1
的
IP
包时,
NAT
路由器又将其目的地址转换为
192.168.0.1
,这样内部主机就可以接收到返回的
IP
包了。
●
一些
NAT
术语:
1
)
Inside Local address
(内部局域地址):分配给企业网络内部的主机,一般为私有地址。
2
)
Inside Global address
(内部全球地址):分配给企业网络内部的主机,一般是该企业所拥有的公网
IP
地址。
3
)
Outside Local address
(外部局域地址):分配给公网上的主机,一般为私有地址。
4
)
Outside Global address
(外部全球地址):分配给公网上的主机,一般为公网地址。
●
静态
NAT
静态
NAT
是最简单的一种
NAT
配置方式,通过手工配置,建立私有地址和公网地址的一一对应关系。它的主要特性有:
1
)一个
Inside Local address
总是映射到同一个
Inside Global address
。
2
)一个
Outside Local address
也总是映射到同一个
Outside Global address
。
3
)不提供公网地址节余。
通常静态
NAT
用于内部服务器(该服务器分配的是内部私有地址,但允许公网主机访问)的地址配置。
配置示例:
#conf t
(config)#int fa 0/1
(config-if)#ip address 192.168.0.1 255.255.255.0
(config-if)#ip nat inside
(config-if)#int se 0/0
(config-if)#ip address 202.1.2.1 255.255.255.0
(config-if)#ip nat outside
(config-if)#^Z
(config)#ip nat inside source static 192.168.0.1 202.1.2.1
配置好后可以用
show ip nat trans
查看
NAT
配置表信息。
●不
带
PAT
(端口地址翻译)的动态
NAT
不带
PAT
的动态
NAT
类似于静态
NAT
,也是创建
Inside Local
和
Inside Global
地址的一一对应关系,只不过,它不是定义两个单地址之间的映射,而是定义两组地址(地址池)之间的映射,在地址组之间可以实现动态分配。例如可将私有地址组
192.168.0.1/24
映射到公网地址组
202.1.2.1 -- 202.1.2.5
。当
192.168.0.1/24
网段内的主机需要与公网通信时,它会动态地从
202.1.2.1 -- 202.1.2.5
中选择一个未被占用的,
注意这样最多能够支持
5
台内部主机同时与公网通信。
配置示例:
#conf t
(config)#ip nat pool example 202.1.2.1 200.1.2.2 netmask 255.255.255.252
(config)#access-list 1 permit 192.168.0.1 0.0.0 .255
(config)#ip nat inside source list 1 pool example
●
带
PAT
(端口地址翻译)的动态
NAT
PAT
又称为
NAT
重载(
NAT overloading
),它可以提供公网
IP
地址节余的功能。我们知道,每个连接是用
IP
地址
+
端口号来唯一定义的,如果我们使用不同的端口号来建立连接,就可以在一个
IP
地址上复用多条连接,这就是
NAT with PAT
的主要思想。
为了实现
NAT with PAT
,
NAT
路由器不但需要翻译
IP
地址,也要翻译端口号。一般端口号字段的长度是
16
位,
这样最多可以支持
65000
多个并发的端口连接。
配置示例:
#conf t
(config)#ip nat pool example 202.1.2.1 netmask 255.255.255.252
(config)#access-list 1 permit 192.168.0.1 0.0.0 .255
(config)#ip nat inside source list 1 pool example overload