转自知乎:

作者:网工Fox
链接:https://www.zhihu.com/question/20099434/answer/1861866418
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

二层转发原理

交换机有多个网络端口,它通过识别数据帧的目标 MAC 地址,根据 MAC 地址表决定从哪个端口发送数据。MAC 地址表不需要在交换机上手工设置,而是可以自动生成的。

交换机是如何添加、更新、删除 MAC 地址表条目的?

在初始状态下,交换机的 MAC 地址表是空的,不包含任何条目。当交换机的某个端口接收到一个数据帧时,它就会将这个数据帧的源 MAC 地址、接收数据帧的端口号作为一个条目保存在自己的 MAC 地址表中,同时在接收到这个数据帧时重置这个条目的老化计时器时间。这就是交换机自动添加 MAC 地址表条目的方式。

在新增这一条 MAC 地址条目后,如果交换机再次从同一个端口收到相同 MAC 地址为源 MAC 地址的数据帧时,交换机就会更新这个条目的老化计时器,确保活跃的的条目不会老化。但是如果在老化时间内都没收到匹配这个条目的数据帧,交换机就会将这个老化的条目从自己的 MAC 地址表中删除

还可以手动在交换机的 MAC 地址表中添加静态条目。静态添加的 MAC 地址条目优先动态学习的条目进行转发,而且静态条目没有老化时间,会一直保存在交换机的 MAC 地址表中。

如何使用 MAC 地址表条目进行转发?

当交换机的某个端口收到一个单播数据帧时,它会查看这个数据帧的二层头部信息,并进行两个操作。一个操作是根据源 MAC 地址和端口信息添加或更新 MAC 地址表。另一个操作是查看数据帧的目的 MAC 地址,并根据数据帧的目的 MAC 地址查找自己的 MAC 地址表。在查找 MAC 地址表后,交换机会根据查找结果对数据帧进行处理,这里有 3 中情况:

  1. 交换机没有在 MAC 地址表中找到这个数据帧的目的 MAC 地址,因此交换机不知道自己的端口是否有连接这个 MAC 地址的设备。于是,交换机将这个数据帧从除了接收端口之外的所有端口泛洪出去。

  1. 交换机的 MAC 地址表中有这个数据帧的目的 MAC 地址,且对应端口不是接收到这个数据帧的端口,交换机知道目的设备连接在哪个端口上,因此交换机会根据 MAC 地址表中的条目将数据帧从对应端口单播转发出去,而其它与交换机相连的设备则不会收到这个数据帧。

  1. 交换机的 MAC 地址表中有这个数据帧的目的 MAC 地址,且对应端口就是接收到这个数据帧的端口。这种情况下,交换机会认为数据帧的目的地址就在这个端口所连接的范围内,因此目的设备应该已经收到数据帧。这个数据帧与其它端口的设备无关,不会将数据帧从其它端口转发出去。于是,交换机会丢弃数据帧。

单播:主机一对一的发送数据。单播地址是主机的 MAC 地址。 广播:向局域网内所有设备发送数据。只有全 1 的 MAC 地址为广播 MAC 地址,即 FF-FF-FF-FF-FF-FF泛洪:将某个端口收到的数据从除该端口之外的所有端口发送出去。泛洪操作广播的是普通数据帧而不是广播帧。

三层转发原理

路由器有多个端口,分别连接不同的数据链路。它通过识别目的 IP 地址的网络号,再根据路由表进行转发,路由表中有匹配的路由条目才会转发,无匹配的路由条目则直接丢弃。路由条目既可以手动设置静态路由,也可以通过路由协议自动生成动态路由。

路由器如何进行三层转发?

当一台路由器收到一个数据包时,会执行如下步骤:

  1. 对数据包进行解封装

通过解封装,查看网络层头部信息的目的 IP 地址

  1. 在路由表中查找匹配的路由条目

查找匹配的路由条目,就需要将数据包的目的 IP 地址与各个路由条目的网段地址先进行二进制与( AND )运算,再将运算结果与路由条目的网段地址进行比较,若一致则该条目与目的 IP 地址相匹配。最后,与所有路由条目完成运算和比较,可得到一条或多条相匹配的路由条目。也可能没有匹配的路由条目,那么丢弃数据包。

  1. 从多个匹配项中选择掩码最长的路由条目。

如果路由表中有多条路由条目都匹配数据包的目的 IP 地址,则路由器会选择掩码长度最长的路由条目,这种匹配方式称为最长匹配原则

例如:10.1.3.10 的网络地址与 10.1.3.0/16 和 10.1.3.0/24 两项都匹配,这时应该选择匹配度最长的 10.1.3.0/24 。

  1. 将数据包按照相应路由条目进行转发

路由条目中包含下一跳出接口。当路由器找到相应的路由条目后,它就会根据对应的下一跳和出接口,将数据包从出接口发送数据给下一跳设备。

ARP

只要确定了 IP 地址,就可以向这个目标地址发送 IP 数据报文。但是在进行实际通信时,还要知道每个 IP 地址所对应的 MAC 地址。

地址解析协议,简称 ARP 协议。是根据目的设备的 IP 地址来查询对应 MAC 地址的协议。

ARP 的工作原理

当主机 A 向同一个网段内的主机 C 发送数据,但是不知道主机 C 的 MAC 地址。

  1. ARP 请求:主机 A 以主机 C 的 IP 地址为目的 IP 地址,以广播 MAC 地址为目的 MAC 地址,在同网段内发送这个广播报文,这个报文就叫 ARP 请求报文

二层交换机不查看 IP 地址,根据目的 MAC 地址将报文除接收端口外的所有端口发送。

  1. ARP 响应:主机 C 发现目的 IP 地址是自己的 IP 地址,于是主机 C 以自己 MAC 地址和 IP 地址作为源 MAC 地址和源 IP 地址,以主机 A 的 MAC 地址和 IP 地址作为目的 MAC 地址和目的 IP 地址,发送响应报文给主机 A ,这个报文就叫 ARP 响应报文。其它主机收到主机 A 的 ARP 请求报文,因为目的 IP 地址不是自己的 IP 地址,因此不会进行响应。

当主机 A 在发送 ARP 广播请求报文时,二层交换机已经有主机 A 的 MAC 地址表条目。当收到主机 C 发送的单播 ARP 响应报文时,二层交换机将报文从相应端口发送出去。并将主机 C 的 MAC 地址和对应端口记录到 MAC 地址表中。

  1. 更新 ARP 缓存表:主机 A 收到 ARP 响应报文后,将主机 C 的 IP 地址和 MAC 地址记录到 ARP 缓存表中。下次再向主机 C 发送数据时,直接将缓存的目的 MAC 地址进行封装。

当主机 A 向不同网段的主机 C 发送数据,但是不知道主机 C 的 MAC 地址。

  1. 主机 A 使用主机 C 的 IP 地址查询 ARP ,ARP 发现主机 C 不在同一个网段,需要通过默认网关(即默认路由的下一跳地址),但是没有网关 MAC 地址;

  1. 主机 A 先将发送给主机 C 的数据放入缓存中,然后发送 ARP 请求报文,主机 A 以网关 IP 地址为目的 IP 地址发送 ARP 广播请求报文

  1. 路由器收到 ARP 广播请求报文后,将主机 A 的 MAC 地址和对应端口添加到自己的 MAC 表中,然后查看目的 IP 地址发现是请求自己的 MAC 地址,于是单播发送 ARP 响应报文

  1. 主机 A 收到 ARP 响应报文后,将发送给主机 C 的数据封装网关 MAC 地址为目的 MAC 地址进行发送;

  1. 路由器收到报文后,查看目的 IP 地址,是发送给主机 C 的,于是查询路由表从相应端口发送数据。由于没有主机 C 的 MAC 地址,路由器发送 ARP 请求报文,源 MAC 地址和源 IP 地址替换为发送端口的MAC 地址和 IP 地址;

  1. 主机 C 收到 ARP 请求报文后,添加路由器的端口和 MAC 地址到 MAC 地址表,单播发送 ARP 响应报文

  1. 路由器收到主机 C 的 MAC 地址后,将其添加到 MAC 地址表中。将主机 A 发送给主机 C 的报文重新封装,以自己的 MAC 地址为源 MAC 地址,以主机 C 的 MAC 地址为目的 MAC 地址,发送给主机 C ;

  1. 主机 C 收到主机 A 发送的数据,发送过程结束。

当主机 C 向主机 A 发送回复报文时,同主机 A 向主机 C 发送数据的步骤一致

计算机网络学习--交换机和路由器转发数据原理相关推荐

  1. 交换机与路由器技术:远程管理交换机和路由器工作原理、路由器转发数据包的封装过程

    目录 一.通过远程管理方式连接交换机 1.teInet是应用层协议基于传输层TCP,默认端口号:23 2.ssh是应用层协议基于传输层TCP默认端口号:22 3.思路 3.1.telnet 3.2.s ...

  2. 什么是交换机?描述一下工作过程?交换机基本功能、交换机是如何转发数据包的,什么是三层交换机?和二层交换机有什么区别?三层交换机是否可以代替路由器?为什么?

    ** 14. 什么是交换机?描述一下工作过程? ** 交换机是一种工作在数据链路层对流量进行转发的网络设备.主要应用于延长传输距离,解决冲突域,实现单播等功能. ** 工作过程: **当流量进入交换机 ...

  3. 计算机网络-学习交换机

    交换机是什么 交换机有什么作用 交换机如何传输数据包 交换机和和集线器.路由器的区别 交换机是什么 交换机是一种用于电(光)信号转发的网络设备,能连接多台设备形成一个局域网,简单来说就是可以把多台计算 ...

  4. TCPIP卷一(1):二层封装与路由器转发数据过程

    二层封装 为什么需要了解二层封装呢? 因为在一个路由器转发数据包的时候,除了知道目的地怎么去(有路由),还需要二层的正确封装,否则就算有路由的话,也无法进行通信. 这是卷一提到过的,虽然没有像协议卷一 ...

  5. 交换机和路由器的实现原理

    1.  请问 交换机和 路由器分 别的实现原理是什么? 分别在哪个层次上面实 现的?                  http://www.360doc.com/content/10/0803/18 ...

  6. 网络工程师学习必备!路由器的工作原理,你真的懂了吗?【超详细|深度解析】

    1. 什么是路由? 在数据通信网络中,通常存在着多个不同IP网段,想要使这些网段进行通信,就需要通过三层路由设备实现跨网段转发功能.路由指导着报文转发的路径信息,通过路由可以确定转发IP报文的路径. ...

  7. 计算机网络(三):IP协议,路由器转发,路由器和交换机的区别

    文章目录 一.IP协议 域名和IP的关系 IPV4地址不够要如何解决 二.路由器的分组转发流程 三.路由器和交换机的区别 一.IP协议 相比于TCP协议,IP 协议提供一种无连接/不可靠.尽力而为的数 ...

  8. 路由器转发数据包的封装过程

    ** 原理: ** 1.当一个高层的数据包到达传输层,由于telnet使用TCP协议,传输层将上层传过来的数据不变在封装TCP的包头以便目标主机可以正确解包,继续向下层(网络层)传递. 2.网络层同样 ...

  9. 路由器的工作原理,形成,转发数据包的过程

    一.路由器的工作原理 二.路由表的形成 三.静态路由和默认路由 四.路由器转发数据包的封装过程 五.静态路由和默认路由的配置 概述: 在只有一个网段的网络中,包可以很容易地从源主机到达目标主机,但是如 ...

最新文章

  1. 人工神经网络背后的数学原理!
  2. do-release-upgrade do not work
  3. 【OS】课设记录总结+进程整理
  4. 五、Chain链的作用
  5. YBTOJ洛谷P4331:数字序列(左偏树)
  6. 离奇的xenapp客户端无法加载应用故障解决过程 ...
  7. Hibernate——(3)主键生成策略持久化类的三种状态
  8. Redis命令详解:Hashs
  9. linux usb不识别,求助:USB无法识别
  10. 编程让鼠标一直动_华硕、罗技、海盗船无线鼠标选哪个?
  11. java 百度爬虫_零基础写Java知乎爬虫之先拿百度首页练练手
  12. Mysql-5.6.x多实例配置
  13. 2022年python大数据开发学习路线
  14. 数据库的内连接、左连接和右连接
  15. Win 10 深度隐藏文件夹命令
  16. 计算机汉字字形通常有两种字形编码,汉字字形编码有哪两种类型?各有什么特点?...
  17. 前端JavaScript的学习笔记
  18. Unity周围环境与光效调节[一]天空盒与天空盒反射的调节
  19. Quartz使用详解!
  20. linux系统车机怎么装app_原厂没有没关系,教你在车机上安装CarLife

热门文章

  1. 各种树:trie树、B树、B-树、B+树、B*树
  2. JZOJ__Day 1【NOIP普及模拟】MATRIX
  3. yamlcpp遍历_OpenCV文件输入和输出使用XML和YAML文件
  4. 多参量最优化matlab,fmincon函数优化多个参数
  5. awstats linux日志分析,Linux环境下安装部署AWStats日志分析系统实例
  6. python编译过程和解释过程的不同_Python编译/解释过程
  7. 神鬼世界更新完了为什么显示与服务器断开连接,神鬼世界9月26日正式服更新了哪些内容_神鬼世界9月26日维护到什么时候_快吧游戏...
  8. java8压缩,如何使用Java 8压缩多个列表?
  9. 20210614 So-called的用法
  10. mysql重置auto_increment字段