大刘的电脑 A 和小美的电脑 B 可以通过 网线 连接起来,组成一个网络。A 发出来数据,B 都能接收到。反之 A 可以接收 B 发出来的所有数据。
没过多久,隔壁老王的电脑 C、阿丽的电脑 D、敏敏的电脑 E 也要加入到网络中来。只使用网线连接是搞不定的了,搞不定的问题就用 分层 的办法处理。
于是就有了二层网络设备 交换机,交换机提供网络互联功能。
交换机可以接入多台电脑,那么它是如何识别不同的电脑呢?又是如何进行数据转发呢?
每个电脑网卡的 MAC 地址 都是不一样的,电脑发送数据时,数据头部携带网卡的 MAC 地址,用 MAC 地址标识来不同的电脑。交换机就可以识别数据头部的 MAC 地址来区分不同的电脑。
交换机除了能识别不同的电脑,还需要找到电脑连接的 交换机端口,才能顺利的把数据从相应端口发送出去。交换机通过 自学机制,把学习到的设备 MAC 地址和交换机端口号添加到 MAC 地址表,并根据 MAC 地址表进行数据 转发。
随着韩国棒棒的电脑 F、美国山姆的电脑 G、印度三三的电脑 H 等等的陆续加入,网络规模越来越大。交换机需要记录的 MAC 地址表也越来越多,需要的交换机也越来越多。但是交换机的 容量和性能有限,MAC 地址表无法记录全世界电脑的 MAC 地址和对应的端口号,MAC 地址表太大也无法快速查找到对应的 MAC 地址表项。
交换机搞不定的问题,就用分层的办法处理。
于是就有了三层网络设备 路由器,路由器可以把全世界的网络连接起来。
局域网内的网络连接可以使用 交换机,例如一个公司内的网络或者一个校园内的网络通过交换机连接。不同区域的局域网互联使用 路由器,那么如何区分不同的网络区域呢?又是如何跨网络区域进行数据转发的呢?
MAC 地址 是烧录到网卡上的,也叫硬件地址,可以标识某一台设备,但无法用来标识某一个网络区域。为了区分不同的网络区域,IP 地址 闪亮登场。IP 地址由 网络号 和 主机号 两部分组成,网络号可以标识网络区域,网络号相同的主机位于同一个网络区域内,即相同网段内。不同的网络区域使用不同的网络号。主机号标识相同网段内的不同主机,不允许相同网段内出现重复的主机号。在整个网络中通过设置网络号和主机号,保证每台主机的 IP 地址不会重复出现,即 IP 地址具有唯一性。
路由器有多个端口,分别连接不同的网络区域,不同网络区域的 IP 地址 网络号不同。它通过识别目的 IP 地址的 网络号,再根据 路由表 进行数据转发。
IP 地址由 32 位二进制数组成,为方便查看和记录,使用十进制数表示。
常用二进制数与十进制数的转换
分配给主机使用的分类地址有 A 类、B 类、C 类,分类地址使用的是固定网络位数,A 类 8
位网络号,B 类 16
位网络号,C 类 24
位网络号。既可以通过判断 分类地址类型( A 类、B 类、C 类其中之一)识别出网络号,也可以通过 子网掩码 识别出网络号。
A 类地址 第一位以 0 0 0 开头,可变化的网络位有 7 7 7 位,即 128 128 128 个 A 类地址。其中 0 0 0 和 127 127 127 属于 特殊地址,可用的 A 类地址就是 128 − 2 = 126 128 - 2 = 126 128−2=126 个。
可变化的主机位有 24 24 24 位,即 16777216 16777216 16777216 个主机地址。其中主机位全为 0 0 0 和主机位全为 1 1 1 分别为 网段地址 和 广播地址,不能分配给主机使用,每个 A 类地址可用的主机地址就是 16777216 − 2 = 16777214 16777216 - 2 = 16777214 16777216−2=16777214 个。
A 类地址的范围是 1.0.0.0
~ 126.255.255.255
。
A 类地址子网掩码是 255.0.0.0
,也可写作 /8
。
B 类地址 前两位以
10
10
10 开头,可变化的网络位有
14
14
14 位,即
16384
16384
16384 个 B 类地址。其中
128.0
128.0
128.0 和
191.255
191.255
191.255 属于 特殊地址,可用的 B 类地址就是
16384
−
2
=
16382
16384 - 2 = 16382
16384−2=16382 个。
可变化的主机位有 16 16 16 位,即 65536 65536 65536 个主机地址。其中 网段地址 和 广播地址 不能分配给主机使用,每个 B 类地址可用的主机地址就是 65536 − 2 = 65534 65536 - 2 = 65534 65536−2=65534 个。
B 类地址的范围是 128.0.0.0
~ 191.255.255.255
。
B 类地址子网掩码是 255.255.0.0
,也可写作 /16
。
C 类地址 前三位以
110
110
110 开头,可变化的网络位有
21
21
21 位,即
2097152
2097152
2097152 个 C 类地址。其中
192.0.0
192.0.0
192.0.0 和
223.255.255
223.255.255
223.255.255 属于 特殊地址,可用的 C 类地址就是
2097152
−
2
=
2097150
2097152 - 2 = 2097150
2097152−2=2097150 个。
可变化的主机位有 8 8 8 位,即 256 256 256 个主机地址。其中 网段地址 和 广播地址 不能分配给主机使用,每个 C 类地址可用的主机地址就是 256 − 2 = 254 256 - 2 = 254 256−2=254 个。
C 类地址的范围是 192.0.0.0
~ 223.255.255.255
。
C 类地址子网掩码是 255.255.255.0
,也可写作 /24
。
网段地址 是主机号全为
0
0
0 的地址,表示某个网段,比如:网段地址 192.168.10.0/24
表示的是网络号为 192.168.10
的所有地址。
广播地址 是主机号全为
1
1
1 的地址,向同一个网段中的所有主机发送数据包的一个地址,比如:网段地址 192.168.10.0/24
的广播地址是 192.168.10.255
。
分类地址保留了几个可以自由使用的私网地址。私网地址不能在公网上出现,只能用在内部网络中,所有的路由器都不转发目标地址为私网地址的数据报。
分类地址 | 私有地址范围 |
---|---|
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 |
举个例子
10.10.10.10
可推算出:10.10.10.10
的网段地址是 10.0.0.0/8
,子网掩码是 255.0.0.0
,广播地址是 10.255.255.255
,第一个可用地址是 10.0.0.1
,最后一个可用地址是 10.255.255.254
,可用地址范围是 10.0.0.1
~ 10.255.255.254
。
172.20.20.20
可推算出:172.20.20.20
的网段地址是 172.20.0.0/16
,子网掩码是 255.255.0.0
,广播地址是 172.20.255.255
,第一个可用地址是 172.20.0.1
,最后一个可用地址是 172.20.255.254
,可用地址范围是 172.20.0.1
~ 172.20.255.254
。
192.168.30.30
可推算出:192.168.30.30
的网段地址是 192.168.30.0/24
,子网掩码是 255.255.255.0
,广播地址是 192.168.30.255
,第一个可用地址是 192.168.30.1
,最后一个可用地址是 192.168.30.254
,可用地址范围是 192.168.30.1
~ 192.168.30.254
。
子网掩码 必须和 IP 地址一起使用,子网掩码也是由 32 32 32 位二进制数组成,网络位为 1 1 1,主机位为 0 0 0。子网掩码和 IP 地址进行 与( AND )运算,得到这个 IP 地址的网段地址。换句话说,IP 地址有多少位网络号,子网掩码就有多少位取 1 1 1,其余都取 0 0 0。
子网掩码可以使用十进制数表示,还可以使用斜线记法表示。
根据 IP 地址和子网掩码计算网段地址,先将 IP 地址和子网掩码转换成二进制数,然后将 IP 地址与子网掩码二进制数一位一位的做 AND 运算,再将结果转换为十进制,就是 网段地址。
与( AND )运算:IP 地址和子网掩码的二进制数,逐位进行计算。只有当 IP 地址和掩码都是
1
1
1 时,运算结果为
1
1
1。其余情况计算结果都为
0
0
0。
分类地址使用的是固定网络位数,可分配的主机 IP 地址也是固定的。但是在实际使用网络时,需要的 IP 地址数量却是各不相同。
举个例子:一个公司有 500 台电脑,需要分配 500 个 IP 地址。如果分配一个 C 类地址,一个 C 类地址的可用 IP 地址数量是 254 个,可用地址不够使用。如果分配一个 B 类地址,一个 B 类地址的可用 IP 地址数量是 65534 个,会造成大量的 IP 地址浪费。
再来个例子:一个家庭有 2 台电脑需要上网,如果分配一个 C 类地址也很浪费,但是没有比 C 类范围更小的地址。
为了解决地址浪费问题,可使用 CIDR(无类域间路由)和 VLSM(可变长子网掩码)技术。
VLSM 可以对 A 、 B 、 C 类地址进行划分,划分成各种类型大小的网络,可用主机地址数量可以灵活变化大小。划分分类地址的过程也叫 子网划分。
CIDR 可以把多个分类地址进行聚会到一起,生成一个更大的网段,以减少路由器中路由条目的数量,减轻路由器的负担。分类地址合并的过程也叫 超网合并。
子网划分后或超网合并后的网段地址,不再是固定的网络位数,这种网络位数可变的网段地址也叫做 无类地址。无类地址只能通过 子网掩码 识别出网络号。
子网划分 是从 IP 地址主机位的最左边开始,把主机位划入网络位,得到多个子网地址。主机位变成网络位的部分叫做 子网号,划分后的子网数量等于 2 2 2 的 N N N 次方, N N N 等于子网号的位数。
即每把一位主机位变成网络位,一个网段地址就变成两个子网地址,子网地址的地址数量只有原来网段地址的一半。
举个例子:一个学校有
150
150
150 台电脑,有三个电脑室,每个电脑室
50
50
50 台电脑。使用私有地址 192.168.0.0/24
给每个电脑室都分配一个网段地址。
网络规划步骤:
(1)每个电脑室 50 50 50 台电脑,计算出子网地址的 主机位 是 6 6 6 位。
(2)计算子网地址的 网络位,即
32
−
主机位
=
26
32 - 主机位 = 26
32−主机位=26 位。
(3)使用私网地址 192.168.0.0/24
分配三个主机位同为
26
26
26 位的子网地址。子网号有
2
2
2 位,因此可以划分出
4
4
4 个大小相同的子网地址。
(4)按照子网号从小到大的顺序,分配
3
3
3 个子网地址给电脑室使用。即分配 192.168.0.0/26
、192.168.0.64/26
、192.168.0.128/26
这三个子网地址。
再来个例子:一个公司有
157
157
157 人,市场部
100
100
100 人,技术部
50
50
50 人,行政部
4
4
4 人,财务部
3
3
3 人,每人一台办公电脑。使用私有地址 192.168.100.0/24
分别为每个部门划分网络地址。
网络规划步骤:
(1)按照需要 IP 地址数量,从大到小依次进行子网划分。先计算有 100 100 100 人的市场部所需子网的主机位是 7 7 7 位。
(2)计算市场部所需子网地址的网络位,即
32
−
主机位
=
25
32 - 主机位 = 25
32−主机位=25 位。
(3)使用私网地址 192.168.100.0/24
分配第一个主机位为
25
25
25 位的子网地址,即 192.168.100.0/25
。
(4)保证与第一个子网地址不重复的前提下,使用未分配的子网值最小的子网地址,计算第二个需要分配的子网地址。即使用 192.168.100.128/25
分配第二个子网地址给技术部(
50
50
50 人)使用。重复步骤
(
1
)
(1)
(1)~
(
3
)
(3)
(3) ,计算出第二个子网的主机位是
6
6
6 位,网络位是
26
26
26 位,第二个子网地址是 192.168.100.128/26
。
(5)保证与前面两个子网地址不重复的前提下,使用未分配的子网值最小的子网地址,计算第三个需要分配的子网地址。即使用 192.168.100.192/26
分配第三个子网地址给行政部(
4
4
4 人)使用。重复步骤
(
1
)
(1)
(1)~
(
3
)
(3)
(3),计算出第三个子网的主机位是
3
3
3 位,网络位是
29
29
29 位,第三个子网地址是 192.168.100.192/29
。
(6)依次类推,计算给财务部(
3
3
3 人)使用的第四个子网地址。得出第四个子网的主机位是
3
3
3 位,网络位是
29
29
29 位,第四个子网地址是 192.168.100.200/29
。
与子网划分相反,把一些小网络组合成一个大网络就是超网合并。
192.168.3.64/26
和192.168.3.128/26
可以合并吗?
192.168.3.64/26
和 192.168.3.128/26
不能合并。
当子网掩码向左移动一位时,网络号不相同,无法合并;
当子网掩码向左移动两位是,网络号是相同了,但是合并了四个网段,非 192.168.3.64/26
和 192.168.3.128/26
合并。
结论:子网掩码左移一位,且网络号相同,能够合并两个网段;左移两位,且网络号相同,能够合并四个网段;左移三位,能够合并八个网段。依次类推。
路由器在收到数据包时,会识别目的 IP 地址的 网络号,来查询路由表的 路由条目,根据最长匹配的路由条目,来判断应该从哪个 接口 转发数据包。路由表中有匹配的路由条目才会发送数据,无匹配的路由条目则直接丢弃。
路由表由路由条目组成,路由条目 包含 目的地址、下一跳 和 出接口 等。
目的地址(Destination / Mask
)表示目的网段地址或目的 IP 地址。目的地址既可以是直连在路由器接口上的网段地址,也可以是其它路由器上的网段地址或 IP 地址。
下一跳 / 出接口(NextHop / Interface
)表示转发目的地址的数据包时,下一跳设备的接口 IP 地址,或者是将数据包从哪个接口转发出去。
协议类型(Proto
,Protocol
的简写 )表示路由条目的获取方式,一共有三种方式。
(1)直连路由:路由器直接连接的路由条目,只要接口配置了 IP 地址,接口状态正常,就会自动生成对应的直连路由。
(2)静态路由:通过命令手动添加的路由条目就是静态路由。
(3)动态路由:通过路由协议从相邻路由器动态学习到的路由条目。
优先级(Pre
,Preference
的简写 )表示有多条去往同一个目的地址的路由条目,根据路由条目的类型,选择优先级最高的路由条目添加到路由表里面。
路由优先级的 值越小,代表这种类型的路由 优先级越高。
路径开销(Cost
)表示通过同一种路由类型学习到多条去往同一个目的地址的路由条目,选择路径开销最小的路由条目添加到路由表里面。
直连路由 是唯一一种自动向路由表中添加路由条目。这种路由条目指向的目的网络是路由器接口直连的网络,直连路由的路由优先级和路径开销值都是 0 0 0。
为了保障直连路由的可用性,路由器只会把 状态正常的接口 所连接的网络,作为直连路由放入自己的路由表中。
默认情况下,路由器只会自动生成直连路由。对于非直连网络,路由器并不知道要如何转发才能到达非直连网络。这时,我们就可以手动添加 静态路由,告诉路由器如何转发去往某个网络的数据包。
静态路由的默认 路由优先级 为 60 60 60,还可以手动调整静态路由的优先值。静态路由的 路径开销值 是 0 0 0。路由器静态路由配置命令:
ip route-static destination-address mask-length nexthop-address
通过 目的地址相同、下一跳或出接口不同 的两条静态路由实现数据流量的 负载分担,路由器会同时使用这两条静态路由条目转发数据包。但是在实际网络环境中,不推荐使用,因为数据报文往返路径不对称,会导致上层应用受影响。
通过 目的地址相同、路由优先级不同 的两条静态路由实现 路由备份,当优先级高的路由条目出现问题时,路由器就会使用另一条优先级低的路由条目来转发数据包。
优点:
缺点:
路由器只能转发有路由条目的数据包,对于网络未知的数据包,只能选择丢弃。实际上,我们也不可能知道所有网站或者应用程序的 IP 地址,需要使用一种特殊的路由条目解决这个问题。
路由转发的 最长匹配原则 是:当匹配目的 IP 地址的路由条目有多条时,路由器会选择子网掩码最长的路由条目,也就是最精确的路由条目来转发数据包。
我们通常会配置一条 0.0.0.0/0
的静态路由,根据最长匹配原则,可以匹配任何目的 IP 地址的数据包,保证任何数据包都能被转发出去;同时,只要路由器上还有任何一条可以匹配目的 IP 地址的路由条目,这条路由条目一定比 0.0.0.0/0
更精确,于是路由器会用更精确的路由条目来转发数据包。这就是 静态默认路由,也是静态路由的一种。
一般家用路由器上除了本地直连路由外就只设置个默认路由,把去往互联网的流量都转发给运营商的路由器。
两个网络之间要实现通信,必须要通过 网关。网关通常位于有路由功能的设备上,网关的 IP 地址可以是路由器的某个接口的 IP 地址,也可以是三层交换机 VLAN 端口的 IP 地址。
一台主机可以有多个网关,当一台主机找不到可用的网关时,数据包可以发送给 默认网关。其实主机上配置的默认网关就是默认路由。
192.168.1.0/24
192.168.2.0/24
192.168.3.0/24
(1)分配 IP 地址,并把 IP 地址配置到 PC 和 RT 的接口上。
192.168.1.1/24
。192.168.2.2/24
。192.168.1.10/24
,RT1 的 G0/0/0 口配置 192.168.3.10/24
。192.168.2.20/24
,RT2 的 G0/0/0 口配置 192.168.3.20/24
。
(2)PC1 分别 Ping 网段
1
1
1、网段
2
2
2、网段
3
3
3 的 IP 地址,结果只能 Ping 通同网段的 192.168.1.10
,其余不同网段的 IP 地址都无法 Ping 通。其它主机和路由器也是只能 Ping 通同网段的 IP 地址。
(3)打通从 PC1 到 PC2 的路由,即 PC1 配置默认网关,RT1 配置到达 192.168.2.0/24
网段的静态路由。
(4)PC1 还是只能 Ping 通同网段的 192.168.1.10
,其余不同网段的 IP 地址都无法 Ping 通。检查各个设备的路由表,发现 PC1 的报文可以发送到 PC2,但是 PC2 和 RT2 没有回程路由,即 PC2 和 RT2 没有到达 PC1 的路由表项,返程报文无法到达 PC1。
(5)打通从 PC1 到 PC2 的回程路由,即 PC2 配置默认网关,RT2 配置到达 192.168.1.0/24
网段的静态路由。
(6)PC1 Ping PC2 成功,并使用 tracert
命令查看网络路径。
配置路由时,需要在通信双方都进行配置,不要忘记配置回程路由。
192.168.4.0/24
(1)RT1 的 GE0/0/2 口和 RT2 的 GE0/0/2 口分别配置网段 4 4 4 的 IP 地址。
(2)通过修改静态路由优先级,使一条路由成为备份条目的路由,这就是浮动静态路由。在 RT1 上配置从 192.168.4.0/24
到 192.168.2.0/24
的浮动静态路由,并且优先级设置为
50
50
50。
192.168.2.0/24
的路由条目。192.168.2.0/24
的路由条目。(3)当一台路由器上有两条不同的路径去往同一个网络的优先级相同的静态路由时,路由器就会同时使用这两条路由来转发流量,这就是等价静态路由。在 RT1 上配置从 192.168.4.0/24
到 192.168.2.0/24
的等价静态路由,即使用默认优先级的值
60
60
60。