Cisco路由技术基础知识详解之一

Cisco路由技术基础知识详解

  路由器 <一>

  最简单的网络可以想象成单线的总线,各个计算机可以通过向总线发送分组以互相通信。但随着网络中的计算机数目增长,这就很不可行了,会产 生许多问题:

1、带宽资源耗尽。
    2、每台计算机都浪费许多时间处理无关的广播数据。
    3、网络变得无法管理,任何错误都可能导致整个网络瘫痪。
    4、每台计算机都可以监听到其他计算机的通信。

  把网络分段可以解决这些问题,但同时你必须提供一种机制使不同网段的计算机可以互相通信,这通常涉及到在一些ISO网络协议层选择性地在网段间传送数据,我们来看一下网络协议层和路由器的位置。

  我们可以看到,路由器位于网络层。本文假定网络层协议为IPv4,因为这是最流行的协议,其中涉及的概念与其他网络层协议是类似的。

一、路由与桥接

  路由相对于2层的桥接/交换是高层的概念,不涉及网络的物理细节。在可路由的网络中,每台主机都有同样的网络层地址格式(如IP地址),而无论它是运行在以太网、令牌环、FDDI还是广域网。网络层地址通常由两部分构成:网络地址和主机地址。

  网桥只能连接数据链路层相同(或类似)的网络,路由器则不同,它可以连接任意两种网络,只要主机使用的是相同的网络层协议。

  路由器 <二>

二、连接网络层与数据链路层

  网络层下面是数据链路层,为了它们可以互通,需要“粘合”协议。ARP(地址解析协议)用于把网络层(3层)地址映射到数据链路层(2层)地址,RARP(反向地址解析协议)则反之。

  虽然ARP的定义与网络层协议无关,但它通常用于解析IP地址;最常见的数据链路层是以太网。因此下面的ARP和RARP的例子基于IP和以太网,但要注意这些概念对其他协议也是一样的。

1、地址解析协议

  网络层地址是由网络管理员定义的抽象映射,它不去关心下层是哪种数据链路层协议。然而,网络接口只能根据2层地址来互相通信,2层地址通过ARP从3层地址得到。

  并不是发送每个数据包都需要进行ARP请求,回应被缓存在本地的ARP表中,这样就减少了网络中的ARP包。ARP的维护比较容易,是一个比较简单的协议。

2、简介

  如果接口A想给接口B发送数据,并且A只知道B的IP地址,它必须首先查找B的物理地址,它发送一个含有B的IP地址的ARP广播请求B的物理地址,接口B收到该广播后,向A回应其物理地址。

  注意,虽然所有接口都收到了信息,但只有B回应该请求,这保证了回应的正确且避免了过期的信息。要注意的是,当A和B不在同一网段时,A只向下一跳的路由器发送ARP请求,而不是直接向B发送。 接收到ARP分组后处理,注意发送者的对被存到接收ARP请求的主机的本地ARP表中,一般A想与B通信时,B可能也需要与A通信。

3、IP地址冲突

  ARP产生的问题中最常见的是IP地址的冲突,这是由于两个不同的主机IP地址相同产生的,在任何互联的网络中,IP地址必须是唯一的。这时会收到两个ARP回应,分别指出了不同的硬件地址,这是严重的错误,没有简单的解决办法。

  为了避免出现这类错误,当接口A初试化时,它发送一个含有其IP地址的ARP请求,如果没有收到回应,A就假定该IP地址没有被使用。我们假定接口B已经使用了该IP地址,那么B就发送一个ARP回应,A就可以知道该IP地址已被使用,它就不能再使用该IP地址,而是返回错误信息。这样又产生一个问题,假设主机C含有该IP地址的映射,是映射到B的硬件地址的,它收到接口A的ARP广播后,更新其ARP表使之指向A的硬件地址。为了解决这个错误,B再次发送一个ARP请求广播,这样主机C又更新其ARP表再次指向B的硬件地址。这时网络的状态又回到先前的状态,有可能C已经向A发送了应该发送给B的IP分组,这很不幸,但是因为IP提供的是无保证的传输,所以不会产生大的问题。

4、管理ARP缓存表

  ARP缓存表是对的列表,根据IP地址索引。该表可以用命令arp来管理,其语法包括:

向表中添加静态表项 -- arp -s

从表中删除表项 -- arp -d

显示表项 -- arp -a

  ARP表中的动态表项(没有手动加入的表项)通常过一段时间自动删除,这段时间的长度由特定的TCP/IP实现决定。

5、静态ARP地址的使用

  静态ARP地址的典型使用是设置独立的打印服务器,这些设备通常通过telnet来配置,但首先它们需要一个IP地址。没有明显的方法来把此信息告诉该设备,好象只能使用其串口来设置。但是,这需要找一个合适的终端和串行电缆,设置波特率、奇偶校验等,很不方便。

  假设我们想给一个打印服务器设置IP地址P-IP,并且我们知道其硬件地址P-hard,在工作站A上创建一个静态ARP表项把P-IP映射到P-hard,这样,虽然打印服务器不知道自己的IP地址,但是所有指向P-IP的数据就将被送到P-hard。我们现在就可以telnet到P-IP并配置其IP地址了,然后再删除该静态ARP表项。

  有时会在一个子网里配置打印服务器,而在另一个子网里使用它,方法与上面类似。假设其IP地址为P-IP,我们分配一个本网的临时IP地址T-IP给它,在工作站A上创建临时ARP表项把T-IP映射到P-hard,然后telnet到T-IP,给打印服务器配以IP地址P-IP。接下来就可以把它放到另一个子网里使用了,别忘了删除静态ARP表项。

6、代理ARP

  可以通过使用代理ARP来避免在每台主机上配置路由表,在使用子网时这特别有用,但注意,不是所有的主机都能理解子网的。基本的思想是即使对于不在本子网的主机也发送ARP请求,ARP代理服务器(通常是网关)回应以网关的硬件地址。

  代理ARP简化了主机的管理,但是增加了网络的通信量(不是很明显),并且可能需要较大的ARP缓存,每个不在本网的IP地址都被创建一个表项,都映射到网关的硬件地址。在使用代理ARP的主机看来,世界就象一个大的没有路由器物理网络。

文章录入:aaadxmmm    责任编辑:aaadxmmm

(0)

相关推荐

  • Cisco路由技术基础知识详解之一

    Cisco路由技术基础知识详解 路由器 <一> 最简单的网络可以想象成单线的总线,各个计算机可以通过向总线发送分组以互相通信.但随着网络中的计算机数目增长,这就很不可行了,会产 生许多问题: 1.带宽资源耗尽.     2.每台计算机都浪费许多时间处理无关的广播数据.     3.网络变得无法管理,任何错误都可能导致整个网络瘫痪.     4.每台计算机都可以监听到其他计算机的通信. 把网络分段可以解决这些问题,但同时你必须提供一种机制使不同网段的计算机可以互相通信,这通常涉及到在一些ISO网

  • Cisco路由技术基础知识详解

    Cisco路由技术基础知识详解 路由器 <一> 最简单的网络可以想象成单线的总线,各个计算机可以通过向总线发送分组以互相通信.但随着网络中的计算机数目增长,这就很不可行了,会产 生许多问题: 1.带宽资源耗尽.     2.每台计算机都浪费许多时间处理无关的广播数据.     3.网络变得无法管理,任何错误都可能导致整个网络瘫痪.     4.每台计算机都可以监听到其他计算机的通信. 把网络分段可以解决这些问题,但同时你必须提供一种机制使不同网段的计算机可以互相通信,这通常涉及到在一些ISO网

  • Cisco路由技术基础知识详解之三

    路由器 <四> 四.路由 1.路由表 如果一个主机有多个网络接口,当向一个特定的IP地址发送分组时,它怎样决定使用哪个接口呢?答案就在路由表中.来看下面的例子: 目的 子网掩码 网关 标志 接口 201.66.37.0 255.255.255.0 201.66.37.74 U eth0 201.66.39.0 255.255.255.0 201.66.39.21 U eth1 主机将所有目的地为网络201.66.37.0内主机(201.66.37.1-201.66.37.254)的数据通过接口

  • Cisco路由技术基础知识详解之二

    路由器 <三> 三.IP地址 在可路由的网络层协议中,协议地址必须含有两部分信息:网络地址和主机地址.存贮这种信息最明显的方法是用两个分离的域,这样我们必须考虑到两个域的最大长度,有些协议(如IPX)就是这样的,它在小型和中型的网络里可以工作的很好. 另一种方案是减少主机地址域的长度,如24位网络地址.8位主机地址,这样就有了较多的网段,但每个网段内的主机数目很少.这样一来,对于多于256个主机的网络,就必须分配多个网段,其问题是很多的网络给路由器造成了难以忍受的负担. IP把网络地址和主机地

  • C语言入门之基础知识详解

    一.思维导图 内容不限于此思维导图 二.环境搭建 对于老手,自动跳过这一趴吧,或者也可以看一下我有没有啥纰漏,毕竟小白需要这一趴. 编译器很多,大部分老师会在学生学习C语言的时候推荐使用VC,不带语言提示器的那种,说是可以提高学生的编码能力.我也不知道到底是不是这么一回事儿.我推荐使用VS,这样学的快,函数记不住的问题很严重吗?项目的车轮碾压过去,再记不住也得记住吧!!! 更何况这个系列到后面是会有需要用文本文件编程写项目的阶段. 下载VS2019社区版,不要标新立异选那些最新版的,出了问题到时

  • Kotlin标准函数与静态方法基础知识详解

    目录 标准函数with与run和apply with函数 with函数 run函数 apply函数 定义静态方法 标准函数with与run和apply with函数 with函数 接收两个参数:第一个参数可以是任意类型的对象,第二个参数是一个Lambda表达式.with函数会在Lambda表达式中提供第一个参数对象的上下文,并使用Lambda表达式中的最后一行代码作为返回值返回. 示例代码如下: val result=with(obj){ //这里是obj的上下文 "value"//w

  • java二维数组基础知识详解

    目录 1. 查找 2. 顺序查找 3. 二分查找 4. 多维数组 4.1 二维数组 175 4.2 二维数组细节 5. 二维数组的使用方式 176 6. 二维数组的动态初始化 1.先声明:类型 数组名[][]; 再定义(开辟空间) 数组名 = new 类型[大小][大小] 2.动态初始化-列数不确定 178 7. 二维数组的静态初始化 179 8. 二维数组练习 180 8.1 int arr[][]={{4,6},{1,4,5,7},{-2}}; 遍历该二维数组,并得到和 1. 查找 1) 顺

  • .Net Core 3.1 Web API基础知识详解(收藏)

    目录 一.前言 二.Swagger调试Web API 三.配置文件 四.文件上传 五.统一WebApi数据返回格式 六.模型验证 七.日志使用 八.依赖注入 九.缓存 十.异常处理 十一.应用安全与JWT认证 十二.跨域 一.前言 随着近几年前后端分离.微服务等模式的兴起,.Net Core也似有如火如荼之势 ,自16年发布第一个版本到19年底的3.1 LTS版本,以及将发布的.NET 5,.NET Core一路更迭,在部署和开发工具上也都支持了跨平台应用.一直对.Net Core有所关注,但未

  • Android RecyclerView 基础知识详解

    本周的谷歌I/O大会带来了很多关于Android的振奋人心的消息.可能我们需要较长的时间来消化Android L引入的新东西. 这些天我一直在研究RecyclerView,并想在此给各位分享一下到目前为止我的成果. RecyclerView是什么? RecyclerView是一种新的视图组,目标是为任何基于适配器的视图提供相似的渲染方式.它被作为ListView和GridView控件的继承者,在最新的support-V7版本中提供支持. 在开发RecyclerView时充分考虑了扩展性,因此用它

  • ADO.NET基础知识详解

    ADO.NET是微软提供的一种数据库访问技术. ADO.NET为不同类型的数据源提供了不同的数据提供程序对象: 数据提供程序 说明 SQL Server 数据提供程序 提供对Microsoft SQL Server中数据的访问,使用System.Data.SqlClient命名空间. OLE 数据提供程序 提供对使用OLE DB公开的数据源(如Access.Excel等)中数据的访问,使用System.Data.oleDb命名空间. ODBC 数据提供程序 提供对使用ODBC公开的数据源中数据的

随机推荐