数据来源
一、路由概述
-
路由
跨域从源主机到目标主机的一个互联网络来转发数据包的过程(如下图:数据从主机A到主机B这一过程中会经过很多路由器,首先会经过主机A自己的路由器(第一个路由器),然后就会出现两条路线(现实可能不止条),到达要走哪条是路由器的路由表决定的,比如路由表说从上面的路线走,那数据就会从第一台交换机到达上面的交换机,这一过程我们就可以说第一台路由器完成了对数据的路由),路由:就是路由器为IP包选择路径的过程。
路由表:路由器的转发数据的依据是路由表,表里面有的就转发,没有就干掉
不过IPV4的路由表有个缺点,路由表越长,查询时间就越久,效率就越低
0.0.0.0/0 0.0.0.0代表所有IP地址,/0子网掩码
路由表优化:可以把目标ip有多个相同的路由条目,合并成0.0.0.0/0 # 默认路由
下一跳(IP地址):当前路由器连接的另一台路由器接口的IP地址。是指IP路由表中去往目标地址的下一个站点(IP地址),它告诉路由器应该向哪一个设备的IP地址发送该数据包。
路由器查找路由表的时候是按照管理距离值来查找,管理距离值越小查找的优先级越高
静态路由和默认路由配置(当主机位全部置为0代表网段地址)
配置静态路由:
conf t # 进入全局配置模式 Router(config)#
ip route 目标网段 子网掩码 下一跳IP
如:
ip route 70.1.1.0 255.255.255.0 20.1.1.2
配置默认路由:
conf t # 进入全局配置模式 Router(config)#
ip route 0.0.0.0 0.0.0.0 下一跳IP
如:
ip route 0.0.0.0 0.0.0.0 20.1.1.2
浮动路由:
在静态或默认路由后加空格 + 数字(正整数)
例:两个默认路由
ip route 0.0.0.0 0.0.0.0 20.1.1.2
ip route 0.0.0.0 0.0.0.0 30.1.1.2 2
第一条可以说是1无穷大,二条是2无穷大,第二条的AD值比第一条大,所以第一条优先级比第二条高,在一些情况下,可以给两个路由器之间使用两根交叉线连接,一条线使用设置AD值为0,另一条备用设置AD值为1,当AD值为0线出现损坏时就会使用AD值为1的备用线。备用线在路由表中的路由也叫浮动路由(主要的坏了,备用的就浮出水面)
管理距离值AD
AD值越小,则它的优先级越高。 一个管理距离是一个从0——255的整数值,0是最可信赖的,而255则意味着不会有业务量通过这个路由。
默认情况下:
思科路由器
- C 直连接口 0
- S 静态路由 1
- S* 默认路由 无穷大
华为路由器
- 直连接口 0
- 静态路由 60
交换机与路由器对比
-
路由器工作在3层网络层
根据“路由表”转发”数据
路由选择
路由转发
-
交换机工作在2层数据链路层
根据“MAC地址表”转发数据
硬件转发
注意:只有能配IP的接口才有MAC地址,2层的交换机虽然内部有MAC地址表,但是2层的交换机的接口是没有MAC地址的,反知3层路由器的接口都能配ip所以路由器的接口是有MAC地址的。
二、路由器收到别人发送过来的帧的工作过程(工作原理)
1)一个4层完整的帧到达路由器,路由器首先检查帧头的目标MAC地址是否自己,如果不是者丢弃,如果是解封装(去掉帧头和帧尾)还原 3 层IP包(ip包头+TCP/UDP头+数据)并将IP包送到路由器内部。
2)路由器检查IP包头中的目标IP,并匹配路由表,如果匹配失败,则丢弃(省略了一些不重要的步骤),并向源IP回馈错误信息,如果匹配成功,则将IP包路由到出接口。
3)封装帧,首先将出接口的MAC地址作为源MAC地址以IP包封装好,然后检查ARP缓存表,检查是否有下一跳的MAC地址(与目标IP对应的MAC),如有,将提取并作为目标MAC地址封装导致帧中,如果没有,则发送ARP广播请求下一跳的MAC地址(请求的目的就是根据之前帧的目标IP获取目标MAC),并获取到对方的MAC地址后,再记录到ARP缓存表(只有ARP请求才能更新ARP缓存表),并封装帧,最后将帧发送出去。
路由器的本职工作还是根据路由表路由数据
三、路由实验:
实验一:直连路由和静态路由的实验
1)买3台2811的千兆路由器和3台PC,交换机就不买了
2)开始连线,三层以上的设备可以当成同种设置,所以这里用交叉线(路由器的接口不够就买模块)
3)开始给每个网段的PC配IP (ip配那个都行自己记住就好)
4)开始给每个网段的路由器接口配IP(PC的默认网关)
一台路由器的不同接口,有不同的IP,网关的IP一般使用IP地址的第一或最后一位1或254,ip配那个都行不重复自己记住就好
int 接口名(如:fa0/0) # 进入要配置的端口
ip add IP地址 子网掩码 (如:ip add 10.1.1.254 255.255.255.0)
no shut #开启端口
do sh ip int b # 查看路由器接口状态表
配置第一台路由器
配置10网段路由器(第一个路由器)的 Fa0/0 接口,配置ip为:10.1.1.254 255.255.255.0
en
conf t
int fa0/0
ip add 10.1.1.254 255.255.255.0
配置20网段路由器(第一个路由器)的 Fa0/1 接口,配置ip为:20.1.1.1 255.255.255.0
int fa0/1 # 因为是同一个路由器,直接切换接口就好
ip add 20.1.1.1 255.255.255.0
最后查看路由接口状态,是否配置成功 do sh ip int b # 查看路由器接口状态
配置第二台路由器
配置20网段路由器(第二个路由器)的 Fa0/0 接口,配置ip为:20.1.1.254 255.255.255.0
en
conf t
int fa0/0
ip add 20.1.1.254 255.255.255.0
配置30网段路由器(第二个路由器)的 Fa0/1 接口,配置ip为:30.1.1.254 255.255.255.0
int fa0/1
ip add 30.1.1.254 255.255.255.0
配置50网段路由器(第二个路由器)的 Fa1/0 接口,配置ip为:50.1.1.254 255.255.255.0
int fa1/0
ip add 50.1.1.254 255.255.255.0
最后查看路由接口状态,是否配置成功 do sh ip int b # 查看路由器接口状态
配置第三台路由器
配置30网段路由器(第三个路由器)的 Fa0/0 接口,配置ip为:30.1.1.1 255.255.255.0
en
conf t
int fa0/0
ip add 30.1.1.1 255.255.255.0
配置40网段路由器(第三个路由器)的 Fa0/1接口,配置ip为:40.1.1.254 255.255.255.0
int fa0/1
ip add 20.1.1.254 255.255.255.0
5)配置路由表
配置R1路由器的路由表
en # 进入特权模式
conf t # 进入全局配置模式
do sh ip route # 查看路由表(R1配置之前的路由表)
配置路线向右走的路由条目
ip route 0.0.0.0 0.0.0.0 20.1.1.254 # 配置默认路由
S* 0.0.0.0/0 [1/0] via 20.1.1.254 # 0.0.0.0/0 目标网段、 [1/0] 的1是管理距离值,S* 的1代表1无穷大 如果是S的1那就是1 、via 下一跳、20.1.1.254 下一跳ip地址
配置R2路由器的路由表
en # 进入特权模式
conf t # 进入全局配置模式
do sh ip route # 查看路由表(R2配置之前的路由表)
配置R2路由器向左走的静态路由条目
ip route 10.1.1.0 255.255.255.0 20.1.1.1 # 配置默认路由 10.1.1.0 是目标网段地址,20.1.1.254 是下一跳ip地址
配置R2路由器向右走的静态路由条目
ip route 40.1.1.0 255.255.255.0 30.1.1.1 # 配置默认路由 40.1.1.0 是目标网段地址,20.1.1.254 是下一跳ip地址
do sh ip route # 查看路由表(R2配置之后的路由表)
配置R3路由器的路由表
en # 进入特权模式
conf t # 进入全局配置模式
do sh ip route # 查看路由表(R3配置之前的路由表)
R3路由器只能往右边走, 所以路由表就配一个默认路由,当前也可以为每个网段都配个静态路由条目,不过没必要
ip route 0.0.0.0 0.0.0.0 30.1.1.254 # 配置默认路由
6)到这里路由和PC的ip和路由表就配置完了,开始给每个PC配上默认网关
网关:一个网络的出口,Gatewat =GW, 一般网关是在路由器上
PC向外发包:
首先判断目标IP地址与自己是否在同一网段。
如果同一网段,则直接发出去,而不找网关
如不在同一网段,则直接发包给网关 (一般路由器的IP地址就是网关)
所有PC都配上默认网关
最后:随便打开一台PC的cmd,输入命令能够ping通其他ip地址,就说明这里设备都能互相通信了
ping 目标IP # 测试网络连通性
ipconfig # 查看本机ip
实验二:浮动路由
1)买两台2811的千兆路由器,和两台pc用交叉线连接如下图
2)给PC配置ip和默认网关(这里默认网关就一起配了,到时对应的路由器接口ip设置为网关地址就好)
3)给路由器配置IP地址
配置第一台路由器的fa0/0接口
en # 进入特权模式
conf t # 进入全局配置模式
int fa0/0 # 进入路由器的fa0/0接口
ho R1 # 设置路由名称方便区分
ip add 10.1.1.254 255.255.255.0 # 配置路由器接口的ip
no shut # 开启接口
配置第一台路由器的fa0/1接口
int fa0/1 # 进入路由器的fa0/1接口
ip add 20.1.1.254 255.255.255.0 # 配置路由器接口的ip
no shut # 开启接口
配置第一台路由器的fa1/0接口
int fa1/0 # 进入路由器的fa1/0 接口
ip add 30.1.1.254 255.255.255.0 # 配置路由器接口的ip
no shut # 开启接口
查看路由的接口状态,检查一下刚才的配置
do sh ip int b # 查看路由的接口状态
up up 表示已经成功连接
ou down 网线插上了,匹配不成功,这里的原因是另一头接口是关闭状态,路由器的接口默认都是关闭的
配置第二台路由器的fa0/1接口
int fa0/1 # 进入路由器的fa0/1接口
ip add 20.1.1.1 255.255.255.0 # 配置路由器接口的ip
no shut # 开启接口
配置第二台路由器的fa1/0接口
int fa1/0 # 进入路由器的fa1/0接口
ip add 30.1.1.1 255.255.255.0 # 配置路由器接口的ip
no shut # 开启接口
配置第二台路由器的fa0/0接口
int fa0/0 # 进入路由器的fa0/0接口
ip add 30.1.1.1 255.255.255.0 # 配置路由器接口的ip
no shut # 开启接口
4)配置路由表
配置R1路由器的路由表
en # 进入特权模式
conf t # 进入全局配置模式
R1路由器只能往右边走, 而且右边只有一台pc所以直接配静态路由,配置20网段为主要网段
ip route 40.1.1.0 255.255.255.0 20.1.1.1 # 静态路由
配置30网段为备用网段(把这个路由条目的AD值设置大于20网段的路由AD值,静态路由的AD值是1这里>1就行)
ip route 40.1.1.0 255.255.255.0 30.1.1.1 2 # 静态路由
查看路由表,注意路由表只能看到主要路由条目下一跳IP为20.1..1.1的,备用的默认是隐藏的,需要时才会浮出水面
配置R2路由器的路由表
en # 进入特权模式
conf t # 进入全局配置模式
R1路由器只能往左边走, 也有一台pc所以直接配静态路由,这里跟R1路由一样配置两条线也可以,我这里就用下面那条线,也就是下一跳是:30.1.1.254
ip route 10.1.1.0 255.255.255.0 30.1.1.254 # 静态路由
5)到这里这些设备就能互相通信,使用命令:ping 目标ip
6)然后可以把一条线个拔出或手动关闭使用命令:
conf t
int fa0/1 # 进入需要设置的接口
shut # 手动关闭接口
没关闭20网段这条网线的路由表
查看关闭20网段这条网线之后的R1路由表
继续使用第一台pc(10.1.1.1)去ping其他ip还是可以连通的