【网络基础】路由表,分组转发算法[通俗易懂]

【网络基础】路由表,分组转发算法

大家好,又见面了,我是全栈君。

前提:

IP数据报的首部中没有地方能够用来指明“下一跳路由器的 IP 地址”。


那么。当路由器接受到一个待转发的报文时。是怎样确定将该报文的传向呢?在此,我们引入“路由表”概念。

路由表如图所看到的:

【网络基础】路由表,分组转发算法[通俗易懂]

一个IP报文传到路由器R2时,则会通过查询R2所维护的路由表,依据IP报文段中的目的地址进行匹配。

得到对应的下一跳地址。

这样,

    IP 数据报终于一定能够找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。
    仅仅有到达最后一个路由器时,才试图向目的主机进行直接交付

 


当然,路由表内容不止上图所看到的。例如以下:

特定主机路由:

这样的路由是为特定的目的主机指明一个路由。

採用特定主机路由可使网络管理人员能更方便地控制网络和測试网络,同一时候也可在须要考虑某种安全问题时採用这样的特定主机路由。

  默认路由:

作用:

路由器还可採用默认路由以降低路由表所占用的空间和搜索路由表所用的时间。
仅仅要目的网络
在路由表中匹配不到就一律选择默认路由详情见后面:分组转发规则
用途
假设一个主机连接在一个小网络上。而这个网络仅仅用一个路由器和因特网连接,那么在这样的情况下使用默认路由是非 常合适的。 




当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件
确认下一跳路由器之后,

网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址。并将此硬件地址放在链路层的 MAC 帧的首部。然后依据这个硬件地址找到下一跳路由器。  


以下列出路由器之间分组转发的算法


(1)  从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
(2)  若网络 N 与此路由器直接相连。则把数据报直接交付目的主机 D。否则是间接交付,运行(3)。

(3) 若路由表中有目的地址为 D 的特定主机路由。则把数据报传送给路由表中所指明的下一跳路由器。否则,运行(4)。

(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器。否则,运行(5)。

(5) 若路由表中有一个默认路由。则把数据报传送给路由表中所指明的默认路由器;否则,运行(6)。
(6)  报告转发分组出错。 

本文由Cout_Sev 搜集整理并改动

转载请注明出处

谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116367.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • JAVA葵花宝典(基础版)

    JAVA葵花宝典(基础版)JAVA葵花宝典(基础版)20201209response.getWriter().write()和response.getWriter().print()的区别newObjectMapper().writeValueAsString();JSON.stringify()常量命名【idea技巧】IDEA给方法添加注释模板newJdbcTemplate(JDBCUtil.getDataSource()).queryForObject()20201212【idea快捷键】显示方法参数ctrl+p获取验证

  • C语言数组当参数传递

    C语言数组当参数传递在学习C语言的过程中遇到数组作为参数传递的问题一维数组:#includeinttest2(inta[]){ for(inti=0;i<5;i++){ printf("%d",a[i]); }}intmain(){ inta[5]={1,2,3,4,5},*p; p=a; test2(a); }这样我们可以很顺利的在test去遍历这个

  • 阿里云设置端口访问、使用_阿里云服务器端口号

    阿里云设置端口访问、使用_阿里云服务器端口号登录阿里云账号后,点击控制台点击自定义视图→再点击云服务器ECS点击实例id进入实例:点击本实例安全组:点击安全组id或者配置规则进入安全组规则配置界面,可以选择添加方式,这里以手动添加作为演示点击手动添加后,会出现添加栏,我们配置521端口,源选择0.0.0.0/0(意思是开放给所有人),最后点击保存放行端口就设置完毕了此外也可以从另一个地方进入本地实例安全组:(1)点击云服务器ECS后(上述步骤3)进入实例页面后,可以直接点击实例(2)选择自..

  • 简单易懂的Builder模式

    简单易懂的Builder模式

  • LinkedList和ArrayList的区别[通俗易懂]

    LinkedeList和ArrayList都实现了List接口,但是它们的工作原理却不一样。它们之间最主要的区别在于ArrayList是可改变大小的数组,而LinkedList是双向链接串列(doubly LinkedList)。ArrayList更受欢迎,很多场景下ArrayList比LinkedList更为适用。这篇文章中我们将会看看LinkedeList和ArrayList的不同,而且我们试

  • PyCharm激活码永久有效PyCharm2020.3.4激活码教程-持续更新,一步到位

    PyCharm激活码永久有效PyCharm2020.3.4激活码教程-持续更新,一步到位PyCharm激活码永久有效2020.3.4激活码教程-Windows版永久激活-持续更新,Idea激活码2020.3.4成功激活

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号