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

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

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

前提:

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 搜集整理并改动

转载请注明出处

谢谢!

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Idea激活码永久有效Idea2021.1.3激活码教程-持续更新,一步到位

    Idea激活码永久有效Idea2021.1.3激活码教程-持续更新,一步到位Idea激活码永久有效2021.1.3激活码教程-Windows版永久激活-持续更新,Idea激活码2021.1.3成功激活

    2022年6月17日
    282
  • ARM版Oracle安装包_如何把Linux移植到手机

    ARM版Oracle安装包_如何把Linux移植到手机  linux作为一款流行的嵌入式系统,目前已经有多种架构的MCU支持Linux移植,arm64就是其中一种。今天在这里想做一个笔记,记录一下完整的arm64移植过程。嵌入式Linux系统组成部分嵌入式Linux移植到开发板上时,主要有四个组成部分,下面一一列举。  在启动过程中,bootloader加载设备树文件(dtb),之后启动内核(Startkernel),进而加载根文件系统(debian或者ubuntu),最后进入系统。  那么我们所做的工作可以分为以下三部分:1、进行bootlo

    2025年12月10日
    5
  • uni-app uni.uploadFile上传图片前后端(java)详解

    uni-app uni.uploadFile上传图片前后端(java)详解近日在使用uni.uploadFile上传图片时,碰到后端收到不到文件的问题,网上没有写uni-appjava后端的处理实例,小程序到是有很多,但都是单文件上传,即使是多文件上传,也是采用一个for循环多次调用uploadFile函数,对文件一个一个提交。伪代码如下://微信小程序为例:for(vari=0;i<filePaths.length;i++){…

    2022年6月15日
    1.0K
  • SLAM算法调研「建议收藏」

    SLAM算法调研「建议收藏」作为一名机器人运行控制算法工程师,SLAM算法的调研已初步完成,特意分享。

    2022年6月16日
    49
  • 大数据常见错误及解决方案[通俗易懂]

    大数据常见错误及解决方案[通俗易懂]大数据常见错误及解决方案(转载)1、用./bin/spark-shell启动spark时遇到异常:java.net.BindException:Can’tassignrequestedaddress:Service‘sparkDriver’failedafter16retries!解决方法:addexportSPARK_LOCAL_IP=“127.0.0.1”tospark-env.sh2、javaKafkaproducererror:ERRORkafka.util

    2022年6月2日
    160
  • 移除word文档的域代码 remove all field codes of word[通俗易懂]

    移除word文档的域代码 remove all field codes of word[通俗易懂]去除word中因使用mendeley或endnote等文献管理软件而产生的域代码。网上很多说使用CTRL+SHIFT+F9,但亲测不行,可能是软件版本问题。使用以下方法解决:CTRL+A全选文章;CTRL+6去除全文域代码。参考:https://community.endnote.com/t5/EndNote-Styles-Filters-and/Removing-field-codes-adjusts-spacing-in-Word-document/td-p/152892http

    2022年6月10日
    142

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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