如图所示,假如主机A想访问主机B,首先主机A会将自己的IP地址和子网掩码做与操作,得出网路地址(如:Host-A的IP地址100.1.1.2与自身掩码255.255.255.0做与操作后,得到的网络号是100.1.1.0).然后判断目的IP地址(即Host-B的IP地址)与自己的网络地址是不是在同一个子网.因为图中主机A和主机B不在同一子网内,所以需要进行三层转发.


1、主机A发送ARP广播获取网关MAC地址

主机A想访问主机B首先要有主机B的MAC地址,由于主机A和主机B不在同一子网,所以主机A首先会向缺省网关发送ARP广播报文来获取网关的MAC地址。ARP报文格式如下:

Ethernet头

ARP头

D-MAC

S-MAC

S-MAC

S-IP

D-MAC

D-IP

ff:ff:ff:ff:ff:ff

00e0-d26b-8121

00e0-d26b-8121

100.1.1.2

00:00:00:00:00:00

100.1.1.1


2、交换机形成主机A的MAC表项,并用网关MAC地址回应主机A的ARP请求

交换机收到ARP广播报文后,首先学习ARP报文Ethernet头部的源MAC地址,交换机芯片将自动记录主机A的MAC地址(00e0-d26b-8121)、接收该ARP报文的交换机接口号(E1/0/0)及此接口所属的VLAN(VLAN 10)等信息,并形成一条MAC表项放入交换机MAC表中.同时,交换机也会通过软件把主机A的IP、MAC、上连到交换机的接口等信息保存到交换机的硬件转发表里(三层硬件表项,MAC表是没有IP的)。

由于主机A发送的ARP广播报文中的目的IP地址(100.1.1.1)就是交换机上接收该ARP广播报文的接口(E1/0/0)所属VLAN(VLAN 10)的IP地址,所以交换机将使用vlan10的MAC地址回复主机A的ARP请求。ARP回复报文如下:

Ethernet头

ARP头

D-MAC

S-MAC

S-MAC

S-IP

D-MAC

D-IP

00e0-d26b-8121

00e0-d26b-8111

00e0-d26b-8111

100.1.1.1

00e0-d26b-8121

100.1.1.2


3、主机A把网关MAC当作主机B的MAC访问主机B

主机A收到网关的ARP回应报文后,会把网关的MAC地址当成是主机B的MAC地址,这样主机A发送数据给主机B时就会使用网关MAC作为目的MAC来封装数据侦,侦格式如下:

Ethernet头

IP头

数据

D-MAC

S-MAC

S-IP

D-IP

DATA

00e0-d26b-8111

00e0-d26b-8121

100.1.1.2

200.1.1.2

……


4、交换机查找硬件转发表/路由表进行三层转发

交换机收到主机A发来的数据报文后,仍然会首先学习数据报文Ethernet头部的源MAC地址,然后根据Ethernet头部的目的MAC查找交换机的MAC表,此时发现目的MAC地址就是本地VLAN的MAC地址,这种情况下交换机会把该报文上送到交换芯片的三层引擎处理。三层引擎将首先查找硬件转发表。

⑴ 如果硬件转发表中有匹配项,则根据报文目的IP地址作相应处理:

①、目的IP地址就是本地的IP地址,则交相应模块处理。

②、目的IP是其他设备IP地址,本地只是转发,则根据硬件转发表项使用出接口MAC替换报文的源MAC地址,用下一跳MAC替换报文的目的MAC地址,同时TTL值减1,继续转发。(此处与二层的区别在于需要对报文进行源、目的MAC进行替换)

⑵  如果不匹配则查找路由表,有匹配项则按照上面(2)中的操作进行,同时把相应的目的IP、下一跳MAC、出接口等信息存储到硬件转发表项中,下次就不需要查路由表了,这就是所谓的一次路由多次交换。

⑶  如果路由表也没有匹配项,则丢弃报文。

此处,由于主机A数据报文的目的IP是主机B的地址,并且主机B和交换机直连,交换机的硬件转发表/路由表已经有主机B的路由表项,所以交换机将主机A发来的报文中的源、目的MAC地址作替换,同时TTL值减1,然后发给主机B。经过MAC替换后的报文格式如下:

Ethernet头

IP头

数据

D-MAC

S-MAC

S-IP

D-IP

DATA

00e0-d26b-8212

00e0-d26b-8222

100.1.1.2

200.1.1.2

……

这样主机A就把数据报文发到了不同网段的主机B。同时交换机上也保存了关于主机A和主机B的硬件转发表项,以后主机A和主机B互访,以及其他网段主机访问主机A或主机B交换机就可以根据硬件转发表项直接转发,而不需要查找路由表。

如图所示,假如主机A想访问主机B,首先主机A会将自己的IP地址和子网掩码做与操作,得出网路地址(如:Host-A的IP地址100.1.1.2与自身掩码255.255.255.0做与操作后,得到的网络号是100.1.1.0).然后判断目的IP地址(即Host-B的IP地址)与自己的网络地址是不是在同一个子网.因为图中主机A和主机B不在同一子网内,所以需要进行三层转发.


1、主机A发送ARP广播获取网关MAC地址

主机A想访问主机B首先要有主机B的MAC地址,由于主机A和主机B不在同一子网,所以主机A首先会向缺省网关发送ARP广播报文来获取网关的MAC地址。ARP报文格式如下:

Ethernet头

ARP头

D-MAC

S-MAC

S-MAC

S-IP

D-MAC

D-IP

ff:ff:ff:ff:ff:ff

00e0-d26b-8121

00e0-d26b-8121

100.1.1.2

00:00:00:00:00:00

100.1.1.1


2、交换机形成主机A的MAC表项,并用网关MAC地址回应主机A的ARP请求

交换机收到ARP广播报文后,首先学习ARP报文Ethernet头部的源MAC地址,交换机芯片将自动记录主机A的MAC地址(00e0-d26b-8121)、接收该ARP报文的交换机接口号(E1/0/0)及此接口所属的VLAN(VLAN 10)等信息,并形成一条MAC表项放入交换机MAC表中.同时,交换机也会通过软件把主机A的IP、MAC、上连到交换机的接口等信息保存到交换机的硬件转发表里(三层硬件表项,MAC表是没有IP的)。

由于主机A发送的ARP广播报文中的目的IP地址(100.1.1.1)就是交换机上接收该ARP广播报文的接口(E1/0/0)所属VLAN(VLAN 10)的IP地址,所以交换机将使用vlan10的MAC地址回复主机A的ARP请求。ARP回复报文如下:

Ethernet头

ARP头

D-MAC

S-MAC

S-MAC

S-IP

D-MAC

D-IP

00e0-d26b-8121

00e0-d26b-8111

00e0-d26b-8111

100.1.1.1

00e0-d26b-8121

100.1.1.2


3、主机A把网关MAC当作主机B的MAC访问主机B

主机A收到网关的ARP回应报文后,会把网关的MAC地址当成是主机B的MAC地址,这样主机A发送数据给主机B时就会使用网关MAC作为目的MAC来封装数据侦,侦格式如下:

Ethernet头

IP头

数据

D-MAC

S-MAC

S-IP

D-IP

DATA

00e0-d26b-8111

00e0-d26b-8121

100.1.1.2

200.1.1.2

……


4、交换机查找硬件转发表/路由表进行三层转发

交换机收到主机A发来的数据报文后,仍然会首先学习数据报文Ethernet头部的源MAC地址,然后根据Ethernet头部的目的MAC查找交换机的MAC表,此时发现目的MAC地址就是本地VLAN的MAC地址,这种情况下交换机会把该报文上送到交换芯片的三层引擎处理。三层引擎将首先查找硬件转发表。

⑴ 如果硬件转发表中有匹配项,则根据报文目的IP地址作相应处理:

①、目的IP地址就是本地的IP地址,则交相应模块处理。

②、目的IP是其他设备IP地址,本地只是转发,则根据硬件转发表项使用出接口MAC替换报文的源MAC地址,用下一跳MAC替换报文的目的MAC地址,同时TTL值减1,继续转发。(此处与二层的区别在于需要对报文进行源、目的MAC进行替换)

⑵  如果不匹配则查找路由表,有匹配项则按照上面(2)中的操作进行,同时把相应的目的IP、下一跳MAC、出接口等信息存储到硬件转发表项中,下次就不需要查路由表了,这就是所谓的一次路由多次交换。

⑶  如果路由表也没有匹配项,则丢弃报文。

此处,由于主机A数据报文的目的IP是主机B的地址,并且主机B和交换机直连,交换机的硬件转发表/路由表已经有主机B的路由表项,所以交换机将主机A发来的报文中的源、目的MAC地址作替换,同时TTL值减1,然后发给主机B。经过MAC替换后的报文格式如下:

Ethernet头

IP头

数据

D-MAC

S-MAC

S-IP

D-IP

DATA

00e0-d26b-8212

00e0-d26b-8222

100.1.1.2

200.1.1.2

……

这样主机A就把数据报文发到了不同网段的主机B。同时交换机上也保存了关于主机A和主机B的硬件转发表项,以后主机A和主机B互访,以及其他网段主机访问主机A或主机B交换机就可以根据硬件转发表项直接转发,而不需要查找路由表。

交换机开发(二)—— 三层交换机报文转发过程相关推荐

  1. MPLS virtual private network报文转发过程

    概述: 首先数据流由CE 到PE使用的是IP转发,这个很容易理解.而数据流要经过骨干网,因为骨干网内部Р路由器没有私网路由,也就是没办法使用P转发,这时就应该想到用MPLS标签转发技术.在IP报文进入 ...

  2. 二层交换机 不在同一子网_从二层交换机来说为什么三层交换机比路由器转发速率快...

    我们都知道二层交换机工作的数据链路层,依靠mac地址来进行数据通信的,而路由器是工作在网络层,依靠ip地址来通信的,为了说明三层交换机比路由器的转发速率快,那我们还是先从二层交换机入手. 首先我们来比 ...

  3. 详细Ping过程描述(二、三层转发)

    ※ 首先要了解 ①    源主机在发起通信之前,将自己的IP与目的主机的IP进行比较,如果两者位于同一网段(用网络掩码计算后具有相同的网络号),那么源主机发送arp请求广播报,请求目的主机的mac地址 ...

  4. 基于ping的过程学习二、三层转发之三(ARP表、FDB表、路由表详解)

    六.交换机的MAC表(FDB表) 交换机的MAC地址表存有交换机端口与MAC地址的映射,同样分有动态和静态两部分, 当某个端口收到来自于某个MAC地址处发来的帧数据时,会将该MAC地址与端口的映射关系 ...

  5. 交换机开发(一)—— 交换机的工作原理

    一.交换机的工作原理 当交换机收到数据时,它会检查它的目的MAC地址,然后把数据从目的主机所在的接口转发出去.交换机之所以能实现这一功能,是因为交换机内部有一个MAC地址表,MAC地址表记录了网络中所 ...

  6. 【转】交换机开发(一)—— 交换机的工作原理

    一.交换机的工作原理 当交换机收到数据时,它会检查它的目的MAC地址,然后把数据从目的主机所在的接口转发出去.交换机之所以能实现这一功能,是因为交换机内部有一个MAC地址表,MAC地址表记录了网络中所 ...

  7. 交换机开发(三)—— 深入分析三层网络交换机的原理和设计

    引言 传统路由器在网络中起到隔离网络.隔离广播.路由转发以及防火墙的作业,并且随着网络的不断发展,路由器的负荷也在迅速增长.其中一个重要原因是出于安全和管理方便等方面的考虑,VLAN(虚拟局域网)技术 ...

  8. vxlan 分布式网关数据包转发过程_Vxlan基础

    一.为什么需要Vxlan 普通的VLAN数量只有4096个,无法满足大规模云计算IDC的需求,而IDC为何需求那么多VLAN呢,因为目前大部分IDC内部结构主要分为两种L2,L3.L2结构里面,所有的 ...

  9. (基于Packet Tracer 的校园网络设计方案(计算机网络与课程实验)(三)——Run Time 观察报文传输过程

    基于Packet Tracer 的校园网络设计方案(计算机网络与课程实验)(三)--Run Time 观察报文传输过程 前言 一.Part 1 - A楼内部通信时的报文传输过程 1. 子网 A1内部的 ...

最新文章

  1. ES既是搜索引擎又是数据库?真的有那么全能吗?
  2. linux多进程条件变量,Linux 多线程条件变量同步
  3. hdu4400 BFS+STL
  4. 5、VTK在图像处理中的应用
  5. Linux kernel分析前的准备
  6. Pytorch:GAN生成对抗网络实现二次元人脸的生成
  7. HttpOperater
  8. hack 入侵 142 主机的过程
  9. WeCenter3.1.7 blind xxe 分析
  10. mysql外连接基准表_4.mysql数据库创建,表创建模等模板脚本,mysql_SQL99标准的连接查询(内连接,外连接,满外连接,交叉连接)...
  11. Js判断本地是否存在要存数据
  12. 太阳跟踪 matlab,太阳能和最大功率点跟踪
  13. LAMP架构部署论坛
  14. Excel十八个快捷键
  15. oppok1掉色吗?_如何对旧的褪色照片进行色彩校正
  16. ToothFairy for Mac(一键连接蓝牙设备软件) v2.4.5免激活版
  17. html基础之好看的header
  18. 12C DELETE FROM wri$_adv_sqlt_rtn_planWHERE task_id = :tid AND exec_name = :execution_name
  19. Kaggle如何取得top 2%,这篇文章告诉你!
  20. wkwebview替换uiwebview_使用WKWebView替换UIWebView

热门文章

  1. pmp 成本估算准确高_如何更准确地估算JavaScript中文章的阅读时间
  2. java开发第一天上班_从第一天开始,如何成为一名优秀的团队合作伙伴,成为初级开发人员
  3. react中使用构建缓存_通过在React中构建Tic Tac Toe来学习ReasonML
  4. 数据科学领域有哪些技术_领域知识在数据科学中到底有多重要?
  5. 1.7Oob 继承关系中构造方法的使用
  6. 4-----Scrapy框架中选择器的用法
  7. 一、在windows环境下修改pip镜像源的方法(以python3为例)
  8. python装饰器的使用
  9. ansible---基础
  10. Why is processing a sorted array faster than an unsorted array?