路由器原理详解:掌握数据包转发与网络地址分配机制

数据来源 

一、路由概述

  • 路由

        跨域从源主机到目标主机的一个互联网络来转发数据包的过程(如下图:数据从主机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还是可以连通的

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狗蛋的博客之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值