路由到交换机原理

路由到交换机
 

1. 数据包从二层交换到三层路由流程

  

(1)源主机在发起通信之前,将自己的IP地址与目的主机的IP地址进行比较,如果源主机判断目的主机与自己位于不同网段时,它需要通过网关来递交报文的,所以它首先需要通过一个ARP请求报文获取网关的MAC地址(在源主机不知道网关MAC地址的情形下),即源主机先发送ARP请求帧以获取网关IP地址对应的MAC地址。

  (2)网关在收到源主机发来的ARP请求报文后以一个ARP应答报文进行回应,在应答报文中的“源MAC地址”就包含了网关的MAC地址。
  (3)在得到网关的ARP应答后,源主机再用网关MAC地址作为报文的“目的MAC地址”,以源主机的IP地址作为报文的“源IP地址”,以目的主机的IP地址作为“目的IP地址”,先把发送给目的主机的数据发给网关。
  (4)网关在收到源主机发送给目的主机的数据后,由于查看得知源主机和目的主机的IP地址不在同一网段,于是把数据报上传到三层交换引擎(ASIC芯片),在里面查看有无目的主机的三层转发表。
  (5)如果在三层硬件转发表中没有找到目的主机的对应表项,则向CPU请求查看软件路由表,如果有目的主机所在网段的路由表项,则还需要得到目的主机的MAC地址,因为数据包在链路层是要经过帧封装的。于是三层交换机CPU向目的主机所在网段发送一个ARP广播请求包,以获得目的主机MAC地址。
  (6)交换机获得目的主机MAC地址后,向ARP表中添加对应的表项,并转发由源主机到达目的主机的灵气包。同时三层交换机三层引擎会结合路由表生成目的主机的三层硬件转发表。

   以后到达目的主机的数据包就可以直接利用三层硬件转发表中的转发表项进行数据交换,不用再查看CPU中的路由表了。


2. 路由表

  

路由器在接收到数据时,要对其传输路径进行选择。为了实现这一目标,路由器需要维护一个称为“路由表”的数据结构。路由表包含若干条目,供路由器选路时查询数据传输路径。路由表中的一个条目至少要包含:

  1. 数据的目的地址(通常是目的主机所在网络的地址)。
  2. 下一跳路由器(即从本路由器出发按所给路径到给定目的地所要通过的下一个路由器)的地址。
  3. 相应的网络接口。
  4. 一般情况下还应该有标志位等内容。 

  由于Internet规模太大,分布范围太广,所以路由表中对应每一个目的网络都有一个条目是不可能的;同样,也不可能采用一个全局的路由算法或协议。因此,Internet将整个网络划分为若干个相对自治的局部系统,即自治系统。自治系统可以定义为同一机构下管理的路由器和网络的集合。一个自治系统内部还可以再划分几个小的路由域,也称作区域。


3. 路由协议

  

根据功能不同路由协议可以分为内部网关协议(IGP,Interior Gateway Protocol)和外部网关协议(EGP,Exterior Gateway Protocol)两大类。内部网关协议是用于自治系统内部的动态路由协议:如RIP和OSPF。外部网关协议是用于自治系统之间拓扑信息交换的路由协议:如BGP。

  根据算法不同路由协议可分为距离矢量路由选择协议和链路状态路由选择协议
  距离矢量路由选择协议基于距离矢量路由算法。其基本思想是路由器周期地和相邻路由器交换路由表中的信息。这种信息是由若干(V,D)对组成的表项,其中,V代表矢量,指出该路由器可以达到的目的地;D表示去往目标V的距离。各个路由器根据收到的信息重新计算到各目的节点的距离,对自己的路由表进行修正。
  链路状态路由选择协议也被称为最短路径优先协议,它基于链路状态路由算法。采用这种协议的路由器都要维护一张可以表示整个网络拓扑结构的无向图G(V,E),在图G中,节点V表示路由器,边E表示连接路由器的链路,因此G又可以称为L-S(链路-状态)图,各路由器的路由表通过L-S图计算。
  链路状态路由算法的基本步骤如下:
  (1)每一个路由器(节点)启动后,首先执行对相邻节点的发现工作,并获取它们的地址。
  (2)各路由器主动测试到每一个相邻路由器的链路时延或成本,并根据测试结果设置相关链路的状态。
  (3)各路由器构造自己的L-S(Link-State,链路状态)信息包,L-S信息的内容包括本路由器的标号、本路由器的邻居路由器列表、本路由器到各邻居路由器的链路状态(时延或成本)、该L-S信息包的序号和生存时间等。
  (4)各路由器向所有参与链路状态交互的路由器广播其L-S信息,可以是周期性地发送,也可在链路状态发生变化时发送。
  (5)每个路由器在收到所有的L-S信息后,可以构造或更新表示整个网络拓扑结构的图G(V,E),顶点V表示路由器,边E表示连接路由器的链路;这时路由器就可以用Dijkstra算法从图G中计算出到所有目的路由器的最短路径,也就是构造以自己为根节点的SPF树。
  链路状态路由协议OSPF用到的算法为Dijkstra, 主要原理如下:
  设目的节点(就构造SPF树而言,是根节点)为k,任一条链路(i,j)的长度为dij,每个节点到k的最短路径长度估计为Dik;定义所有节点的集合为A,定义集合P∈A,并设定集合的初始值为P={k}。
  在算法迭代的过程中,如果Dik已经变成一个确定值,则将i标记为固定点,并将其加入集合P。在算法的每一步迭代中,在P以外的节点中,选择与目的节点k最近的节点加入到P中。

与传统的二层交换机相比,三层交换机增加了路由功能,可以理解为具有路由功能的交换机

三层交换机可以根据其处理数据的不同而分为纯硬件和纯软件两大类。

(1)纯硬件的三层技术相对来说技术复杂,成本高,但是速度快,性能好,带负载能力强。其原理是,采用ASIC芯片,采用硬件的方式进行路由表的查找和刷新。

当数据由端口接口芯片接收进来以后,首先在二层交换芯片中查找相应的目的MAC地址,如果查到,就进行二层转发,否则将数据送至三层引擎。在三层引擎中,ASIC芯片查找相应的路由表信息,与数据的目的IP地址相比对,然后发送ARP数据包到目的主机,得到该主机的MAC地址,将MAC地址发到二层芯片,由二层芯片转发该数据包

(2)基于软件三层交换机技术较简单,但速度较慢,不适合作为主干。其原理是,采用CPU用软件的方式查找路由表

当数据由端口接口芯片接收进来以后,首先在二层交换芯片中查找相应的目的MAC地址,如果查到,就进行二层转发否则将数据送至CPU。CPU查找相应的路由表信息,与数据的目的IP地址相比对,然后发送ARP数据包到目的主机得到该主机的MAC地址,将MAC地址发到二层芯片,由二层芯片转发该数据包。因为低价CPU处理速度较慢,因此这种三层交换机处理速度较慢。

   二层交换机的二层数据交换一般都是使用ASIC(专用集成电路)的硬件芯片中的Mac表来实现的,因为是硬件转发,所以转发性能非常高。而三层交换机,但其中除了二层交换用的Mac表外,还保存有专门用于三层转发的三层硬件转发表。

图所示的为三层交换机的基本工作流程,主要步骤解释如下:

   (1)源主机在发起通信之前,将自己的IP地址与目的主机的IP地址进行比较,如果源主机判断目的主机与自己位于不同网段时,它需要通过网关来递交报文的(如果在同一网段,则直接二层转发就可以了),所以它首先需要通过一个ARP请求报文获取网关的MAC地址(在源主机不知道网关MAC地址的情形下),即源主机先发送ARP请求帧以获取网关IP地址对应的MAC地址。

   (2)网关在收到源主机发来的ARP请求报文后以一个ARP应答报文进行回应,在应答报文中的“源MAC地址”就包含了网关的MAC地址。

   (3)在得到网关的ARP应答后,源主机再用网关MAC地址作为报文的“目的MAC地址”,以源主机的IP地址作为报文的“源IP地址”,以目的主机的IP地址作为“目的IP地址”,先把发送给目的主机的数据发给网关。


三层交换基本流程图解

    (4)网关在收到源主机发送给目的主机的数据后,由于查看得知源主机和目的主机的IP地址不在同一网段,于是把数据报上传到三层交换引擎(ASIC芯片),在里面查看有无目的主机的三层转发表。

    (5)如果在三层硬件转发表中没有找到目的主机的对应表项,则向CPU请求查看软件路由表,如果有目的主机所在网段的路由表项,则还需要得到目的主机的MAC地址,因为数据包在链路层是要经过帧封装的。于是三层交换机CPU向目的主机所在网段发送一个ARP广播请求包,以获得目的主机MAC地址。

    (6)交换机获得目的主机MAC地址后,向ARP表中添加对应的表项,并转发由源主机到达目的主机的包。同时三层交换机三层引擎会结合路由表生成目的主机的三层硬件转发表。

     以后到达目的主机的数据包就可以直接利用三层硬件转发表中的转发表项进行数据交换,不用再查看CPU中的路由表了。这就是“一次路由,多次交换”的原理。  

 也谈子网划分和子网通信

子网划分和子网通信在小型网络中应用不多,但随着公司规模的扩大,这样的问题就会提上网管的工作计划。资料略加整理,希望对各位有帮助。


也谈子网划分和子网通信

1.网络IP地址和子网掩码的分类:

A类:IP: 0.0.0.0 -127.255.255.255.255 子网掩码:255.0.0.0 或者标注为/8 (8个1)
B类:IP: 128.0.0.0 - 191.255.255.255 子网掩码:255.255.0.0 或者标注为/16 (16个1)
C类:IP: 192.0.0.0 - 1223.255.255.255 子网掩码:255.255.255.0 或者标注为/24 (24个1)

2.确定可用资源和需求
a> 拥有的IP资源或者说网络号(网段),例:129.250.0.0/16 。
b> 需要分多少个ip出来?例:4000台pc
c> 需要划分几个子网? 例: 需要5个子网

3.子网掩码的换算
a>借位换算(2n表示2的n次方,n表示借位数):
此算法需要知道划分几个子网!!!
2n-2>=需要划分子网数 例:2n-2=5 结果 n=3
所以需要借3为子网掩码:
原来子网掩码为:255.255.0.0 = 11111111.11111111.00000000.00000000
划分后的子网掩码为:255.255.224.0 =11111111.11111111.11100000.00000000
确定下子网的掩码为:255.255.224.0
子网ip范围确定:255-224=31
所以:子网A用:129.250.0.1 - 125.250.31.254 (129.250.0.0和129.250.31.255不用)
子网B用:129.250.32.1 - 125.250.63.254 
子网C用:129.250.64.1 - 125.250.95.254 
子网D用:129.250.96.1 - 125.250.127.254 
子网E用:129.250.128.1 - 125.250.159.254

b> 抛位算法(即算出子网掩码下一位的0的个数,n表示0的个数):
此算法需要知道每个子网的ip数!!!
2n-2>=需要子网的ip个数/255 
例:一个B类子网的每个子网主机数要达到60×255个(约相当于X.Y.0.1~X.Y.59.254的数量),求子网掩码。
说明:B类的子网掩码为:11111111.11111111.00000000.00000000

2n-2>=60 求的 n=6 所有子网中的子网掩码的下一位有6个0 即2个1 
所以子网的子网掩码的子网掩码为:11111111.11111111.11000000.00000000 = 255.255.192.0
求出子网掩码后就可推算出 每个子网的ip范围。


4.不同子网间的通信
不同子网之间的通信直接通过2层交换机是不可以,2层交换机只有包转发功能,没有路由功能,要实现不同子网之间的通信就是要用到我们
常说的带路由功能的交换机,也就是3层交换机,也叫路由交换机。或者直接使用路由器。

也可以采用代理的方法:在一台装有双网卡的Windows Server 2003服务器中启用了RRAS,并从两个子网IP地址范围中分别取出一个IP地址 (如“子网A”的IP地址“192.168.0.33”和“子网B”的IP地“192.168.0.65”)与两块网卡分别绑定。将“子网A”中所有的客户机指定网 关为“192.168.0.33”,而将“子网B”中所有的客户机指定网关为“192.168.0.65”。现在,两个子网不仅可以互访,并且可以有效减轻整个 网络的负担,网络利用率大大提高。  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值