网站首页 > 资源文章 正文
IP协议的一个核心任务就是数据报的路由,即决定发送数据报到目标机器的路径。
上图是IP模块的基本工作流程。我们从右往左来分析。
当IP模块接收到来自数据链路层的IP数据报时,首先对该数据报的头部做CRC校验,确认无误后就分析头部的具体信息。
如果该IP数据报的头部设置了源站选项(松散源路由选择或严格源路由选择),则IP模块调用数据报转发子模块来处理该数据报。
如果该IP数据报的头部中目标IP地址是本机的某个IP地址,或者是广播地址,即该数据报是发送给本机的,则IP模块就根据数据报头部的协议字段来决定将它发送给哪个上层应用(分用)。
如果IP模块发现这个数据报不是发送给本机的,则也调用数据报转发子模块来处理该数据报。
数据报转发子模块将首先检测系统是否允许转发,如果不允许,IP数据模块将数据报丢弃。如果允许,数据报转发子模块将对该数据报执行一些操作,然后将它交给IP数据报输出子模块。
IP数据报应该发送到哪个下一跳路由(或者目标机器),以及经过哪个网卡来发送,就是IP路由过程,即上图中的“计算下一跳路由”子模块。IP模块实现数据报路由的核心数据结构是路由表。这个表按照数据报的目标IP地址分类,同一类型的IP数据报将被发往相同的下一跳路由(或者目标机器)。
IP输出队列中存放的是所有等待发送的IP数据报,其中除了需要转发的IP数据报外。还包括封装了本机上层数据(ICMP报文,TCP报文段和UDP数据报)的IP数据报。
上图中的虚线箭头显示了路由表更新的过程。这一过程是指通过路由协议或者route命令调整路由表,使之更适应最新的网络拓扑结构,成为IP路由策略。
路由机制
这里我们先了解一下路由表的内容,这里我们先获取一下测试及alexdev上的路由表:
该路由表包含4项,每项包含8个字段,如下表所示:
所以第一项的目标地址是default,即所谓的默认路由项。该项包含一个“G”标志,说明路由的下一跳目标是网关,其地址是10.0.0.1。
另外一个路由项是10.0.0.0,它指的是本地局域网。没有绑定任何的网关,说明直接由本机发送出去。
那么路由标是如何按照IP地址分类的?
- 查找路由表中和数据报的目标IP地址完全匹配的主机IP地址。如果找到,就使用该路由项,没有下一步。
- 查找路由表中和数据报的目标IP地址具有相同网络ID的网络IP地址,比如上上图中除default外的其他几项,如果找到,就使用该路由项,没找到下一步。
- 选择默认路由项,这通常意味着数据报的下一跳路由是网关。
路由表更新
路由表必须能够更新,以反映网络连接的变化,这样IP模块才能准确、高效地转发数据报。
route命令可以修改路由表。
第一行添加主机10.0.0.199(raspberry)对应的路由项,这样设置之后,所有从alexdev发送到raspberry的IP数据报将通过网卡wlp2s0直接发送到目标机器的接收网卡。
第二行表示删除网络10.0.0.0对应的路由项。这样,除了raspberry, alexdev将无法访问该局域网上的任何机器
第三行表示删除默认路由项,这样做的后果是无法访问因特网。
第四行表示重新设置默认路由项,不过这次其网关是raspbrry,而不是直接访问因特网的路由器。
通过route命令或其他工具手工修改路由表,是静态的路由更新方式。对于大型的路由器,他们通过BGP(Border Gateway Protocol 边际网关协议)、RIP(Routing Information Protocol 路由信息协议)、OSPF等协议来发现路径,并且更新自己的路由表。这种更新方式是动态的、自动的。
- 上一篇: 为什么要有动态路由协议?看完这18张图你就知道了
- 下一篇: 试一下距离矢量路由协议,比静态路由还高级
猜你喜欢
- 2024-10-30 互联网的数据包是如何传递的?RIP、OSPF、BGP路由协议了解一下
- 2024-10-30 组播协议路由表(组播协议和组播路由协议)
- 2024-10-30 路由器工作原理及协议(总结路由器的工作原理)
- 2024-10-30 「网工精选」OSPF路由协议归纳大全......
- 2024-10-30 网络知识-22 BGP路由协议(路由器bgp协议配置)
- 2024-10-30 试一下距离矢量路由协议,比静态路由还高级
- 2024-10-30 为什么要有动态路由协议?看完这18张图你就知道了
- 2024-10-30 RIP协议,OSPF协议和路由表的关系是什么?
- 2024-10-30 电脑网络知识:路由信息协议(RIP)的学习
- 2024-10-30 路由器拨号使用的PPPOE协议你知道多少?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)