草庐IT

第14节 单臂路由工作原理及简单单臂路由实验—基于Cisco Packet Tracer

像风一样9 2023-04-21 原文

单臂路由工作原理及简单单臂路由实验

1 引言

在前两节课的学习中,我们了解了VLAN及Trunk的作用,vlan的作用是控制广播域,不管是广播还是单播,不同的vlan间无法通信。为了便于管理,一个vlan规划为一个网段。以后看到某个网段或vlan,就知道属于哪个部门。
不同VLAN之间虽没有广播需求但仍有单播通信需求。对数据传输过程中分析发现,阻止不同VLAN之间通信的是交换机里的VLAN表,本节课程主要是分析如何实现不同VLAN之间的通信。

2 单臂路由

2.1 路由器子接口

(1)性质

  • 1) 子接口功能与物理接口一致,仅稳定性不如物理接口,当一个接口分化出子接口后,父接口自身无法再被使用,只是相当于通道。
  • 2) 属于3层接口,具备2层接口功能。
  • 3)是虚拟的,属于逻辑端口

(2)工作层级:工作于OSI模型第3层。
(3)不同子接口的MAC地址与父接口相同。
(4)路由器接口关于trunk及vlan的功能:路由器接口属于3层设备,默认不能配置trunk,但是具备2层设备接口识别VLAN标签、封装和解封装VLAN标签的能力,一个三层接口能够识别且只能识别一种标签,而且需要定义,若不定义三层接口是识别不了标签的。
(5)例子:如下图,当路由器F0/0接口设置为两个子接口f0/0.1及f0/0.2时,其本身不再发挥网关作用,由子接口各自承担各自网段的网关功能,绑定各自网段的网关IP。对于子接口f0/0.1,需要能封装与解封装VLAN10的标签,其他标签则丢弃,对于子接口f0/0.2同理。

tips:
1)对于交换机的access接口,会接收不同vlan的数据,不过接收后是否转发需要判断数据的vlan标签是否与自己所属vlan相同。而对于路由器接口,定义了vlan后才能识别vlan标签,而且不接收来自其他vlan的数据帧。
2)有多少个vlan相当于有多少个网段;有多少个vlan,路由器就创建多少个子接口。

2.2 工作原理

必须一个vlan一个网段。不同vlan间通信是靠路由来实现的。
(1)当CEO部门的员工A要对IT部门员工B通信时,PC首先判读目标IP地址与自身IP地址是否处于同一网段,发现不在同一网段时,需要找网关,(查看ARP缓存或发送ARP广播请求得到f0/0.1的MAC地址)将“网关MAC、自身MAC、类型;IP包头;数据……”等封装成数据帧,发送到交换机f0/1接口。
(2)交换机从f0/1接口收到数据帧后,f0/1接口根据vlan表为数据帧封装上相应的vlan标签,再送到交换机内部。
(3)交换机通过学习源MAC地址来更新MAC地址表,
(4)交换机再检查目标MAC地址,并匹配MAC地址表,将数据帧送到相应接口,发送给f0/24接口。
(5)交换机f0/24是Trunk接口,允许带各种VLAN标签的数据帧通过,发出时继续保留VLAN标签。
(6)路由器的两个子接口均只允许带有自己能识别的vlan标签的数据帧通过,因此只有f0/0.1子接口接收该数据帧。子接口接收后将vlan标签去除,组装成原装的数据帧。
(7)路由器子接口f0/0.1判断目标mac地址是不是自己的,发现是,将帧头帧尾解封装,并将IP包发送入路由器内部。
(8)路由器检查IP包头中的目标IP,并匹配路由表,检查路由表中是否有数据帧中的目标IP所在网段,有则路由到该接口,即子接口f0/0.2。
(9)子接口f0/0.2接受到数据帧,打上VLAN20标签(子接口f0/0.2只能识别、封装和解封装vlan20的标签),(查看ARP缓存或发送ARP广播请求得到B的MAC地址)将“B的MAC、自身MAC、类型;IP包头;数据……”等封装成数据帧,发送到交换机f0/24接口。
(10)交换机f0/24接口收到数据帧,由于是Trunk接口,允许带各种VLAN标签的数据帧通过,发送到交换机内部,发出时继续保留VLAN标签;
(11)交换机学习源MAC地址来更新MAC地址表,再检查目标MAC地址,并匹配MAC地址表,将数据帧送到相应接口,发送给f0/2接口,
(12)f0/2接口根据vlan表检查VLAN标签是否与自己同属于一个vlan,检查发现该接口同属于VLAN20,将VLAN标签去掉后发送数据帧。
(13)B收到数据帧,发现目标MAC及目标IP均是自己,解封装上传至OSI上层。
(14)至此,完成了不同vlan间的互相通信,网络间所有成员都能互相通信,但相比于未设置VLAN的网络,其最大的意义在于广播被控制在VLAN内部

3 拓展

4 单臂路由实验—基于Cisco Packet Tracer

按下述网络拓补图进行实验,

(1)PC端IP配置:手动配置IP地址、子网掩码、网关。

(2)对交换机进行设置,对交换机接口进行VLAN及Trunk设置

'''对交换机1进行设置'''
#对交换机接口进行VLAN及Trunk设置
en
conf t
ho SW1
vlan 10
exit
vlan 20
exit
int f0/1
switchport access vlan 10	#将接口f0/1划分至VLAN10。
exit
int f0/2
switchport access vlan 20	#将接口f0/2划分至VLAN20。
do show vlan brief			#查看vlan表配置结果
int f0/3
Switchport mode trunk		#设置该接口为Tunck
exit
int f0/10
Switchport mode trunk		#设置该接口为Tunck
exit
do show vlan brief			#查看vlan表配置结果
do write
'''对交换机2进行设置'''
#对交换机接口进行VLAN及Trunk设置
en
conf t
ho SW1
vlan 10
exit
vlan 20
exit
int f0/1
switchport access vlan 10	#将接口f0/1划分至VLAN10。
exit
int f0/2
switchport access vlan 20	#将接口f0/2划分至VLAN20。
exit
do show vlan brief			#查看vlan表配置结果
int f0/3
Switchport mode trunk		#设置该接口为Tunck
exit
do show vlan brief			#查看vlan表配置结果
do write


(3)对路由器进行设置

'''对路由器进行设置'''
en
conf t
int f0/0							
no shut								#总接口开启后,其下子接口才能开启
exit
int f0/0.1							#对f0/0创建第1个子接口,回车进入该子接口配置模式
encapsulation dot1q 10				#封装与解封装VLAN10
ip add 10.1.1.254 255.255.255.0 	#与实际接口类似,该子接口是10.1.1.0网段的虚拟网关
no shut								#开启子接口
exit
int f0/0.2							#对f0/0创建第2个子接口
encapsulation dot1q 20				#封装与解封装VLAN20,注意,需要先封装vlan标签再配ip,否则ip配不成功
ip add 20.1.1.254 255.255.255.0 	#与实际接口类似,该子接口是20.1.1.0网段的虚拟网关
no shut
exit
#功能检查
do show ip int b					#查看接口列表信息
do show run                        # 查看配置参数
do show ip route 					#查看路由表,该实验仅有两个网段以直连路由形式出现,故无需手动配置。



(4)验证:vlan1尝试ping vlan2,可以ping通。

tips:
在实验中,遇到两个地方需要注意下:
①在交换机1中,将f0/10设置为trunk接口时,并没有显示成功,vlan表中的vlan1中仍有f0/10,当将路由器配置完成后,交换机1中的f0/10才成功设置为trunk接口;
②在给路由器的子接口配IP时,先配的IP并开启后,再封装vlan标签。配置完成后查看路由器配置时,发现子接口的IP并没有配置成功,又重新将IP配置一遍。因此需要注意,接口需要定义vlan标签时,需要先定义再配IP。不知道是由于原理的问题,还是由于是软件的问题

5 归纳

(1)了解单臂路由的作用。
(2)掌握理解单臂路由的工作原理,重点理解整个通信过程中交换机、路由器的工作原理。
(3)掌握实验的逻辑过程以及熟悉相关命令。

参考文章

[1] 《单臂路由工作原理及简单实验
[2] 视频传送门

有关第14节 单臂路由工作原理及简单单臂路由实验—基于Cisco Packet Tracer的更多相关文章

  1. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  2. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  3. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  4. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  5. ruby-on-rails - rspec should have_select ('cars' , :options => ['volvo' , 'saab' ] 不工作 - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request

  6. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  7. ruby - 简单获取法拉第超时 - 2

    有没有办法在这个简单的get方法中添加超时选项?我正在使用法拉第3.3。Faraday.get(url)四处寻找,我只能先发起连接后应用超时选项,然后应用超时选项。或者有什么简单的方法?这就是我现在正在做的:conn=Faraday.newresponse=conn.getdo|req|req.urlurlreq.options.timeout=2#2secondsend 最佳答案 试试这个:conn=Faraday.newdo|conn|conn.options.timeout=20endresponse=conn.get(url

  8. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  9. ruby - rails 3 redirect_to 将参数传递给命名路由 - 2

    我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use

  10. ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章? - 2

    我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。

随机推荐