路由 订阅
路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程 [1]  。路由工作在OSI参考模型第三层——网络层的数据包转发设备。路由器通过转发数据包来实现网络互连。虽然路由器可以支持多种协议(如TCP/IP、IPX/SPX、AppleTalk等协议),但是在我国绝大多数路由器运行TCP/IP协议。路由器通常连接两个或多个由IP子网或点到点协议标识的逻辑端口,至少拥有1个物理端口。路由器根据收到数据包中的网络层地址以及路由器内部维护的路由表决定输出端口以及下一跳地址,并且重写链路层数据包头实现转发数据包。路由器通过动态维护路由表来反映当前的网络拓扑,并通过网络上其他路由器交换路由和链路信息来维护路由表。 展开全文
路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程 [1]  。路由工作在OSI参考模型第三层——网络层的数据包转发设备。路由器通过转发数据包来实现网络互连。虽然路由器可以支持多种协议(如TCP/IP、IPX/SPX、AppleTalk等协议),但是在我国绝大多数路由器运行TCP/IP协议。路由器通常连接两个或多个由IP子网或点到点协议标识的逻辑端口,至少拥有1个物理端口。路由器根据收到数据包中的网络层地址以及路由器内部维护的路由表决定输出端口以及下一跳地址,并且重写链路层数据包头实现转发数据包。路由器通过动态维护路由表来反映当前的网络拓扑,并通过网络上其他路由器交换路由和链路信息来维护路由表。
信息
外文名
routing
概    念
工程术语
特    点
高效简单
中文名
路由
原理算法
确定最佳路径
路由概念
1、路由是指路由器从一个接口上收到数据包,根据数据 包的目的地址进行定向并转发到另一个接口的过程。路由通常与桥接来对比,在粗心的人看来,它们似乎完成的是同样的事。它们的主要区别在于桥接发生在OSI参考模型的第二层(数据链路层),而路由发生在第三层(网络层)。这一区别使二者在传递信息的过程中使用不同的信息,从而以不同的方式来完成其任务。路由的话题早已在计算机界出现,但直到八十年代中期才获得商业成功。究其主要原因是七十年代的网络普遍很简单,发展到后来大型的网络才较为普遍。2、工程术语。指道路情况,包括道路宽度、深度、方向等信息。
收起全文
精华内容
下载资源
问答
  • 静态路由及默认路由——基本配置

    万次阅读 多人点赞 2019-05-11 11:51:22
    静态路由:是指用户或网络管理员手工配置的路由信息。当网络拓扑结构或链路状态发生改变时,需要网络管理员手工配置静态路由信息。 相比较动态路由协议,静态路由无需频繁的交换各自的路由表,配置简单,比较适合...

    原理简述:

    1。静态路由:是指用户或网络管理员手工配置的路由信息。当网络拓扑结构或链路状态发生改变时,需要网络管理员手工配置静态路由信息。

    相比较动态路由协议,静态路由无需频繁的交换各自的路由表,配置简单,比较适合小型、简单的网络环境。不适合大型和复杂的网络环境的原因是:当网络拓扑结构和链路状态发生改变时,网络管理员需要做大量的调整,工作量繁重,而且无法感知错误发生,不易排错。

    2。默认路由:是一种特殊的静态路由,当路由表中与数据包目的地址没有匹配的表项时,数据包将根据默认路由条目进行转发。默认路由在某些时候是非常有效的,例如在末梢网络中,默认路由可以大大简化路由器的配置,减轻网络管理员的工作负担。

    实验目的:

    (1)掌握静态路由(指定接口)的配置方法;

    (2)掌握静态路由(指定下一跳IP地址)的配置方法;

    (3)掌握静态路由连通性的测试方法;

    (4)掌握默认路由的配置方法;

    (5)掌握默认路由的测试方法;

    (6)掌握在简单网络中部署静态路由时的故障排除方法;

    (7)掌握简单的网络优化方法;

    实验内容:

    在三台路由器所组成的简单网络中,R1和R3各自连接着一个主机,现在要求通过配置基本的静态路由和默认路由来实现主机PC-1与PC-2之间的正常通信。

    实验拓扑:

    实验实现步骤:

    1。基础配置

    根据实验的要求进行相应的配置,使用ping命令检测各直连链路的连通性。

    在各直连链路间的IP连通性测试完之后,可以尝试在主机1上直接ping主机2。

    ???问题:为什么两个主机之间无法正常通信,是什么原因导致的?

    若假设主机1和主机2之间可以正常的通信,即可以正常的连通,则主机1将发送数据给其网关设备R1;而R1在收到其数据之后,根据数据包中的目的地址查看自己的路由表,找到相应的目的网络的所在的路由条目,并根据该条目中的下一跳和出接口信息将该数据转发给下一个路由器R2;同时R2采用相同的方式将数据转发给R3,最后R3页同样的将数据转发给与自己直接相连的主机2;主机2在收到数据后,与主机1发送数据到主机2的过程一样,再发送相应的回应信息给主机1。

    现在查看主机1与其网关设备R1间的连通性的状态:

    可以看出主机与网关之间的连通性正常,接下来检查网关设备与R1上的路由表:使用 display ip routing-table 命令。

    通过路由表上显示的信息,可以看到路由表上没有关于主机2所在网段的信息,同样可以使用相同的方法查看路由器R2和R3上的路由表信息。

    经过查看,可以看到:在路由器R2上没有关于主机1和主机2所在网段的信息,R3上没有关于主机1所在网段的信息。

    所以,以上的步骤验证了:在初始情况下各路由器的路由表上仅包含了与自己本身直接相连的网络的路由信息。

    因为现在的主机1和主机2之间跨越了若干个不同的网段,若要实现两者之间的通信,通过简单的IP地址等基础配置是不能实现的,需要在3台路由器上添加相应的路由信息,可以通过配置静态路由的方法来实现。

    2。实现主机1和主机2之间的通信:

    现在,在R1上配置目的网段为主机2所在网段的静态路由,即目的IP地址为192.168.20.0,掩码为255.255.255.0。相对应R1来讲,倘若要发送数据到主机2,则必须先发送给R2,所以R1的下一跳路由器是R2,R2与R1所在的直连链路上的物理端口S1/0/1接口 的IP地址即为下一跳IP地址,即10.0.12.2。

    [R1]ip route-static 192.168.20.0 255.255.255.0 10.0.12.2

    配置之后,查看R1的路由表:

    可以看出在路由器R1上已存在主机2所在网段的路由信息。

    接下来,采取同样的方式在R2上配置目的网段为主机2所在网段的静态路由,配置过后,查看其路由表。

    [R2]ip route-static 192.168.20.0 255.255.255.0 10.0.23.3
    
    [R2]dis ip routing-table 
    Route Flags: R - relay, D - download to fib
    ------------------------------------------------------------------------------
    Routing Tables: Public
             Destinations : 13       Routes : 13       
    
    Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface
    
          10.0.12.0/24  Direct  0    0           D   10.0.12.2       Serial1/0/1
          10.0.12.1/32  Direct  0    0           D   10.0.12.1       Serial1/0/1
          10.0.12.2/32  Direct  0    0           D   127.0.0.1       Serial1/0/1
        10.0.12.255/32  Direct  0    0           D   127.0.0.1       Serial1/0/1
          10.0.23.0/24  Direct  0    0           D   10.0.23.2       Serial1/0/0
          10.0.23.2/32  Direct  0    0           D   127.0.0.1       Serial1/0/0
          10.0.23.3/32  Direct  0    0           D   10.0.23.3       Serial1/0/0
        10.0.23.255/32  Direct  0    0           D   127.0.0.1       Serial1/0/0
          127.0.0.0/8   Direct  0    0           D   127.0.0.1       InLoopBack0
          127.0.0.1/32  Direct  0    0           D   127.0.0.1       InLoopBack0
    127.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
       192.168.20.0/24  Static  60   0          RD   10.0.23.3       Serial1/0/0  //已存在
    255.255.255.255/32  Direct  0    0           D   127.0.0.1       InLoopBack0
    

    此时,用主机1ping主机2,观察现象:

    发现,两台主机之间仍然无法正常互通。在主机1上的E0/0/1接口上进行数据抓包,观察现象:

    可以看到:此时主机1只发送了ICMP请求消息,而且也并没有得到任何的回应消息。

    原因:现在仅是实现主机1能够通过路由器将数据正常的转发给主机2,而主机2并没有实现,仍然是无法发送数据给主机1的。

    现在需要在R2和R3上的路由表中添加主机1所在网段的信息:

    在R3上配置目的网段为主机1所在网段的静态路由,目的IP地址为192.168.10.0,目的地址的掩码除了采用点分十进制的格式表示之外,还可以采用直接使用掩码长度的方式表示,即用24来表示相对应R3来讲,要发送数据到主机1上,首先发送给路由器R2,所以R3和R2所在直连链路上的物理接口S1/0/0即为数据转发口,也称为出接口,在配置中指定该接口即可。

    [R3]ip route-static 192.168.10.0 24 s1/0/1  //配置目的网段为主机1所在网段的静态路由
    
    [R2]ip route-static 192.168.10.0 24 s1/0/1  
    
    

    配置过后,查看各路由器的路由表信息:

    经过路由表的查看,你会看到每台路由器上都拥有了主机1和主机2所在网段的路由信息。再次在主机1上ping主机2,观察现象。

    3。实现全网全通来增强网络的可靠性

    按照上面的操作,现在已实现主机1和主机2之间的互通。若假设现在的网络出现了故障,主机1一侧的网络管理员发现无法正常的与主机2通信,于是先测试与网关设备R1和R3的连通性。

    可以看到:主机1无法与主机2的网关设备R3正常通信,所以此时网络管理员无法通过主机1登录到R3上进一步排查故障。

    现在的解决方法是:在R1的路由表中添加R2与R3间直连网段的路由信息,同样也在R3的路由表上添加R1与R2之间的直连链路的路由信息,已至实现全网的互通。

    配置之后,查看各路由器的路由表信息,查看内容;再由主机1ping主机2的网关设备R3。

    测试成功,主机1可以与R3正常通信,同样的主机2此时也可以与R1正常通信。

    4。使用默认路由实现简单的网络优化

    通过适当减少设备上的配置工作量,能够帮助网络管理员在进行故障排除时更轻松的排除故障,且相对较少的配置量也能减少在配置时出错的可能,另一方面,也能够相对减少对设备本身硬件的负担。

    现在,在R1上配置一条默认路由,即目的网段和掩码都是0,表示任何网络,下一跳为10.0.12.2,并删除先前配置的两条静态路由。

    [R1]ip route-static 0.0.0.0 0 10.0.12.2  //配置默认路由
    [R1]undo ip route-static 10.0.23.3 24 10.0.12.2   //删除静态路由
    [R1]undo ip route-static 192.168.20.0 24 10.0.12.2
    
    

    再次测试主机1与主机2之间的通信。

    该通信是正常的,证明了使用默认路由不但能够实现与静态路由同样的效果,还能减少配置量。同时在R3上也做相应的配置。

    [R3]ip route-static 0.0.0.0 0 s1/0/1  //配置默认路由
    [R3]undo ip route-static 10.0.12.0 24 s1/0/1
    [R3]undo ip route-static 192.168.10.0 24 10.0.23.2
    

    再次测试主机1与主机2之间的通信。

    可以看到主机1与主机2之间的通信正常。

    强调:在配置过程中,顺序是先配置默认路由,再删除原有的静态路由配置,这样的操作可以避免网络出现通信中断,即要在配置过程中注意操作的规范性和合理性。

    ???思考:在静态路由配置当中,可以采取指定下一跳IP地址的方式,也可以采取指定出接口的方式,这两种方式存在着什么区别?

    答:(1)在路由查找上:指定下一跳,会多进行一次路由的递归查找,拿下一跳去进行递归,得出出接口。

    (2)二层地址解析:指定下一跳使用最后一次递归的下一跳IP地址去解析下一跳二层地址。如果指定出接口的路由,数据包匹配到后直接用目的地址去解析下一跳地址。

     

     

    展开全文
  • gateway配置路由主要有两种方式,一种是用yml配置文件,一种是写代码里,这两种方式都是不支持动态配置的。如: 下面就来看看gateway是如何加载这些配置信息的。 1 路由初始化 无论是yml还是代码,这些配置最终...

    gateway配置路由主要有两种方式,一种是用yml配置文件,一种是写代码里,这两种方式都是不支持动态配置的。如:

    下面就来看看gateway是如何加载这些配置信息的。

    1 路由初始化

    无论是yml还是代码,这些配置最终都是被封装到RouteDefinition对象中。

    一个RouteDefinition有个唯一的ID,如果不指定,就默认是UUID,多个RouteDefinition组成了gateway的路由系统。

    所有路由信息在系统启动时就被加载装配好了,并存到了内存里。我们从源码来看看。

    圆圈里就是装配yml文件的,它返回的是PropertiesRouteDefinitionLocator,该类继承了RouteDefinitionLocator,RouteDefinitionLocator就是路由的装载器,里面只有一个方法,就是获取路由信息的。该接口有多个实现类,分别对应不同方式配置的路由方式。

    通过这几个实现类,再结合上面的AutoConfiguration里面的Primary信息,就知道加载配置信息的顺序。

    PropertiesRouteDefinitionLocator-->|配置文件加载初始化| CompositeRouteDefinitionLocator
    RouteDefinitionRepository-->|存储器中加载初始化| CompositeRouteDefinitionLocator
    DiscoveryClientRouteDefinitionLocator-->|注册中心加载初始化| CompositeRouteDefinitionLocator

    参考:https://www.jianshu.com/p/b02c7495eb5e

    https://blog.csdn.net/X5fnncxzq4/article/details/80221488

    这是第一顺序,就是从CachingRouteLocator中获取路由信息,我们可以打开该类进行验证。

    不管发起什么请求,必然会走上面的断点处。请求一次,走一次。这是将路由信息缓存到了Map中。配置信息一旦请求过一次,就会被缓存到上图的CachingRouteLocator类中,再次发起请求后,会直接从map中读取。

    如果想动态刷新配置信息,就需要发起一个RefreshRoutesEvent的事件,上图的cache会监听该事件,并重新拉取路由配置信息。

    通过下图,可以看到如果没有RouteDefinitionRepository的实例,则默认用InMemoryRouteDefinitionRepository。而做动态路由的关键就在这里。即通过自定义的RouteDefinitionRepository类,来提供路由配置信息。

    例如:

    在getRouteDefinitions方法返回你自定义的路由配置信息即可。这里可以用数据库、nosql等等任意你喜欢的方式来提供。而且配置信息修改后,发起一次RefreshRoutesEvent事件即可让配置生效。这就是动态配置路由的核心所在,下面来看具体代码实现。

    2 基于数据库、缓存的动态路由

    pom.xml如下

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.maimeng</groupId>
        <artifactId>apigateway</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>apigateway</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.6.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
            <spring-cloud.version>Finchley.SR1</spring-cloud.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-gateway</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-webflux</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.51</version>
            </dependency>
            <!--<dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    
    </project>
    

    注意这里是SR1,经测试SR2有bug,会出问题。

    @Configuration
    public class RedisConfig {
    
        @Bean(name = {"redisTemplate", "stringRedisTemplate"})
        public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory factory) {
            StringRedisTemplate redisTemplate = new StringRedisTemplate();
            redisTemplate.setConnectionFactory(factory);
            return redisTemplate;
        }
    
    }
    

    核心类:

    @Component
    public class RedisRouteDefinitionRepository implements RouteDefinitionRepository {
    
        public static final String GATEWAY_ROUTES = "geteway_routes";
    
        @Resource
        private StringRedisTemplate redisTemplate;
    
        @Override
        public Flux<RouteDefinition> getRouteDefinitions() {
            List<RouteDefinition> routeDefinitions = new ArrayList<>();
            redisTemplate.opsForHash().values(GATEWAY_ROUTES).stream()
                    .forEach(routeDefinition -> routeDefinitions.add(JSON.parseObject(routeDefinition.toString(), RouteDefinition.class)));
            return Flux.fromIterable(routeDefinitions);
        }
    
        @Override
        public Mono<Void> save(Mono<RouteDefinition> route) {
            return null;
        }
    
        @Override
        public Mono<Void> delete(Mono<String> routeId) {
            return null;
        }
    
    }

    主要是在get方法里,此处从redis里获取配置好的Definition。

    然后我们的工作就是将配置信息,放到redis里即可。

    下面就是我模拟的一个配置,等同于在yml里

    spring:
      cloud:
        gateway:
          routes:
          - id: header
            uri: http://localhost:8888/header
            filters:
            - AddRequestHeader=header, addHeader
            - AddRequestParameter=param, addParam
            predicates:
            - Path=/jd
    @Resource
        private StringRedisTemplate redisTemplate;
        @PostConstruct
        public void main() {
            RouteDefinition definition = new RouteDefinition();
            definition.setId("id");
            URI uri = UriComponentsBuilder.fromHttpUrl("http://127.0.0.1:8888/header").build().toUri();
           // URI uri = UriComponentsBuilder.fromHttpUrl("http://baidu.com").build().toUri();
            definition.setUri(uri);
    
            //定义第一个断言
            PredicateDefinition predicate = new PredicateDefinition();
            predicate.setName("Path");
    
            Map<String, String> predicateParams = new HashMap<>(8);
            predicateParams.put("pattern", "/jd");
            predicate.setArgs(predicateParams);
    
            //定义Filter
            FilterDefinition filter = new FilterDefinition();
            filter.setName("AddRequestHeader");
            Map<String, String> filterParams = new HashMap<>(8);
            //该_genkey_前缀是固定的,见org.springframework.cloud.gateway.support.NameUtils类
            filterParams.put("_genkey_0", "header");
            filterParams.put("_genkey_1", "addHeader");
            filter.setArgs(filterParams);
    
            FilterDefinition filter1 = new FilterDefinition();
            filter1.setName("AddRequestParameter");
            Map<String, String> filter1Params = new HashMap<>(8);
            filter1Params.put("_genkey_0", "param");
            filter1Params.put("_genkey_1", "addParam");
            filter1.setArgs(filter1Params);
    
            definition.setFilters(Arrays.asList(filter, filter1));
            definition.setPredicates(Arrays.asList(predicate));
    
            System.out.println("definition:" + JSON.toJSONString(definition));
            redisTemplate.opsForHash().put(GATEWAY_ROUTES, "key", JSON.toJSONString(definition));
        }

    定义好后,将其放到redis里,之后启动项目访问/jd,再启动后台的localhost:8888项目。即可进行验证。

    之后如果要动态修改配置,就可以通过类似于上面的方式,来获取json字符串,然后将字符串放到redis里进行替换。替换后,需要通知gateway主动刷新一下。

    刷新时,可以定义一个controller,然后调用一下notifyChanged()方法,就能完成新配置的替换了。

    3 通过REST接口

    gateway是自带接口能增删改查配置的,这个网上有比较多的教程,随便找个看看就明白了。譬如:

    http://springcloud.cn/view/368

    我发个类作为参考

    package com.maimeng.apigateway.route;
    
    import com.alibaba.fastjson.JSON;
    import org.springframework.cloud.gateway.event.RefreshRoutesEvent;
    import org.springframework.cloud.gateway.filter.FilterDefinition;
    import org.springframework.cloud.gateway.handler.predicate.PredicateDefinition;
    import org.springframework.cloud.gateway.route.RouteDefinition;
    import org.springframework.cloud.gateway.route.RouteDefinitionWriter;
    import org.springframework.context.ApplicationEventPublisher;
    import org.springframework.context.ApplicationEventPublisherAware;
    import org.springframework.data.redis.core.StringRedisTemplate;
    import org.springframework.stereotype.Service;
    import org.springframework.web.util.UriComponentsBuilder;
    import reactor.core.publisher.Mono;
    
    import javax.annotation.PostConstruct;
    import javax.annotation.Resource;
    import java.net.URI;
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.Map;
    
    import static com.maimeng.apigateway.repository.RedisRouteDefinitionRepository.GATEWAY_ROUTES;
    
    /**
     * @author wuweifeng wrote on 2018/10/25.
     */
    @Service
    public class DynamicRouteService implements ApplicationEventPublisherAware {
    
        @Resource
        private RouteDefinitionWriter routeDefinitionWriter;
    
        private ApplicationEventPublisher publisher;
    
        private void notifyChanged() {
            this.publisher.publishEvent(new RefreshRoutesEvent(this));
        }
    
    
        /**
         * 增加路由
         *
         */
        public String add(RouteDefinition definition) {
            routeDefinitionWriter.save(Mono.just(definition)).subscribe();
            notifyChanged();
            return "success";
        }
    
    
        /**
         * 更新路由
         */
        public String update(RouteDefinition definition) {
            try {
                this.routeDefinitionWriter.delete(Mono.just(definition.getId()));
            } catch (Exception e) {
                return "update fail,not find route  routeId: " + definition.getId();
            }
            try {
                routeDefinitionWriter.save(Mono.just(definition)).subscribe();
                notifyChanged();
                return "success";
            } catch (Exception e) {
                return "update route  fail";
            }
    
    
        }
    
        /**
         * 删除路由
         *
         */
        public String delete(String id) {
            try {
                this.routeDefinitionWriter.delete(Mono.just(id)).subscribe();
    
                notifyChanged();
                return "delete success";
            } catch (Exception e) {
                e.printStackTrace();
                return "delete fail";
            }
    
        }
    
        @Override
        public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
            this.publisher = applicationEventPublisher;
        }
    
        @Resource
        private StringRedisTemplate redisTemplate;
        @PostConstruct
        public void main() {
            RouteDefinition definition = new RouteDefinition();
            definition.setId("id");
            URI uri = UriComponentsBuilder.fromHttpUrl("http://127.0.0.1:8888/header").build().toUri();
           // URI uri = UriComponentsBuilder.fromHttpUrl("http://baidu.com").build().toUri();
            definition.setUri(uri);
    
            //定义第一个断言
            PredicateDefinition predicate = new PredicateDefinition();
            predicate.setName("Path");
    
            Map<String, String> predicateParams = new HashMap<>(8);
            predicateParams.put("pattern", "/jd");
            predicate.setArgs(predicateParams);
    
            //定义Filter
            FilterDefinition filter = new FilterDefinition();
            filter.setName("AddRequestHeader");
            Map<String, String> filterParams = new HashMap<>(8);
            //该_genkey_前缀是固定的,见org.springframework.cloud.gateway.support.NameUtils类
            filterParams.put("_genkey_0", "header");
            filterParams.put("_genkey_1", "addHeader");
            filter.setArgs(filterParams);
    
            FilterDefinition filter1 = new FilterDefinition();
            filter1.setName("AddRequestParameter");
            Map<String, String> filter1Params = new HashMap<>(8);
            filter1Params.put("_genkey_0", "param");
            filter1Params.put("_genkey_1", "addParam");
            filter1.setArgs(filter1Params);
    
            definition.setFilters(Arrays.asList(filter, filter1));
            definition.setPredicates(Arrays.asList(predicate));
    
            System.out.println("definition:" + JSON.toJSONString(definition));
            redisTemplate.opsForHash().put(GATEWAY_ROUTES, "key", JSON.toJSONString(definition));
        }
    }
    

     

    展开全文
  • vue-router 多级路由redirect 重定向的问题

    万次阅读 多人点赞 2018-06-27 01:33:32
    在做多级路由的时候遇到很多问题,虽然不难,但是如果没有经验,往往要花一整天时间才能解决(可能我笨),况且网上资料也很少。项目需要是这样的: 登录页面跳到后台页面重定向,登录页是一级路由对应页面登录后:...

          

           在做多级路由的时候遇到很多问题,虽然不难,但是如果没有经验,往往要花一整天时间才能解决(可能我笨),况且网上资料也很少。

    项目需要是这样的:

       登录页面跳到后台页面重定向,登录页是一级路由

    对应页面

    登录后:

    同时重定向二级和三级页面,

     这样登录就会重定向了,此时url

    但又有一个问题:当再次点击底部“堂食”的时候,

    url变成这样,并且三级页面没有出来

    解决办法是:在这个“堂食”按键 添加一个方法

    记住,也只有这样传参才有效

     如果在<router-link>传参,问题多多:如linkActiveClass有问题,再次点击“堂食”,没有传参,三级页面不出现等等

     ================================================

     如果你是新手想学前端可以加我,

    如果你是一个有基础,但学习前端没有明确的方向,可以加我

    如果你刚毕业找到前端的工作,但工作上遇到问题或怕遇到问题解决不了的可以加我

    一对一私人指导/教学(费用很便且):微信:

     

     

    展开全文
  • 策略路由 路由策略 双点双向引入

    万次阅读 多人点赞 2020-07-10 01:33:17
    策略路由 路由策略 双点双向引入 一、策略路由 (一)策略路由–Policy-Based Routing—PBR 1、什么是策略路由: 对特定数据报文不按照路由表内的条目执行转发,根据需要按照某种策略改变数据报文转发路径。 2、...

    锲而不舍,金石可镂。

    策略路由 路由策略 双点双向引入

    一、策略路由

    (一)策略路由–Policy-Based Routing—PBR

    1、什么是策略路由:

    对特定数据报文不按照路由表内的条目执行转发,根据需要按照某种策略改变数据报文转发路径。

    2、运行机制:

    根据的报文的目的地址,报文的源地址,报文的大小和链路质量等属性制定策略路由,改变报文的转发路径。手动配置后基于策略转发,失败后再查找路由表转发。

    3、实现方式:

    华为设备支持3种策略路由:

    本地策略路由

    (1)名称:本地策略路由
    (2)对象:本设备产生流量
    (3)应用:对本机的ICMP,BGP等各种报文需要使用不同的源地址或者不同长度的报文通过不通方式进行发送时。

    接口策略路由

    (1)名称:接口策略路由
    (2)对象:流经本设备的数据
    (3)应用:针对用户不同源目地的数据按照流重定向选择下一跳,不按照路由表转发。

    智能策略路由(SSR)

    (1)名称:智能策略路由
    (2)对象:流经本设备的数据,基于链路质量信息为业务数据流选择最佳链路。
    (3)应用:对用户不同业务选择不同质量的链路。
    (4)注意:SSR的功能需要配合License来使用。

    (二)本地策略路由

    1、配置本地策略路由的匹配规则:

    可以通过ACL匹配到数据或者报文长度来进行对需要策略的数据执行匹配。

    2、配置本地策略路由的转发动作:

    可以通过接口或者下一跳地址发出。

    3、本地应用本地策略路由:

    在系统视图ip lcal policy-based-route X-X-----------调用名称为x-x的本地策略路由。

    (三)接口策略路由

    1、通过ACL匹配需要策略的流量

    2、定义流分类

    需要执行流策略的流量–即哪些流量需要转发
    通过ACL匹配需要策略的流量

    3、制定流行为

    指定需要执行流策略的动作,即如何转发

    4、制定流策略

    将流分类(匹配到需要转发的流量)和流行为(具体需要转发的动作)关联起来

    5、挂接流策略

    接口下在数据的进方向挂接流策略

    策略路由----PBR Policy Based Route—基于策略的路由(选址转发)

    策略路由----针对数据---------接口

    (四)策略路由配置

    1、策略路由指定的出接口要优于指定的下一跳
    2、策略路由指定的下一跳>路由表>策略部署的默认下一跳。

    二、路由策略

    路由策略----RP Route policy

    路由策略-------针对路由条目----路由协议----route policy
    人为的控制或者影响路由协议选路----过滤,cost,引入

    路由三要素----前缀----掩码----下一跳
    动态三要素----前缀----掩码----cost

    路由策略----路由条目

    对象:路由条目
    策略:过滤;修改路由属性

    1、路由匹配工具----抓取路由

    同意路由匹配工具

    ① ACL
    ② IP-preix----前缀列表
    ③ route-policy

    2、 BGP专属路由匹配工具

    ① ip murit-fiete----团体属性过滤列表
    ② ip as-patch-fiter----as路 径属性过滤列表

    3、路由策略工具----执行路由动作

    过滤

    ① route-policy
    ② fiter-policy

    属性修改

    route-policy

    2.1 前缀列表

    注意:由于route-policy不支持匹配Loopback接口,使用前缀列表来匹配loopbackO接口的路由。

    greater-equal X 掩码大约等于X
    less-equal X 掩码小于等于X

    如果只写前缀长度,掩码长度等于前缀长度
    如果只写greater-equal X,会自动补全less-equal 32

    在Route- policy同时调用ACL和ip-prix时,谁最后调用启用谁(ACL与ip-prix是覆盖关系)

    1、匹配任意掩码的路-------0.0.0.0 0 greater-equal x less-equal X
    2、匹配默认路----------------0.0.0.0 0 greater-equal 0 less-equal 0
    3、匹配所以明细路由-------0.0.0.0 0 greater-equal 1
    4、匹配所有的主机路-------0.0.0.0 0 greater-equal 32

    三、拓扑

    在这里插入图片描述

    四、策略配置

    AR-1的环回口loopback1 1.1.1.1/32模拟外部路由

    [AR-1]acl 2010
    [AR-1-acl-basic-2010] rule 5 permit source 1.1.1.1 0
    [AR-1-acl-basic-2010]rule 10 permit source 1.1.1.2 0
    
    [AR-1]route-policy di permit  node 10
    [AR-1-route-policy]if-match acl 2010
    
    [AR-1]ospf 
    [AR-1-ospf-1]import-route direct type 1 route-policy di
    

    4.1 网络互通

    在边界路由器完成双点双向路由引入实现全网互通与冗余备份

    [AR-3]isis 
    [AR-3-isis-1]network-entity 49.0001.0000.0000.0003.00
    [AR-3-isis-1]cost-style wide
    [AR-3-isis-1]quit
    [AR-3]int g0/0/0
    [AR-3-GigabitEthernet0/0/0]isis enable 
    [AR-3-GigabitEthernet0/0/0]int l0
    [AR-3-LoopBack0]isis enable 
    [AR-3-LoopBack0]quit
    [AR-3]ospf 1 router-id 3.3.3.3
    [AR-3-ospf-1]a 0   
    [AR-3-ospf-1-area-0.0.0.0]net 23.1.1.3 0.0.0.0、
    
    [AR-3]ospf 1	
    [AR-3-ospf-1]import-route isis
    [AR-3-ospf-1]isis 	
    [AR-3-isis-1]import-route ospf
    

    dis ip routing-table
    在这里插入图片描述

    4.2 网络优化

    通过路由策略消除存在次优路径与环路问题
    AR4:正常双向引入即可

    [AR-3]isis
    [AR-3-isis-1]undo import-route ospf
    [AR-3-isis-1]ospf 
    [AR-3-ospf-1]undo import-route  isis
    [AR-3-ospf-1]quit
    [AR-3]ospf 
    [AR-3-ospf-1]import-route  isis
    [AR-3-ospf-1]quit
    [AR-3]isis
    [AR-3-isis-1]import-route ospf
    [AR-3-isis-1]quit
    

    次优路径

    tracert 1.1.1.1
    在这里插入图片描述

    [AR-3]ospf 
    [AR-3-ospf-1]import-route  isis 1 type 1
    

    环路

    tracert 1.1.1.1
    在这里插入图片描述
    消除环路

    [AR-4]ip ip-prefix ospf index 10 permit 1.1.1.1 32
    [AR-4]ip ip-prefix ospf index 20 permit 2.2.2.2 32
    [AR-4]ip ip-prefix ospf index 30 permit 3.3.3.3 32
    [AR-4]ip ip-prefix ospf index 40 permit 4.4.4.4 32
    [AR-4]ip ip-prefix ospf index 50 permit 1.1.1.2 32
    
    [AR-4]route-policy ospf-->isis permit node 20
    [AR-4-route-policy]if-match  ip-prefix ospf
    [AR-4-route-policy]apply tag 100
    [AR-4-route-policy]quit
    [AR-4]isis	
    [AR-4-isis-1]import-route ospf 1 route-policy  ospf-->isis 
    [AR-4-isis-1]quit
    
    [AR-3]route-policy isis-->ospf deny node 10 //创建名称为isis-->ospf的路由策略组,此组的节点10执行拒绝路由的过滤动作
    [AR-3-route-policy]if-match tag 100         //此节点过滤带有100 tag标记的路由
    [AR-3-route-policy]quit
    [AR-3]route-policy isis-->ospf permit node 20
    
    [AR-3]ospf
    [AR-3-ospf-1]import-route isis route-policy  isis-->ospf  type 1 
    //在ospf进程中将isis进程1的路由导入,进入OSPF的IS-IS路由需要经过名称为isis-->ospf 的策略过滤 
    

    tracert 1.1.1.1
    在这里插入图片描述
    tracert 1.1.1.1
    在这里插入图片描述

    [AR-3]ip ip-prefix ospf index 10 permit 1.1.1.1 32
    [AR-3]ip ip-prefix ospf index 20 permit 2.2.2.2 32
    [AR-3]ip ip-prefix ospf index 30 permit 3.3.3.3 32
    [AR-3]ip ip-prefix ospf index 40 permit 4.4.4.4 32
    [AR-3]ip ip-prefix ospf index 50 permit 1.1.1.2 32
    
    [AR-3]route-policy ospf-->isis permit node 20
    [AR-3-route-policy]if-match ip-prefix ospf
    [AR-3-route-policy]apply  tag 200
    [AR-3-route-policy]isis
    [AR-3-isis-1]import-route ospf 1 route-policy  ospf-->isis 
    
    [AR-4]route-policy isis-->ospf deny node 8
    [AR-4-route-policy]if-match tag  200
    [AR-4-route-policy]quit
    [AR-4]route-policy isis-->ospf permit node 20
    
    [AR-4-ospf-1]import-route  isis route-policy  isis-->ospf  type 1
    

    tracert 1.1.1.1
    在这里插入图片描述
    tracert 1.1.1.1
    在这里插入图片描述

    [AR-4]route-policy isis-->ospf  permit node 15
    [AR-4-route-policy]apply tag 300
    [AR-4-route-policy]quit
    
    [AR-4]route-policy ospf-->isis  deny node 8
    [AR-4-route-policy]if-match  tag  400
    
    [AR-3]route-policy ospf-->isis  deny node 8
    [AR-3-route-policy]if-match tag  300
    [AR-3-route-policy]quit
    
    [AR-3]route-policy isis-->ospf  permit node 20
    [AR-3-route-policy]apply  tag 400
    

    消除次优

    [AR-4]route-policy isis-->pre permit node 20
    [AR-4-route-policy]if-match  tag  200
    [AR-4-route-policy]apply preference 151
    [AR-4-route-policy]quit
    [AR-4]isis
    [AR-4-isis-1]preference route-policy isis-->pre 15
    
    [AR-3]route-policy isis-->pre permit node 10
    [AR-3-route-policy]if-match tag  100
    [AR-3-route-policy]apply preference 151
    [AR-3-route-policy]isis 	
    [AR-3-isis-1]preference  route-policy  isis-->pre 15
    

    tracert 1.1.1.1
    在这里插入图片描述

    4.3 网络控制

    网络控制(不要修改接口开销)

    ① 修改开销(引入)
    ② 修改优先级(注意匹配策略)
    ③ 修改下一跳权值
    ④ 静态
    ⑤ 过滤

    (1)OSPF网络(AR-4除外)去往6.6.6.1的数据走上行线路:R3---->R5---->R6

    修改开销

    [AR-4]ip ip-prefix 35 permit  35.1.1.0 24
    [AR-4]ip ip-prefix 35 permit  6.6.6.1 32
    
    [AR-4]route-policy isis-->ospf permit  node 14
    [AR-4-route-policy]if-match ip-prefix 35 
    [AR-4-route-policy] apply cost 20 
    [AR-4-route-policy] apply tag 200
    

    在这里插入图片描述
    (2)OSPF网络(AR-3除外)去往6.6.6.2的数据走下行线路:R4---->R5---->R6

    修改优先级

    [AR-2]ip ip-prefix 23 permit 23.1.1.3 32
    [AR-2]ip ip-prefix 62 permit 6.6.6.2 32
    
    [AR-2]route-policy pre permit node 10
    [AR-2-route-policy]if-match ip-prefix 62
    [AR-2-route-policy]if-match  ip next-hop  ip-prefix 23
    [AR-2-route-policy]apply  preference 130
    [AR-2-route-policy]quit
    
    [AR-2]ospf	
    [AR-2-ospf-1]preference ase route-policy  pre
    

    dis ip routing-table
    在这里插入图片描述
    (3)IS-IS网络(AR-3除外)去往1.1.1.2的数据走下行线路: R4---->R2---->R1

    在AR-3上配置:增加1.1.1.2的开销值

    [AR-3]ip ip-prefix 452 permit 1.1.1.2 32
    [AR-3]route-policy ospf-->isis permit node 16
    	
    [AR-3-route-policy]if-match ip-prefix 452
    [AR-3-route-policy]apply tag 100
    [AR-3-route-policy]apply cost 200
    [AR-3-route-policy]quit
    
    [AR-3]route-policy ospf-->isis  permit  node 22
    [AR-3-route-policy]apply tag 100
    

    dis ip routing-table
    在这里插入图片描述
    (4)IS-IS网络(AR-4除外)去往1.1.1.1的数据走上行线路: R3---->R2---->R1

    策略路由----指定数据转发----不查看路由表

    ① 匹配数据
    acl

    ② 制定流分类
    traffic classifier

    ③ 制定流行为
    traffic behavior

    ④ 策略的组合
    traffic policy 数据与策略的组合

    ⑤ 挂接流策略
    在数据的进站方向挂接

    用策略路由写

    [AR-5]acl 3010
    [AR-5-acl-adv-3010]rule 10 permit ip source any destination 1.1.1.1 0  //匹配内网去往1.1.1.1的流量
    [AR-5-acl-adv-3010]quit
     
    [AR-5]traffic classifier host           //创建名称为host的流分类(这里匹配的到的数据将执行流动作)
    [AR-5-classifier-host]if-match acl 3010 //通过acl3010获得流量需要执行流分类	
    [AR-5-classifier-host]quit
    
    [AR-5]traffic behavior host                       //创建名称为host的流行为
    [AR-5-behavior-host]redirect ip-nexthop 35.1.1.3  //这个流行为匹配到的流量执行下一跳重定向动作
    [AR-5-behavior-host]quit
    
    [AR-5]traffic policy host                              //创建名称为host的流策略
    [AR-5-trafficpolicy-host]classifier host behavior host //将名称为host流分类匹配到数据和名称为host的流行为结合
    [AR-5-trafficpolicy-host]quit
    
    [AR-5]int g0/0/2  
    [AR-5-GigabitEthernet0/0/2]traffic-policy host  inbound
    //将名称为cl的流策略挂接到此接口的入方向,进入此接口被匹配到数据将安装流策略的规定动作转发,没有匹配到数据按照路由表正常转发
    

    策略优先级高于路由表优先级

    tracert 1.1.1.1
    在这里插入图片描述

    在这里插入图片描述

    本人所有文章都受版权保护,著作权归艺博东所有!未经授权,转载必究或附上其原创链接。

    展开全文
  • Zull路由网关---SpringCloud

    万次阅读 2021-01-15 20:12:51
    Zull路由网关 概述 什么是zuul? Zull包含了对请求的路由(用来跳转的)和过滤两个最主要功能: 其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责对请求的...
  • dva+antd+ts的路由菜单布局

    万次阅读 2020-08-28 22:06:39
    rfce(rcc)快速创建例子 1.路由配置 2.引入布局 加上this.props.children 3.react-loadable路由懒加载 4.给菜单加上链接 遍历动态渲染Menu push 别忘了加上@withRouter
  • 路由策略 & 策略路由

    万次阅读 多人点赞 2019-08-29 11:45:43
    策略路由PBR(Policy-Based Routing)是一种依据用户制定的策略进行路由选择的机制,分为本地策略路由、接口策略路由和智能策略路由SPR(Smart Policy Routing)。 策略路由具有如下优点: 可以根据用户实际需求...
  • 华为 等价路由

    万次阅读 多人点赞 2020-05-14 23:16:57
    切忌自我感动,觉得自己有多努力多可怜,事实上,比你努力的人多的是,比你矫情的没几个。 文章目录 ...等价路由(ECMP)即为到达同一个目的 IP 或者目的网段存在多条 Cost 值相等的不同路由路径。
  • 静态路由 ISP路由 策略路由 OSPF路由

    千次阅读 2018-11-15 14:43:53
    静态路由(英语:Static routing),一种路由的方式,路由项(routing entry)由手动配置,而非动态决定。与动态路由不同,静态路由是固定的,不会改变,即使网络状况已经改变或是重新被组态。一般来说,静态路由是...
  • linux 默认路由 主机路由 网络路由

    千次阅读 2018-12-18 10:17:48
    网关地址,”*” 表示目标是本主机所属的网络,不需要路由 Genmask 网络掩码 Flags 标记。一些可能的标记如下:   U — 路由是活动的   H — 目标是一个主机   G — 路由指向网关 ...
  • 配置静态路由,动态路由,默认路由

    万次阅读 多人点赞 2019-07-30 16:06:09
    一、什么是路由 路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程[1]。路由工作在OSI参考模型第三层——网络层的数据包转发设备。路由器通过转发数据包来实现网络互连。虽然路由器可以支持...
  • react做路由跳转,路由传参

    万次阅读 2019-06-30 20:37:30
    如果你项目当中用的是react全家桶,react + react-router + redux + axios + antd类似这样的组合的话那么做路由的话就是react-router, 首先要配置路由,关于react-router路由配置请看: ...而后可通过 this.p...
  • 什么是旁路由 用旁路由有什么好处 旁路由怎么设置 时间:2019-11-23 15:48:52 / 来源:你好多多DIY / 作者:多多 2019年11月23日更新(初次发布于2019年5月13日) 用旁路由和接二级路由的区别和好处: (PS:很多人...
  • 路由选择、路由协议与路由算法

    千次阅读 多人点赞 2017-05-20 15:52:43
    本文旨在区分清楚路由选择、路由协议和路由算法的关系。然后讲解常用路由协议和路由算法。什么是路由选择百科的说法: 路由选择是指选择通过互连网络从源节点向目的节点传输信息的通道,而且信息至少通过一个中间...
  • Openwrt/Lede软路由设置为旁路由模式

    万次阅读 2020-04-30 17:17:20
    问题由来:我的软路由是放在客厅的,同时还兼NAS等功能,其它房间的网线均是从弱电箱牵过去的,且想把家里所有设备均设置在同一网段,但遗憾的是我的弱电箱到客厅只埋了1根网线,而弱电箱又是封闭的,散热差,只能...
  • 一、单播路由 报文的目标地址为 A、B、C 类地址的路由表项为单播路由。 目标 IP 地址是告诉报文 目的主机地址在哪里,而路由是告诉报文如何到达目的地址 网络上的每个路由器独立进行 决策,将报文转发到离目的...
  • 1、路由 1.1什么是路由 想要将数据从一个网络发送到另一个网络,我们需要使用路由器来帮助我们转发数据。路由是指路由器从一个接口上收到数据包,根据数据包的目的地址进行定向并转发到另一个接口的过程。 ...
  • 静态路由和动态路由

    万次阅读 多人点赞 2018-12-23 16:50:31
    (2)掌握静态路由的配置; (3)掌握动态路由的配置。   实验要求: (1)写出静态路由的配置过程; (2)写出动态路由的配置过程。   一、路由器的...
  • 路由优先级

    千次阅读 2020-04-10 00:22:49
    路由器可以通过多种不同协议学习到去往同一网段的路由,当这些路由都符合最长匹配原则(选路时选择最长掩码匹配)时,必须决定哪个路由优先。 每一个路由协议都有协议优先级(数值越小,优先级越高),当有多个路由...
  • 静态路由介绍: 静态路由是指由用户或网络管理员手工配置的路由信息。当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。静态路由信息在缺省情况下是私有的,不会传递...
  • Django 路由

    万次阅读 2020-09-08 11:51:09
    文章目录Django 路由Django1.1.x 版本Django 2.2.x 之后的版本正则路径中的分组正则路径中的无名分组urls.pyviews.py正则路径中的有名分组urls.pyviews.py正则路径中的有名分组路由分发(include)反向解析普通路径...
  • 华为 BGP路由聚合

    千次阅读 多人点赞 2020-07-01 11:03:17
    1、减少路由表的明细路由(减少空间占用和维护每条明细路由带来压力) 2、减少因为某些明细路由的频繁更新导致网络波动 1、summary automatic 自动聚合 2、Aggregation 手动聚合 拓扑 基础配置 1、AS-200运行OSPF...
  • vue获取当前页面路由

    万次阅读 2019-04-12 15:43:33
    当前页面 完整url可以用 window.location.href 路由路径可以用 this.$route.path 路由路径参数 this.$route.params
  • 1.动态路由/静态路由 动态路由 路由选择器自动共享路由信息 自动构造路由表,需要一个路由协议,如RIP或OSPF 静态路由 路由选择器不共享路由信息(单方向路由) 手工构造路由表 2.直连路由/网关路由(间接路由) 其...
  • Vue中 想在路由变化的时候插入事件,需要使用到 vueRouter动态路由匹配中的响应路由参数的变化方法,提醒一下,当使用路由参数时,例如从 /user/foo 导航到 /user/bar,原来的组件实例会被复用。因为两个路由都渲染...
  • //匹配不到路由的时候加载的组件 或者跳转的路由 { path: '**', /*任意的路由*/ // component:HomeComponent redirectTo:'home' }
  • 一、路由 在Vue中 需要手动配置router路由规则 而Nuxt省去了手动挨个配置的麻烦 Nuxt会自动检测并配置路由 因此 只需要直接在浏览器访问即可 但Nuxt自动生成的路由规则有着一定的规律 普通路由 若组件是在文件夹里 ...
  • 路由嵌套(子路由

    千次阅读 2019-05-15 01:54:07
    路由嵌套(子路由路由嵌套在SPA(单页页面程序中会常用到),有一部分内容固定,通过点击跳转决定 另一部分不定的内容,就可以用到路由嵌套来完成,也可以用引入组件的方式完成, 把左边做成一个单独的组件,在...
  • 回程路由

    千次阅读 2019-07-23 10:02:57
    在没有动态路由的情况下,两路由器A-B: 数据包A到B的时候,A必须要知道如何到达B,所以A上应该有B的路由。 当A的数据包到达B,B需要作出回应,所以B要知道如何到达A。因此B上必须有到达A的路由。 下一跳: 路由...
  • 静态路由和默认路由

    万次阅读 2018-03-16 14:08:21
    1静态路由和默认路由介绍:路由器在转发数据时,需要现在路由表中查找相应的路由,有三种途径(1)直连路由:路由器自动添加和自己直连的路由(2)静态路由:管理员手动添加的路由(3)动态路由:由路由协议动态建立...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 913,889
精华内容 365,555
关键字:

路由