路由器下一跳地址怎么判断_网络基本功三:细说路由器

介绍

以太网交换机工作在第二层即数据链路层,用于在同一网络内部转发以太网帧。但是,当源和目的IP地址位于不同网络时,以太网帧必须发送给路由器。路由器负责在不同网络间传输报文,通过路由表来决定最佳转发路径。当主机将报文发送至不同IP地址时,由于主机无法直接与本地网络以外的设备通信,报文被转发至默认网关。默认网关就是数据流从本地网络路由至远端设备的目的地。它通常用来连接本地网与公共网。

报文转发过程:

路由器在一个接口接收报文并将它从另一个接口转发出去,这一过程的关键步骤是为输出链路将报文封装在适当的数据链路帧中。路由器主要执行以下三个步骤:

1. 将第二层的帧头和帧尾移除,解析出第三层报文。

2. 检查IP报文的目的IP地址,在路由表中查找最佳路由。

3. 如果路由器找到一条最佳路径,则将三层报文封装到新的二层帧中,并将帧转发到输出端口。

如下图所示:设备有三层IPv4地址,以太网接口有二层数据链路地址。例如PC 1的IPv4地址192.168.1.10,示例MAC地址0A-10。在报文从原设备传输至目的设备的过程中,三层IP地址不会改变。但是,每一跳随着报文在路由器中被解封装和重新封装,二层数据链路地址都会改变。很可能报文被封装成与接收时不同的另一种类型的二层帧。

3e5292833762ce223544fcbb91a99ccb.png

发送报文:

PC 1发送报文给PC 2时,首先必须确定目的IPv4地址是否位于同一网络。PC 1通过将自己的IPv4地址与子网掩码做与操作,来判断PC 1所属的网段。接下来,PC 1对目的IPv4地址与PC 1的子网掩码做同样的与操作。如果目的网络地址与PC 1网络相同,则PC 1不使用默认网关,而是在ARP缓存中查找目的IPv4地址的设备MAC地址。如果MAC地址不在缓存中,则PC 1产生一个ARP请求来获取地址并将报文发给目的地址。如果目的网络地址位于另一网络,则PC 1将报文转发至默认网关。

要确定默认网关的MAC地址,PC 1在它的ARP表中查找默认网关的IPv4地址以及相应的MAC地址。如果ARP表中没有默认网关的对应表项,则PC 1发送ARP请求。路由器R1回复ARP响应。之后PC 1将报文转发至默认网关的MAC地址,即路由器R1的Fa0/0接口。

转发至下一跳:

R1从PC 1接收到以太网帧后执行以下步骤:

1. R1检查目的MAC地址,与接收端口FastEthernet 0/0相匹配,因此,将帧复制到buffer。

2. R1识别以太网类型为0x800,意味着以太网帧的数据部分包含IPv4报文。

3. R1解封装该以太网帧。

4. 由于目的IPv4地址与R1直连的任何网络都不相符,R1在路由表中查找包含该目的IPv4地址主机的网络地址。本例中,路由表中有192.168.4.0/24网络的路由。目的IPv4地址为192.168.4.10,即该网络上的主机IPv4地址。

R1找到192.168.4.0/24路由的下一条IPv4地址为192.168.2.2以及输出端口FastEthernet 0/1,这意味着IPv4报文封装到一个新的以太网帧中,目标MAC地址是下一跳路由器的MAC地址。

由于下一个接口是在以太网上,所以R1必须用ARP解析出下一跳IPv4地址的MAC地址。

1. R1在ARP cache中查找下一跳IPv4地址192.168.2.2。如果表项不在ARP cache中,R1会从FastEthernet 0/1 接口发送ARP请求,R2会返回ARP响应。R1之后在ARP cache中更新192.168.2.2的MAC地址。

2. IPv4报文封装到新的以太网帧中并从R1的FastEthernet 0/1 接口转发出去。

到达目的地:

当帧到达R3时执行以下步骤:

1. R3将数据链路帧复制到它的buffer。

2. R3解封装该数据链路帧。

3. R3在路由表中查找该目的IPv4地址。R3路由表中有直接连接到该网络的路由。这表示报文可直接发送到目的设备而无需发送至路由器。

由于输出接口是一个直连以太网,所以R3必须用ARP解析出目的IPv4地址的MAC地址。

1. R3在它的ARP cache中查找目的IPv4地址,如果此ARP cache中没有此表项,R3会从FastEthernet 0/0 接口发送ARP请求。PC 2回复ARP响应告知它的MAC地址。R3之后在ARP cache中更新192.168.4.10的MAC地址。

2. IPv4报文封装到新的以太网帧中并从R3的FastEthernet 0/0 接口发出。

3. 当PC 2接收到该帧,检查帧的目的MAC地址,与网卡接收端口的MAC地址相匹配,PC 2于是将帧的剩余部分复制到自己的buffer。

4. PC 2识别到以太网类型为0x800,也就是帧的数据部分包含IPv4报文。

5. PC 2解封装以太网帧,将IPv4报文传递给操作系统的IPv4进程。

路由表:

路由表存储的信息包括:

直连路径:来自活动路由接口的路径。当接口为活动状态并配置了IP地址时,路由器添加一条直连路径。

远端路径:远端的网络连接到其他路由。通过静态配置或动态路由协议到达该网络。

路由表是存储在RAM中的一份数据文件,用于存储直连以及远端网络的路由信息。路由表中包含网络或下一跳地址的信息。这些信息告知路由器可以通过将报文发送至代表下一跳地址的路由器以最佳路劲到达目的地址。下一跳信息也可以是到下一个目的地的输出接口。

路由表内容:

Cisco IOS路由器可用show IP route命令显示IPv4路由表。路由器还提供一些额外的路由信息,包括路径是怎样学习到的,路径在表中有多长时间,使用哪一接口去到达预定义的目的地。

路由表中的表项可作为以下内容添加:

本地路径接口:当接口配置并激活时添加。

直连接口:当接口配置并激活时添加。

静态路径:当手动配置路径并且输出接口激活时。

动态路由协议:当路由协议动态学习到网络时添加,如EIGRP或OSPF。

路由表项的来源通过代码来标识,代码表明路径是怎样学习到的。例如,常用代码包括:

L:路由器接口地址。当路由器接收到报文时发送至本地接口而无需转发。

C:直连网段。

O:通过OSPF从另一个路由器动态学习到的网络。

D:通过EIGRP从另一个路由器动态学习到的网络。

下图显示了R1的路由表:

d9f55eb30065798f7671dbeba2654bbd.png

远端网络路由表项:

下图显示了R1到远端网络10.1.1.0的表项:

61b32236beecbbad4b877a165bebce49.png

Route source:路径是怎样学习到的。

Destination network:远端网络地址。

Administrative distance:路由来源的可信度。较低值表明优先选择。

Metric:是路由算法用以确定到达目的地的最佳路径的计量标准。较低值表明优先选择。

Next hop:转发报文的下一个路由器的IP地址。

Route timestamp:自学习到路径以来过了多少时间。

Outgoing interface:用以转发报文的输出接口。

直连路由表项:

下图显示了R1到直连网络192.168.10.0的路由表项:

6be7eaeba9617375f6738703cc5ddb1b.png

在一个接口状态为up/up并添加到IPv4路由表之前,接口必须:

· 指定有效的IPv4或IPv6地址。

· 通过no shutdown命令激活。

· 从另一设备(路由器,交换机,主机等)接收到载体信号。

当接口up之后,该接口的网络作为直连网络添加到路由表中。

不做专业的网络工作,了解路由的基本知识即可,可以暂时不用关注静态路由和动态路由,了解本章知识足够。

往期知识

网络基本功二:细说交换机

网络基本功一:细说网络传输

为什么浏览器User-agent总是有Mozilla字样

10分钟了解JWT-JSON Web Token

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python函数的作用域_python学习第五篇 函数 变量作用域

原博文 2019-07-18 23:40 − 函数 函数是组合好的,可以重复使用的,用来实现单一或相关联功能的代码片段作用 能提高应用的模块性和代码的重复利用率函数的创建 第一函数的规则 1.函数代码块一def关键字开头,后接函数标识符名称和圆括号‘&…

python pip使用_Python——pip的安装与使用

pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具。Python 2.7.9 或 Python 3.4 以上版本都自带 pip 工具。pip 官网:https://pypi.o…

php文章列表样式,PHPCMS V9 文章列表循环样式自定义方法

在此,再次分享Whidy的文章"phpcms文章列表循环不同样式制作方法",下面CMSYOU来与大家具体分享,原地址为http://whidy.net/phpcms-list-with-different-style.html,在这里感谢。大家在用PHPCMS系统做网站的时候,有时候在…

查看ie保存的表单_解决浏览器保存密码自动填充问题

解决浏览器保存密码自动填充问题问题描述话说有一天,我如往常一样打开我的开发网站进行登录操作。浏览器很平常的在我们进行登录操作之后询问我是否需要记住密码,懒惰如我点击了记住密码。一切都很正常的进行着,没有什么异常发生。然而&#…

python mysql 正则表达式,MySQL之正则表达式(REGEXP)

MySQL中正则表达式通常被用来检索或替换符合某个模式的文本内容,根据指定的匹配模式匹配文中符合要求的特殊字符串。例如,从一个文件中提取电话号码,查找一篇文章中重复的单词或替换用户输入的敏感语汇等,这些地方都可以使用正则表…

pyecharts anaconda_Pyecharts安装使用和绘图案例

一次偶然的机会,接触了pyecharts,发现做图交互效果非常棒,便深究、摸索、入坑。这篇文章主要讲述自己在安装和使用中遇到的问题,解决方法,最后还会有pyecharts中自己比较喜欢的绘图功能。pyecharts是一款将python与ech…

如何把密度函数化为标准正态二维分布_概率微课:第三章(22) 二维随机变量及分布函数定义...

主要内容二维随机变量及分布函数定义更多系列视频概率微课:第二章(1) 随机变量的定义概率微课:第二章(2) 离散型随机变量概率微课:第二章(3) 两点分布及伯努利试验概率微课:第二章(4) 二项分布1概率微课:第二章(5) 二…

php中的缓,php中的缓存机制解释

php缓存的理解,先列出ob系列函数的作用:ob_start(func) 开启php缓存,回调函数是对缓存内数据的处理函数ob_gzhandler 作为 ob_start 的回调函数,对数据进行gz压缩ob_implicit_flush(true/false) 打开或关闭apache缓存&#xff0c…

php 下拉菜单多选get,Jquery实现select二级联动多选下拉菜单

前言平时虽然也有写前端,但是对于一些复杂的功能实现仍是一知半解。这次项目需要实现一个多选下拉菜单,并且该菜单要和上级下拉菜单保持联动。更加麻烦的是,我需要完成以下操作,以省、市二级联动菜单为例:选择河北省 &…

idea快捷键打开run的窗口_看了上篇文章,你不了解的IDEA操作……

注意作者:卡洛小豆。换种方式写文章,写的不好请多多见谅。未经授权,禁止转载夜,结束了一天的喧嚣后安静下来,伴随着远处路灯那微弱的光。风,毫无预兆地席卷整片旷野,撩动人的思绪万千。那是一个…

arma模型_Eviews经典案例 | 初学者必看!ARMA模型精讲

【本期分析师介绍】希音老师,《数据分析学堂》金牌分析师,对eviews的时间序列、ARMA、VAR、VECM、ARCH、GARCH等操作有深入的研究和实战经验,累计服务客户1000。今天邀请希音老师给大家分享eviews的详细操作步骤。长文预警!可在文末联系麻瓜学…

c# 路径下的最近文件夹_C#8.0的两个有趣的新特性以及gRPC

最近每天忙着跑很多地方,回家就不想动了,没什么心情写东西。今天有空,稍微写一点。下文中:关于C#语法特性的部分需要Visual Studio 2019支持。关于.NET Core的部分需要安装.NET 3.0 Preview4,低版本或许也可以但我没实…

alter table add column多个字段_ElementUI表格el-table表头固定自适应高度解决方案

一、前言ElementUI、iView都以相同的方式提供了表格组件表头固定的方法,即设置组件的height属性。表头固定很重要,就在于当表格数据项很多时,滚动条出现在表格组件内,而不是出现在表格组件外——这样的优点在于,滚动浏…

oracle ora 12011,执行oracle中的job报错:ORA-12011:无法执行作业1

LZ在做一个job执行每天新增一个表的操作时,存储过程运行没问题,job也创建成功,但运行job时,却报错: ,后又用sys用户登陆创建了同样的存储过程和job,结果可以执行成功。当时就猜测是权限问题。后…

e盘是否具有读写权限_轻松搭建MySQL主从复制、读写分离(双机热备)

主从复制: 当mysql数据库的数据量太大的时候,查询数据就很吃力了,无论怎么优化都会产生瓶颈,这时我们需要增加服务器设备来实现分布式数据库,实现多机热备份,要想实现多机的热备,首先要了解主从…

linux运维之道基础命令,Linux运维之道(7)——Linux管理类命令

(Linux)[系统管理]1. 目录管理类命令1.1 cd命令格式:cd [-L|[-P [-e]] [-]] [dir]被你忽略的小知识:在这里科普一个小小的知识点,就是关于cd -为什么可以自由的在当前目录和之前目录相互切换?其实,在我们的 Shell 的环…

html画图代码_python之matplotlib画图教程(2)

各位小表贝,你们的画图小老弟又来咯~上一次我们聊到了如何画离散图,这一次我们来点复杂的,准备好了么,系好安全带,准备发车咯~滴滴~我们先来点比较简单,那种易于上手的。如果现在我知道了两个点的坐标&…

python图像识别代码_用Python进行简单图像识别(验证码)

这是一个最简单的图像识别,将图片加载后直接利用Python的一个识别引擎进行识别 将图片中的数字通过 pytesseract.image_to_string(image)识别后将结果存入到本地的txt文件中 #-*-encoding:utf-8-*- import pytesseract from PIL import Image class GetImageDate(ob…

c++ map初始化_Go学习每日一问(18)-map元素查找

每次学习并整理一个Golang的知识点,每天进步一点点。今天学习下go中的一个知识点:map元素查找日省吾身1.下面代码中 A B 两处应该怎么修改才能顺利编译?func main() { var m map[string]int //A m["a"] 1 if v : m["b&q…

-bash: wget: 未找到命令_18个堪称神器的命令行工具,高效运维必备

上期入口:24个 CSS 高级技巧合集提示:因公众号不支持超链接,上图所有项目地址,可在公众号后台回复关键字 “命令行工具” 获取。thefuck命令行打错了以后,打一个fuck就会自动纠正。GitHub:https://github.c…