TCP/IP详解:Protocol 读书笔记(九)

Chapter9 IP选路

文章目录

  • TCP/IP详解:Protocol 读书笔记(九)
    • Chapter9 IP选路
      • IP选路原理简单回顾
      • 初始化路由表
      • 没有到达目的地的路由
      • ICMP重定向差错
      • ICMP路由器发现报文
        • 路由器操作
        • 主机操作

在前面的笔记中已经单独写了一篇关于IP路由选择的内容。当时在看到《IP协议》那一章节的时候关于路由选择部分有些不理解,因此查了其他资料并将想到的、看到的内容写成了笔记。后面在读到本章《IP选路》的时候,发现书中讲的内容更广、更细,有的内容我前面的笔记没有提到。 这篇笔记我主要针对《IP路由选择》那篇笔记中没有提到的重要内容做补充。

IP选路原理简单回顾

在IP选路过程中,路由表的作用是非常重要的,路由表项的内容包括:5bit标志、目的IP地址(主机、网络或默认)、下一站路由器的IP地址(间接路由)或者本地接口的IP地址(直接路由)及指向本地接口库的指针。主机表项比网络表项具有更高的优先级,而网络表项比默认项具有更高的优先级。

系统产生的或转发的每份IP数据报都要搜索路由表,路由表可以被路由守护程序或ICMP重定向报文修改。系统在默认情况下不转发数据报,除非进行特殊配置。主机在启动时只有一个简单的路由表,它可以被来自默认路由器的ICMP重定向报文动态修改。

路由表的内容、格式以及搜寻步骤已经在《IP路由选择》一文中讲过,这里就不再重复。

初始化路由表

每初始化一个网络接口时,就为接口自动创建一个直接路由。对于点对点链路和环回接口,路由直接到达主机;对于广播接口,路由是到达网络。

到达主机或网络的路由如果不是直接相连的,那就需要加入路由表。一种方法是在系统引导时显式地在初始化文件中运行route命令。如:

route add default [主机名/IP地址] 1

第三个参数代表目的端,第四个参数代表网关(路由器),最后一个参数代表路由的度量(metric)。

但是一般操作系统不会把route命令加入到启动文件中。一些系统允许在某个文件中指定默认的路由器,如/etc/defaultrouter。在每次重启操作系统时都要在路由表中加入该默认项。

初始化路由表的其他方法是运行路由守护程序或用较新的路由器发现协议。后面有章节会涉及到这些内容。

没有到达目的地的路由

正常情况下,路由表中如果有默认项的话,我们对路由表的搜索都能找到匹配项,因为主机和网络项都匹配不上的话,就会自动匹配到默认项上。但是如果路由表中没有默认项,而又没有找到主机或网络匹配项,这时就产生报错信息。

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

ICMP重定向差错

当IP数据报应该被发送到另一个路由器时,收到数据报的路由器就要发送ICMP重定向差错报文给IP数据报的发送端。举个栗子:

  1. 我们假定主机发送一份IP数据报给R1.这种选路决策经常发生,因为R1是该主机的默认路由。
  2. R1收到数据报并且检查它的路由表,发现R2是发送该数据报的下一站。当它把数据报发送给R2时,R1检测到它正在发送的接口与数据报到到达接口是相同的(即主机与路由器所在的LAN)。这样就给路由器发送重定向报文给原始发送端提供了线索。
  3. R1发送一份ICMP重定向给主机,告诉它以后把数据报发送给R2而不是R1。

重定向一般用来让具有很少选路信息的主机逐渐建立更完善的路由表。主机启动时路由表中可以只有一个默认表项。一旦默认路由发生差错,默认路由器将通知它进行重定向,并允许主机对路由表作相应的改动。

ICMP路由器发现报文

一般来说,主机在引导以后要广播或多播传送一份路由器请求报文。一台或更多台路由器响应一份路由器通告报文。另外,路由器定期地广播或多播传送它们的路由器通告报文,允许每个正在监听的主机相应地更新它们的路由表。

​ ICMP路由器请求报文格式

​ ICMP路由器通告报文格式

路由器在一份报文中可以通告多个地址。地址数指的是报文中所含的地址数。地址项大小指的是每个路由器地址32bit字的数目,始终为2。生存期指的是通告地址有效的时间。下面是地址和优先级字段。IP地址是发送路由器的某个地址。优先级是一个有符号的32bit整数,指出该IP地址作为默认路由器地址的优先等级,这是与子网上的其他路由器相比较而言的。值越大说明优先级越高。

路由器操作

当路由器启动时,将随机在所有广播或多播传送接口上发送通告报文。随机发送是为了减少与子网上其他路由器发生冲突的概率。一般两次通告报文间隔450s和600s。通告报文的默认生命周期是30min。

涉及到生命周期的另一个情况是当路由器上的某个接口被关闭时,路由器可以在该接口上发送最后一份通告报文,并把生命周期值设为0。

除了定期发送主动提供的通告报文以外,路由器还要监听来自主机的请求报文,并发送路由器通告报文以响应这些请求报文。

如果子网上有多台路由器,由管理员为每个路由器设置优先等级。例如,主默认路由器就要比备份路由器具有更高的优先级。

主机操作

主机在引导期间一般发送三份路由器请求报文,每3s发送一次。当接收到一个有效的通告报文,就停止发送请求报文。

主机同时也监听来自相邻路由器的请求报文。这些通告报文可以改变主机的默认路由器。如果没有接收到来自当前默认路由器的通告报文,默认路由器就会超时。

主机同时也监听来自相邻路由器的请求报文。这些通告报文可以改变主机的默认路由器。如果没有接收到来自当前默认路由器的通告报文,默认路由器就会超时。

一般的默认路由器每隔10min发送通告报文,报文的生命周期是30min。即使主机在一段时间内,没有收到一份或者两份通告报文,主机的默认表项也不会超时。

TCPIP详解Protocol 读书笔记(九) IP选路相关推荐

  1. TCPIP详解Protocol 读书笔记(三) IP协议讲解

    TCP/IP详解:Protocol 读书笔记(三) Chapter3 IP:网际协议 文章目录 TCP/IP详解:Protocol 读书笔记(三) Chapter3 IP:网际协议 IP协议 IP数据 ...

  2. TCPIP详解Protocol 读书笔记(八) Traceroute程序

    TCP/IP详解:Protocol 读书笔记(八) Chapter8 Traceroute程序 文章目录 TCP/IP详解:Protocol 读书笔记(八) Chapter8 Traceroute程序 ...

  3. 初出茅庐的小李第3篇博客《5G物联网及NB-IoT技术详解》读书笔记1

    初出茅庐的小李第3篇博客 <5G物联网及NB-IoT技术详解>读书笔记1 在Mculover666那里白嫖了一本书,不要问我咋白嫖的,我也不知道- 为什么要写这样的笔记? 因为我白嫖的时候 ...

  4. TCP/IP详解卷一读书笔记一

    TCP/IP详解卷一:第一章 一.分层   1.网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能.   疑点 介质访问控制方法   多个主机需要通过一条"共享介质"发送 ...

  5. [读书笔记]TCP/IP详解V1读书笔记-3

    IP: 无连接:数据报到达没有先后顺序,处理先后发送的数据报之间没有关联. 不可靠:数据报丢失后没有处理,简单向源地址发送 ----------------------------- -------- ...

  6. [读书笔记]TCP/IP详解V1读书笔记-4 5

    IP地址与以太网地址之间的关系 R P发送一份称作A R P请求的以太网数据帧给以太网上的每个主机.这个过程称作广播,在32 bit的I P地址和采用不同网络技术的硬件地址之间提供动态映射 ----- ...

  7. [读书笔记]TCP/IP详解V1读书笔记-1

    TCP数据单元:tcp segment UDP数据单元:udp datagram IP数据单元:IP datagram 链路层单元:frame ---------------------------- ...

  8. 《TCP/IP详解》读书笔记

    1. 网络协议的分层,有四个层次,从下向上分别是: 链路层:也称作数据链路层或网络接口层.主要处理物理接口的细节 网络层:也称作互联网层,处理分组在网络中的活动.在TCP/IP协议族中网络层协议包括I ...

  9. 《TCP/IP详解》读书笔记(18章)-TCP连接的建立与中止

    TCP是一个面向连接的协议.无论哪一方向另一方发送数据之前,都必须在双方之间建立一条连接.这种两端间连接的建立与无连接协议UDP不同,UDP向另一端发送数据报时,无需任何预告的握手. 1.建立连接的协 ...

最新文章

  1. insight切换窗口 source_Source Insight函数调用关系显示设置
  2. java url 拦截_Spring mvc设置某些url不被interceptor拦截器拦截的方法
  3. 玩的起也要输的起 。。没什么,照样支持你。。
  4. class(一)--类的创建
  5. JAVA深复制(深克隆)与浅复制(浅克隆)
  6. oracle--存储过程--bai
  7. elementui时间线的使用~满满的干货,不要错过
  8. 怎么写安卓手机脚本_想要挣钱创收 那就用脚本操作手机群控软件啊
  9. python正则匹配数字_python——正则匹配数字
  10. php wordpressCMS 网站局域网搭建--笔记
  11. 查找农历生日与阳历生日属于同一天的次数和年份
  12. 数字人民币在上海试点,首次实现脱离手机的硬钱包支付模式!
  13. 企业做CMMI认证有什么用?
  14. Jsp制作企业后台数据库管理系统
  15. 计算机专业名词TIME,date
  16. 制作符合EIA/TIA标准的RJ-45两种双绞线的压线顺序
  17. 字符串--分类统计字符个数(心得+知识点)
  18. 单、双激光雷达启动与双激光雷达的外参标定(VLP-16)
  19. iPhone 4S iPhone 4 对比 区别
  20. olm指示灯ch2闪烁_西门子OLM说明书.pdf

热门文章

  1. pynq-z2上uart0的串口通信
  2. 湖南推进“智赋万企”行动 为园区插上智能化翅膀
  3. 计算机科学家的摇篮,科学网—科学家有多少摇篮? - 籍利平的博文
  4. sortable.js
  5. 《中国垒球》:四强巡礼·再创辉煌
  6. Tun虚拟接口应用总结
  7. Autoware激光雷达与网络摄像机联合标定(四) Livox Horizon Autoware驱动安装
  8. 深度学习———戴子龙一周小结
  9. ssm校内超市管理系统 本系统分为管理员与普通用户两种角色
  10. soul网关监控插件的使用