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

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

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

前提:

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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SciPy 安装_scipy中文手册

    SciPy 安装_scipy中文手册章节SciPy介绍SciPy安装SciPy基础功能SciPy特殊函数SciPyk均值聚类SciPy常量SciPyfftpack(傅里叶变换)SciPy积分SciPy插值SciPy输入输出SciPy线性代数SciPy图像处理SciPy优化SciPy信号处理SciPy统计SciPy安装确保已经安装pip。最佳实践是,一起安装NumP…

    2022年10月27日
  • 程序员法则xiazai_程序员手册

    程序员法则xiazai_程序员手册CSDN上很火的一帖子,全中国所有程序员都在集体YY(花了好半天时间才知道YY==意淫),http://community.csdn.net/Expert/topic/3881/3881210.xml?temp=.9396173CSDN上的帖子,可以看看人气http://www.javadict.com/profz.htm小说版,没有烦人的跟贴 …

    2022年10月6日
  • 索引与视图

    索引与视图1.单列索引与多列索引一个多列索引可以认为是包含通过合并(concatenate)索引列值创建的值的一个排序数组。当查询语句的条件中包含last_name和first_name时SELECT*FROMtestWHERElast_name=’Kun’ANDfirst_name=’Li’;sql会先过滤出last_name符合条件的记录,在其基础上在过滤first_n…

    2022年7月22日
  • Linux系统时间和硬件时间设置[通俗易懂]

    Linux系统时间和硬件时间设置[通俗易懂]Linux系统时间和硬件时间设置

    2022年4月24日
  • 【MySQL 数据库】数据库的基础知识「建议收藏」

    【MySQL 数据库】数据库的基础知识「建议收藏」文章目录1.认识数据库1.1数据库和数据结构的关系1.2为什么需要数据库1.3数据库的存储2.SQL2.1介绍2.2分类3.数据库的类别3.1关系型数据库3.2非关系型数据库3.3区别4.MySQL的程序结构4.1客户端和服务器4.2MySQL的客户端-服务器结构4.3MySQL服务器1.认识数据库1.1数据库和数据结构的关系数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合,是一个抽象的学科我们熟知的数据结构有:顺序表、链表、栈、队列、二

    2022年6月26日
  • Python获取时间戳及常用的时间格式转换[通俗易懂]

    Python获取时间戳及常用的时间格式转换[通俗易懂]常用的时间格式转换:时间戳:10位13位16位ISO格式UTC时间代码如下:#!/usr/bin/envpython#coding=utf-8″””#:author:TerryLi#:url:https://blog.csdn.net/qq_42183962#:copyright:©2020-presentTerryLi#:motto:IbelievethattheGodrewardsthediligent.”””import

    2022年10月2日

发表回复

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

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