路由器和交换机的区别

article/2025/8/27 6:26:19

相信有很多人在学习网络的过程中,都会对路由器与交换机的区别与联系感到疑惑不解,因为这两台设备的功能看起来似乎一样。然而,其实路由器与交换机大有不同,下面是我对此的一些理解,希望能够帮助到你!

它们在哪里工作?

根据 OSI模型的网络体系划分,自底向上,路由器 工作在第三层(网络层),而我们常说的交换机 工作在第二层(链路层)(目前有更加高级的三层交换机,四层交换机,甚至还有七层交换机)。

它们怎么工作?

它们的主要工作如下:

路由器:寻址,转发(依靠 IP 地址)

交换机:过滤,转发(依靠 MAC 地址)

我们可以看出这两者的主要工作就是转发数据,但是不同之处是,依靠的地址不同,这是一个根本区别!

路由器内有一份路由表,里面有它的寻址信息(就像是一张地图),它收到网络层的数据报后,会根据路由表和选路算法将数据报转发到下一站(可能是路由器、交换机、目的主机)。

交换机内有一张MAC表,里面存放着和它相连的所有设备的MAC地址,它会根据收到的数据帧的首部信息内的目的MAC地址在自己的表中查找,如果有就转发,如果没有就放弃。

我们来看一个网络拓扑图例子:

通过拓扑图我们应该知道:

每一个路由器与其之下连接的设备,其实构成一个局域网;

交换机工作在路由器之下,就是也就是交换机工作在局域网内;

交换机用于局域网内网的数据转发;

路由器用于连接局域网和外网。

举个例子:

我们每个人相当于主机,路由器相当于快递员,宿管大爷相当于交换机,学校是一个局域网

快递员根据学校地址(IP)把包裹送到学校,再根据公寓号(子网IP)把快递交给这个公寓的宿管大爷,宿管大爷根据你的名字(MAC)交给你。

它们两个可不可以少一个?

交换机在局域网内工作,它根据 MAC 地址转发数据,如果没有了路由器在网络层寻址,那么我们的数据就不能发送到其他网络终端上去了

路由器内集成了交换机的功能,主机与路由器相连也可以实现数据转发,但是不足之处是:

可扩展的接口不如交换机多;

交换机通常由硬件加速转发,路由器主要靠软件寻址,速度慢。

实际网络数据转发过程

通过一个实际网络数据转发的过程,我们可以更好的理解路由器与交换机的区别所在

假设你使用电脑访问www.baidu.com

过程大致如下:

 你的电脑先在应用层打包一个 HTTP报文,然后在传输层在打包成 TCP报文,然后再根据 DNS 查到的 IP 在网络层打包成 IP数据报,然后在通过链路层打包成以太网数据帧,发送给你的交换机:

你的交换机收到后,重新包装数据帧,再发送给你的路由器:

你的路由器利用 NAT(Network Address Translation),将你的主机IP(局域网IP)转换为外网IP,还会修改端口号,对外完全隐藏你的主机,再根据路由表选择一条合适的路径进行转发:

在接下来的过程中,每个节点都只改变 MAC 地址,然后在网络中一路向着目的地发送

关于NAT:

NAT是一种网络隐蔽技术,它通过建立IP地址映射来隐藏内部的网络

它的主要功能有:

    提高内部网络的安全性

    共享网络地址,减少地址消耗

NAT主要有三种实现方式:

    静态NAT(Basic NAT):最基本的网络转换实现,只转换IP地址,建立IP地址的一对一映射,不支持端口转换

    网络地址端口转换(NAPT):这种方式支持端口的映射,并允许多台主机共享一个公网IP地址

    端口多路复用(Port address Translation,PAT):是指改变外出数据包的源端口并进行端口转换,即端口地址转换.采用端口多路复用方式。


http://chatgpt.dhexx.cn/article/D1RCqE0M.shtml

相关文章

交换机和路由器的区别

交换机(Switch) 是一种基于MAC(网卡的硬件地址)识别,能完成封装转发数据包功能的网络设备。交换机可以“学习”MAC地址,并把其存放在内部地址表中,通过在数据帧的始发者和目标接收者之间建立临时的交换路径,使数据帧直接由源地址到…

计算机网络-路由器和交换机的区别

经过了前面两篇博客,我们大概都认识了交换机和路由器了,那么再总结一下交换机和路由器的区别。 交换机和路由器都是网络硬件,那么主要区别是什么呢?按我理解,交换机是用来连接局域网的,路由器是用来连接互联…

常用第三方接口

作者:知乎用户 链接:https://www.zhihu.com/question/21608863/answer/123009622 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 聚合数据、百度APIStore、Apix、通联数据、HaoService、数说聚…

java对接第三方接口

1.准备与第三方接口对接的账号 配置到了Apollo上面 Value("${taofake.appId}")private String appId;Value("${taofake.url}")private String url;Value("${taofake.appSecret}")private String appSecret;2.准备用于接受接口返回结果的实体类 …

和第三方接口对接总结

接口对接分为两种形式: 我方A公司提供接口给B公司,B公司进行一些操作时调用我们的接口进行实现。 例:A开发会员等级同步接口,供B同步会员等级到B系统。B会员等级的变动需要调用A接口主动推送给A(即更新会员卡等级&am…

如何优雅的调用第三方接口

点击上方蓝色“java大数据修炼之道”, 选择“设为星标” 每晚九点: 技术干货 👉 必定奉上 来源:blog.csdn.net/qq_35860138/article/details/82967727 在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口。 # 使用流…

Java 调用第三方接口,实战来了!

在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口。 1、准备工作: 在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的restTemplate来调用,上面有调用接口的方法【分为Get和Po…

涉及到第三方支付接口该如何测试?

现在有不少测试朋友做的项目中,可能也会涉及到支付相关的功能。比如:做商城的,做游戏的以及其他在线交易的网站、APP等。如果支付出了问题,或者用户拿少的钱通过篡改请求数据购买大金额的商品,如果是实物的话&#xff…

第三方支付api接口是什么?

由于移动互联网的不断发展,从而产生了第三方和第四方支付,而第三方成为商业交易的环节不可缺失的一个总要部分,作为第三方,通过央行的授权,一般都覆盖了很多支付通道,给予需求企业最便捷、高效的接入方式&a…

Java 调用第三方接口方法

Java 调用第三方接口方法 一、 通过JDK网络类Java.net.HttpURLConnection 1.java.net包下的原生java api提供的http请求 使用步骤: 1、通过统一资源定位器(java.net.URL)获取连接器(java.net.URLConnection)。 2、设…

Java调用第三方接口示范

人工智能,零基础入门!http://www.captainbed.net/inner 在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口。 使用流程 【1】准备工作:在项目的工具包下导入HttpClientUtil这个工具类,或者…

调用第三方接口

快速使用:调用第三方接口获取数据(简易版)_myme95的博客-CSDN博客_调用第三方接口 controller层 private String jokeApiKey "40ff81dexxxxxxxxxxxx97a39d39";AutowiredApiService apiService;/*** 京东万象-笑话api*/GetMapping(…

国内7款API供应平台功能对比及详细介绍

我们都知道一句话“巧妇难为无米之炊”,数据源就是数据产生价值中的那些大米。那大数据时代企业需要哪些数据呢?根据我个人理解我觉得可以大致分为以下几类: 1、(内部)企业自身业务生产经营环节产生的内部数据【包括销…

Java Web系统常用的第三方接口

1. Web Service 接口 1.1 接口方式说明和优点 在笔者的开发生涯中,当作为接口提供商给第三方提供接口时,以及作为客户端去调用第三方提供的接口时,大部分时候都是使用 Web Service接口, Web Service作为接口使用广泛的…

进制转换2

进制之间的转换 本文转自:http://www.bloghome.cn/posts/38472 数学 /bullly 发表于2006-07-11, 18:08 不同进制之间的转换纯粹是数学上的计算。不过,你不必担心会有么复杂,无非是乘或除的计算。 生活中其实很多地方的计数方法都多少有点不…

计算机二进制

二进制转十进制 不考虑符号为 十进制转二进制 奇数要算一次 1 / 2 偶数不需要 计算 1 / 2 奇数要算一次 1 / 2 偶数不需要 计算 1 / 2 奇数要算一次 1 / 2 偶数不需要 计算 1 / 2 奇数要算一次 1 / 2 偶数不需要 计算 1 / 2 奇数要算一次 1 / 2 偶数不需要 计算 1 / 2 奇数…

-2进制

http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id4435 懵~ 后来问别人,他让我试着用二进制反推十进制,就晓得了(用(-2)^n)。 这个是学长写的代码 //我写的时候,将它先变成二进制,再给每…

进制.2

转自: http://www.d2school.com/bhcpp_book/5_8.php 5.8.1 十六进制 说到十六进制,首先会问:总共只有10个阿拉伯数字:0、1、2、3、4、5、6、7、8、9,如何表达“逢16进1”的概念呢?方法是用英文字母&#x…

二进制及二进制转换

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二” 二进制数(binaries)是逢2进位的进位制,0、1是基本算符 [2] &#xff1…

二进制?十进制!

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 给定两个十进制整数 : AAA,BBB 你需要把它们的二进制形式以十进制的运算法则相加输出结果。 例如: A3,B2A 3 , B 2A3,B2 的时候,AAA 的二进制表示是 : 111111 , BB…