zoukankan      html  css  js  c++  java
  • [TCP IP详解:学习笔记]IP选路

           IP选路

           选路是IP最重要的功能之一,图1是IP层处理过程的简单流程。

     

    图1 IP层工作流程

     

           路由表中包含的信息决定了IP层所做的所有决策。列出了IP搜索路由表的几个步骤:

    1. 搜索匹配的主机地址;
    2. 搜索匹配的网络地址;
    3. 搜索默认表项(默认表项一般在路由表中被指定为一个网络表项,其网络号为0)。

      IP层进行的选路实际上是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组。选路策略只是一组决定把哪些路由放入路由表的规则。IP执行选路机制,而路由守护程序则提供选路策略。

      如果路由表中没有默认项,而又没有找对匹配项时,会发生什么情况?

      如果数据报是由主机产生的,那么就给发送该数据报的应用程序的应用程序返回一个差错,或者是“主机不可达差错”或者是“网络不可达差错”。如果是被转发的数据报,那么就给原始发送端发送一份ICMP主机不可达的差错报文。

      只有当主机可以选择路由器发送分组的情况下,才可能看到ICMP重定向差错报文(如图2所示)

    1. 假定主机发送一份IP数据报给R1(R1是该主机的默认路由);
    2. R1收到数据报并且检查它的路由表,发送R2是发送该数据报的下一站。当它把数据报发送给R2时,R1检测到它正在发送的接口与数据报到达端口是相同的(即主机和两个路由器所在的LAN);
    3. R1发送一份ICMP重定向报文给主机,告诉它以后把数据报发送给R2而不是R1。

     

    图2 ICMP重定向的例子

     

           ICMP重定向报文的接收者必须查看三个IP地址:

    1. 导致重定向的IP地址(即ICMP重定向报文的数据位于IP数据报的首部);
    2. 发送重定向报文的路由器的IP地址(包含重定向信息的IP数据报中的源地址);
    3. 应该采用的路由器IP地址。

      ICMP重定向报文只能由路由器生成,而不能由主机生成。另外,重定向报文是为主机而不是为路由器使用的。

      在4.4 BSD系统中,在生成ICMP重定向报文之前要满足下列条件

    1. 出接口必须等于入接口;
    2. 用于向外传送数据报的路由不能被ICMP重定向报文创建或修改过,而且不能是路由器的默认路由;
    3. 数据报不能用源站选路来转发;
    4. 内核必须配置成可以发送重定向报文。

      在4.4 BSD主机收到ICMP重定向报文后,在修改路由表之前要做一些检查

    1. 新的路由器必须直接与网络相连接;
    2. 重定向报文必须来自当前到目的地所选择的路由器;
    3. 重定向报文不能让主机作为路由器;
    4. 被修改的路由必须是一个间接路由。

      需要注意,路由器应该发送的只是对主机的重定向(代码1或3),而不是对网络的重定向。

      初始化路由表的方法

    1. 在配置文件中指定静态路由,一般都是用来设置默认路由器;
    2. 利用ICMP路由器通告和请求报文。
  • 相关阅读:
    调度器2—cat /proc/<pid>/sched内容分析
    调度器1—相关接口和命令行工具
    Java中的String类
    Java中的数组
    代码访问使用Let's Encrypt证书的网站提示certificate has expired的解决方法
    Linux环境Clion使用Protobuf
    PyTorch Dataloader读取时如何在进程之间传输数据
    6 安装Grafana 展示promethues数据
    5 Prometheus relabel配置
    4 PromQL
  • 原文地址:https://www.cnblogs.com/life91/p/3001009.html
Copyright © 2011-2022 走看看