简介

  1. 二层转发通过查询FDB表实现,不对报文做任何修改。
  2. 三层转发通过查询路由表和arp表实现,路由表确定出接口,然后以出接口的MAC作为报文的源MAC;以报文的目的IP查询arp表获取下一跳MAC,以该MAC作为报文的目的MAC; 因此三层转发会修改报文的二层地址。

FDB表

一、 简介

  1. FDB表即二层MAC地址表。
  2. 记录MAC、端口、VLAN的对应关系。
  3. 用于二层转发。
  4. FDB表存有交换机发送端口与报文目的MAC地址的映射,有动态和静态两部分,当某个端口收到一个数据帧时,会将该数据帧的源MAC地址与端口的映射关系存储在FDB表中, 如果FDB表中已经存在该表项,更新该表项的老化时间。

二、 类别

  1. 动态地址表项
    最开始的时候,交换机FDB地址表中的所有地址表项都是动态的。如果经过一段时间(老化时间Agingtime)之后,设备没有数据传输,那么该地址表项就会被删除。这样能防止地址表项变得过于庞大,当确信某个设备从网络中去除后,就把该设备的地址表项删除掉。当交换机关机重启动或者reset时,所有的动态地址表项都将被删除。
  2. 固定地址表项
    如果老化时间(Agingtime)被设为0,那么该地址表项将存储在MAC地址表中而不会被动态删除,直到交换机关机或者重启。
  3. 永久地址表项
    永久地址表项将一直保存在MAC地址表中,即使交换机关机或者重启。永久地址表项必须由系统管理员手工设定。一个永久地址表项可以是一个单播地址,也可以是一个组播地址(本系统暂时不支持组播地址)。所有由命令行输入的静态地址表项都将被存储为永久地址表项。永久地址表项一经建立,不会老化,但会随交换机的配置变化而变化。

三、生成过程

(一)单个交换机

  1. 主机A会将一个源MAC地址为自己,目标MAC地址为主机B的数据帧发送给交换机。
  2. 交换机收到此数据帧后,首先将数据帧中的源MAC地址和对应的接口(接口为f 0/1) 记录到MAC地址表中。
  3. 然后交换机会检查自己的MAC地址表中是否有数据帧中的目标MAC地址的信息,如果有,则从MAC地址表中记录的接口发送出去,如果没有,则会将此数据帧从非接收接口的所有接口发送出去(泛洪:也就是除了Ethernet 0/0/1接口)。
  4. 这时,局域网的所有主机都会收到此数据帧,但是只有主机B收到此数据帧时会响应这个报文,并回应一个数据帧,此数据帧源MAC是主机B的MAC地址, 目的MAC是主机A的MAC地址。
  5. 当交换机收到主机B回应的数据帧后,也会记录数据帧中的源MAC地址(也就是主机B的MAC地址)和入接口到FDB表中,这时,再当主机A和主机B通信时,交换机根据MAC地址表中的记录,实现单播了。

(二)多个交换机

  1. 主机A将一个源MAC地址为自己,目标MAC地址主机C的数据帧发送给交换机1。
  2. 交换机1收到此数据帧后,会学习源MAC地址,并检查MAC地址表,发现没有目标MAC地址的记录,则会将数据帧泛洪出去,主机B和交换机2都会收到此数据帧。
  3. 交换机2收到此数据帧后也会将数据帧中的源MAC地址和对应的入接口记录到MAC地址表中,并检查自己的MAC地址表,发现没有目标MAC地址的记录,则会泛洪此数据帧。
  4. 主机C收到数据帧后,会响应这个数据帧,并回复一个源MAC地址为自己的数据帧,这时交换机2和交换机1都会将主机C的MAC地址和对应入接口记录到自己的MAC地址表中,并且以单播的形式将此数据帧发送给主机A。
  5. 这时,主机A和主机C通信就是一单播的形式传输数据帧了,主机B和主机C通信如上述过程一样,因此交换机2的MAC地址表中记录着主机A和主机B的MAC地址都对应接口Ethernet0/0/1。

(三)总结

  1. 从上面的两幅图可以看出,交换机具有动态学习源MAC地址的功能,并且交换机的一个接口可以对应多个MAC地址,但是一个MAC地址只能对应一个接口。
  2. 交换机动态学习的MAC地址默认只有300S的有效期,如果300S内记录的MAC地址没有通信,则会删除此记录。
  3. 报文经过交换机时只查FDB表进行转发,查不到则泛洪,不会修改报文内容。

ARP表

一、简介

  1. 记录IP与MAC的对应关系。
  2. 每台主机中保留着一张ARP表。
  3. ARP协议是工作在网络层的协议,它负责将IP地址解析为MAC地址。
  4. 用于三层路由转发时查询目的IP的下一跳MAC,填充为报文的目的MAC。

二、生成过程

  1. 如果主机A想发送数据给主机B,主机A首先会检查自己的ARP缓存表,查看是否有主机B的IP地址和MAC地址的对应关系,如果有,则会将主机A的MAC地址作为源MAC地址,ARP表中B的IP地址对应的MAC作为目的MAC封装到数据帧中。如果没有,主机A则会发送一个ARP请求信息,请求的目标IP地址是主机B的IP地址,目标MAC地址是MAC地址的广播帧(即FF-FF-FF-FF-FF-FF),源IP地址和MAC地址是主机A的IP地址和MAC地址。
  2. 当交换机接受到此数据帧之后,发现此数据帧是广播帧,因此,会将此数据帧从非接收的所有接口发送出去。
  3. 当主机B接受到此数据帧后,会校对IP地址是否是自己的,如果不是,丢包。如果是,将主机A的IP地址和源MAC地址的对应关系记录到自己的ARP缓存表中,同时会发送一个ARP应答,源IP和MAC是自己的地址。
  4. 主机A在收到这个回应的数据帧之后,在自己的ARP缓存表中记录主机B的IP地址和MAC地址的对应关系。而此时交换机已经学习到了主机A和主机B的MAC地址了(FDB表)。
  5. 如果一段时间,ARP中的表项没有用的,则回老化掉,再次使用时需要再次ARP请求。

三、免费ARP

(一)简介

  1. 免费 ARP(Gratuitous ARP)包是一种特殊的 ARP 请求,它并非期待得到 IP 对应的 MAC 地址,而是当主机启动的时候,发送一个 Gratuitous ARP 请求,即宣告自己的 IP 地址的 MAC 地址。
  2. 免费 ARP 报文与普通 ARP 请求报文的区别在于报文中的目标 IP 地址。普通 ARP 报文中的目标 IP 地址是其他主机的 IP 地址;而免费 ARP 的请求报文中,目标 IP 地址是自己的 IP 地址。

(二)作用

  1. 该类型报文起到一个宣告作用。它以广播的形式将数据包发送出去,不需要得到回应,只为了告诉其他计算机自己的 IP 地址和 MAC 地址。
  2. 可用于检测 IP 地址冲突。当一台主机发送了免费 ARP 请求报文后,如果收到了 ARP 响应报文,则说明网络内已经存在使用该 IP 地址的主机。
  3. 可用于更新其他主机的 ARP 缓存表。如果该主机更换了网卡,而其他主机的 ARP 缓存表仍然保留着原来的 MAC 地址。这时,可以发送免费的 ARP 数据包。其他主机收到该数据包后,将更新 ARP 缓存表,将原来的 MAC 地址替换为新的 MAC 地址。

路由表

一、简介

  1. 路由器负责不同网络之间的通信,它是当今网络中的重要设备,可以说没有路由器就没有当今的互联网。在路由器中也有一张表,这张表叫路由表,记录着到不同网段的信息。路由表中的信息分为直连路由和非直连路由。
  2. 直连路由:是直接连接在路由器接口的网段,由路由器自动生成 通过接口的IP和掩码生成。
  3. 非直连路由:就是不是直接连接在路由器接口上的网段,此记录需要手动添加或者是使用动态路由。
  4. 路由表中记录的条目有的需要手动添加(称为静态路由),有的动态获取的(称为动态路由)。直连路由属于静态路由。
  5. 路由器是工作在网络层的,在网络层可以识别IP地址。当路由器的某个接口收到一个包时,路由器会读取包的目的IP,然后在路由表中进行查找。如果在路由表中找到目标地址的路由条目,则把包转发到路由器的相应接口,如果在路由表中没有找到目标地址的路由条目,那么,如果路由配置默认路由,就科举默认路由的配置转发到路由器的相应接口;如果没有配置默认路由,则将该包丢弃,并返回不可到达的信息。

二、生成过程

  1. HostA在网络层将来自上层的报文封装成IP数据包,其中源IP地址为自己,目标IP地址是HostB,HostA会用本机配置的24位子网掩码与目标地址进行“与”运算,得出目标地址与本机不是同一网段,因此发送HostB的数据包需要经过网关路由AR1的转发。
  2. HostA通过ARP请求获取网关路由AR1的E0口的MAC地址,并在链路层将E0接口的MAC地址封装成目标MAC地址,源MAC地址是自己。
  3. 路由器A从E0接口接收到数据帧,把数据链路层的封装去掉,并检查路由表中是否有目标IP地址网段(即192.168.2.2的网段)相匹配的的项,根据路由表中记录到192.168.2.0网段的数据请发送给下一跳地址10.1.1.2,出接口时E1,因此数据在路由器A的E1口重新封装,此时,源MAC地址是路由器A的E1接口的MAC地址,封装的目标MAC地址则是路由器AR2的E0接口的MAC地址。
  4. 路由AR2从E0口接收到数据帧,同样会把数据链路层的封装去掉,对目标IP地址进行检测,并与路由表进行匹配,此时发现目标地址的网段正好是自己E1口的直连网段,出接口是E1口,路由器AR2通过ARP广播,获知HostB的MAC地址,此时数据包在路由器AR2的E1接口再次封装,源MAC地址是路由器AR2的E1接口的MAC地址,目标MAC地址是HostB的MAC地址。封装完成后直接从路由器AR2的E1接口发送给HostB。
  5. 此时HostB才会收到来自HostA发送的数据。

三、总结

  1. 路由表负责记录一个网络到另一个网络的路径,因此路由器是根据路由表工作的。

总结

  1. 三层转发先调用路由表查询路由信息,获取出接口;然后查询arp表获取下一跳mac。
  2. FDB表:MAC,PORT,VLAN的对应。
  3. ARP表:IP与MAC的对应。
  4. 路由表:IP网段与IP网段的对应。

FDB表-ARP表-路由表相关推荐

  1. 路由表(RIB表、FIB表)、ARP表、MAC表整理

    在一些常见的网络设备中(如交换机.路由器),为了实现网络转发功能,各自通过维护一些表项来完成路由寻址及快速转发功能,其中比较重要的表项有: 路由表 转发表 Mac表 ARP表 本文对这网络中的最关键的 ...

  2. RIB表与FIB表、ARP表与FDB表

    1.RIB与FIB的区别: RIB:路由表 FIB:转发信息表 FIB表更多是出现在需要快速转发的路由器上,这种路由器上的路由表条目通常都达成千上万条,如果按照传统的检索路由表进行转发的方式,其转发效 ...

  3. (主机)ARP表(ip/mac)、(交换机)交换/转发/MAC表(mac端口 同一网段)、(路由器)路由表(不同网段)

    reference 转发表(Forwarding Table) MAC地址 以太网地址或物理地址 它是一个用于确认网络设备位置的地址 每个网络设备(如网络适配器(Network Adapter), 即 ...

  4. [转载]ARP表和FDB表的区别

    摘自于:http://blog.csdn.net/lanlicen/article/details/6333694 ARP表:IP和MAC的对应关系: FDB表:MAC+VLAN和PORT的对应关系: ...

  5. 【数通网络交换基础梳理2】三层设备、网关、ARP表、VLAN、路由表及跨网段路由下一跳转发原理

    一.不同网段如何通讯 同网段可以依靠二层交换机通讯,网络中存在多个网段192.168.1.1/24 172.16.1.1/24 173.73.1.1/24情况下如何互相通讯?上节留一下的问题,这节继续 ...

  6. MAC表,ARP表,路由表总结

    全文概要 计算机网络中一个关键步骤在于通信路径上不同节点对于流经本节点的数据包转发,常见的交换设备主要是交换机(第二层.三层)和路由器(第三层),在实际运行时,它们各自维护一些表结构帮助完成数据包的正 ...

  7. 【博客432】FDB与MAC表

    FDB表与MAC表 两个最大的区别在于ARP是三层转发,FDB是用于二层转发. 也就是说,就算两个设备不在一个网段或者压根没配IP,只要两者之间的链路层是连通的,就可以通过FDB表进行数据的转发! F ...

  8. 到底什么时候创建的ARP表项

    一周前遇到一个问题,比较简单但值得推敲.到底什么时候创建arp邻居项呢?是在查路由的时候呢,还是在实际走路由的时候?   我们知道,在2.6.32的内核里,在查路由操作的最后,会有一个arp bind ...

  9. Python通过snmp获取交换机VLAN号、VLAN默认网关、VLAN子网掩码和ARP表中的IP地址与MAC对应记录数据

    自己做项目时,自己封装的Python通过snmp获取交换机VLAN号.VLAN默认网关.VLAN子网掩码和ARP表中的IP地址与MAC对应记录数据. myPySnmp.py源代码 "&quo ...

  10. SylixOS网络协议栈---Lwip协议栈之ARP表

    1 适用范围 本文档适用于分析SylixOS网络相关问题的技术人员. 2 ARP介绍 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个 ...

最新文章

  1. docker desktop使用入门
  2. 如何查找并干掉僵尸进程
  3. 文件_ _android从资源文件中读取文件流并显示的方法
  4. 经典mysql语句_经典MYSQL语句
  5. 不就是个短信登录API嘛,有这么复杂吗?
  6. python 二分查找_二分查找算法总结
  7. 您是否敢更改HashMap实现?
  8. githooks_使用Githooks改善团队的开发工作流程
  9. 第二部分_搭建Java Web开发环境与配置Tomcat服务器JSP详解
  10. java执行查询postgresql得到中文乱码_Greenplum: 基于PostgreSQL的分布式数据库内核揭秘(上篇)...
  11. Html5不可见标签,及标签属性(元素对象属性) a href target name id 相对路径
  12. Python中字符串格式化输出的学习笔记
  13. Spring data jpa Specification查询关于日期的范围搜索
  14. python学习之老男孩python全栈第九期_day022作业
  15. java诸神47723_诸神战纪二-死神之谜
  16. 在一个窗体的panel控件中显示其他窗体
  17. 什么句子可以暗示自己恋爱了?
  18. win10虚拟机连接服务器失败怎么办,Win10虚拟机无法连接网络的解决方法教程
  19. 测试Java Stream流 parralle与 sequential的效率
  20. JavaScript深入系列-冴羽博客读后总结

热门文章

  1. Hyper-V虚拟机和虚拟化服务器区别
  2. STC15单片机-无线通讯(WIFI模块)
  3. c语言程序怎么实现模块化,【干货】教你如何对一个大的项目进行模块化编程...
  4. linux系统下的图书管理系统,LINUX下基于SOAP的图书管理系统的研究与实现
  5. 随机前沿方法和数据包络分析
  6. socket通信压力测试
  7. 35 红外接收头在linux内核里的驱动
  8. 毕业设计—基于FPGA的极化码译码研究
  9. mac修改锁定文件的解决方法
  10. 吃透空洞卷积(Dilated Convolutions)