当前位置: 首页 > news >正文

计算机网络——交换机和路由器

目录

前言

引言

交换机是用来做什么的?

与路由器有什么区别?

网关

子网掩码

网关、路由


前言

本博客是博主用于复习计算机网络的博客,如果疏忽出现错误,还望各位指正。

这篇博客是在B站掌芝士zzs这个UP主的视频的总结,讲的非常好。

可以先去看一篇视频,再来参考这篇笔记(或者说直接偷走)。

交换机和路由器有什么区别?网关和路由又是什么意思?简单说网络2-交换机与路由器_哔哩哔哩_bilibili

引言

说起来路由器想必大家不会陌生,每个家庭都会至少有一个路由器来连接网络设备。那么交换机、路由器、网关和子网……都是什么?一下进行介绍。

交换机是用来做什么的?

我们先来看一下交换机,它的主要功能就是把数据包发送到正确的位置。

比如当你写了一份信给友人,交换机相当于邮递员,根据数据包中的目标MAC地址找到它对应的物理端口。

一台交换机有很多个端口,他们都有自己的编号。计算机的网卡通过网线连接到交换机的网口上,这个端口就是一个确定的物理位置。只要知道某个网卡的MAC地址在哪个端口上,就能正确的把数据包发给他。

所以在交换机中有一张端口与MAC地址的映射关系表,我们称之为MAC地址表。(交换机具有自学习功能,每次发送会把源地址存在交换表中如果没有的话)

然后要注意的是,为了避免兜圈子的问题,IEEE的802.1D标准制定了一个生成树协议STP。其要点就是不改变网络的实际拓扑,但在逻辑上切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构。

交换机维护这张映射关系想要与某个MAC地址通信时,只需要来查询一下这个MAC地址在哪个端口上,然后从对应的端口发送出去就可以了。

我们知道每一包数据都会有两个MAC地址,一个是发送方的MAC地址,称为源MAC。另一个是接收方的MAC地址,称为目标MAC。

交换机收到一包数据后,首先要把这包数据的源MAC与接收端口进行绑定(如果先前没绑定)。

然后交换机要根据目标MAC查找从哪个端口把数据包发送出去。

这时候就会出现两种情况:

第一种情况是MAC地址表中查询到了关联的端口,则直接从关联端口发出。

第二种情况是MAC地址表中没有查询到关联端口,则向除了接收端口之外的所有端口群发,这种行为称之为泛洪。(按我的理解就是广播帧)。

如果目标MAC地址在这个网络中,则他一定能收到群发的数据包。

如此运行一段时间之后,通过交换机的MAC地址表就可以找到网络中的所有网卡设备。

由此可见,交换机只会关心数据包中的MAC地址,而不会关心IP地址。

MAC地址在TCPIP协议中处于第二层数据链路层,所以交换机通常也被称为二层设备。

与路由器有什么区别?

我们再来看一下路由器,我们知道路由器有两种接口,一种是LAN口,一种是WAN口。

LAN口可以有多个用来接家庭网络设备,比如台式机、手机、笔记本。

其中手机和笔记本是通过wifi连接到路由器的设备,也相当于连接到了LAN口。

WAN口只有一个,用来接入运营商网络,连接到互联网中。如果把路由器的WAN口忽略,只用LAN口,其实路由器就是一台交换机。

网关

那如果考虑到WAN口,这里我们就要引入一个概念就是网关。

子网掩码

为了说明网关的作用,我们需要先了解一下子网是如何划分的。

我们把IP地址和子网掩码按位相与(&)。

我们常用的子网掩码255.255.255.0前三个字节全为1,后八位全为0。

所以按位相与的结果一定是这个IP地址的前三个字节不变,而最后一个字节是零。

比如192.10.18.26与255.255.255.0相与就是192.10.18.0。

我们把IP地址与子网掩码相与之后的结果相同的两个IP认为是在同一个子网中。

也就是说IP为192.10.18.26时,子网掩码为255.255.255.0的这张网卡与另一个192.10 .18.X的网卡一定是在同一个子网之中。

因为子网掩码都是连续的1和连续的0,所以我们通常用1的数量来表示子网掩码。比如255.25.255.0就是24。(前三个字节,一个字节8bit,也就是24位)。

我们用IP斜杠子网掩码来表示一个网络,比如192.168.1.0/24表示的网络中拥有255个IP地址。

所以如果想扩大子网中IP地址的数量,我们只需要把子网掩码调小。比如多加一位,ip数量就会减少;如果想减少子网中IP地址的数量,我们只需要把子网掩码调大就可以了。

网关、路由

TCP/IP协议规定不同子网之间是不可以直接通信的。如果要通信,需要通过网关来进行转达。

网关上有两张网卡,分别配置了属于两个子网的IP地址,可以在两个网络之间转发数据包,这样我们就拥有了一个连接了两个子网的网络。

我们来举一个简单的例子,子网一中的计算机A发送数据包时,首先计算机A会根据目标IP判断是否跟自己处于同一个子网。

如果是同一个子网,则直接从网卡发出。

如果不是同一个子网,则需要把数据包的目标MAC地址改为网关MAC然后发送给网关。网关拿到这一包数据后,再通过路由表查询到这一包数据属于子网二。网关修改目标MAC地址为计算机B的MAC地址,修改源MAC为自己的MAC,然后从子网二的网卡发出。

以上出现了多次根据目标IP判断数据包应该如何发送的行为,我们就称之为路由。

路由器有一个WAN口接入互联网,多个LAN口接入本地网络,它们就分别属于两个不同的子网。所以从内网访问互联网就是跨网络的行为。LAN连家里,WAN连世界!

这时候就需要路由器来担任网关的角色,他的行为也叫路由。

相关文章:

计算机网络——交换机和路由器

目录 前言 引言 交换机是用来做什么的? 与路由器有什么区别? 网关 子网掩码 网关、路由 前言 本博客是博主用于复习计算机网络的博客,如果疏忽出现错误,还望各位指正。 这篇博客是在B站掌芝士zzs这个UP主的视频的总结&am…...

Redis Pipelining 底层原理分析及实践

作者:vivo 互联网服务器团队-Wang Fei Redis是一种基于客户端-服务端模型以及请求/响应的TCP服务。在遇到批处理命令执行时,Redis提供了Pipelining(管道)来提升批处理性能。本文结合实践分析了Spring Boot框架下Redis的Lettuce客户端和Redisson客户端对P…...

milvus各组件的结构体分析

milvus各组件的结构体分析 各组件启动,需要构建各组件的结构体,一共8个。 runComponent(ctx, localMsg, wg, components.NewRootCoord, metrics.RegisterRootCoord) runComponent(ctx, localMsg, wg, components.NewProxy, metrics.RegisterProxy) run…...

vue2和vue3 全选

vue3 <template><input type"checkbox" v-model"selectAll" />全选<ul><li v-for"item in list" :key"item.id">{{ item.value }} <input type"checkbox" v-model"item.check" />…...

Java中的Set、List、Map的区别及主要实现类方法

Java中的Set、List、Map的区别 数组是大小固定的&#xff0c;并且同一个数组只能存放类型一样的数据&#xff08;基本类型/引用类型&#xff09;&#xff0c;JAVA集合可以存储和操作数目不固定的一组数据。 所有的JAVA集合都位于 java.util包中&#xff01; JAVA集合只能存放引…...

gitignore:常用说明

示例&#xff1a; Java HELP.md target/ !.mvn/wrapper/maven-wrapper.jar !**/src/main/** !**/src/test/**### IntelliJ IDEA.idea *.iws *.iml *.ipr### NetBeans/nbproject/private/ /nbbuild/ /dist/ /nbdist/ /.nb-gradle/ build/ logs/### VS Code.vscode/ 说明&#…...

HarmonyOS NEXT应用开发—在Native侧实现进度通知功能

介绍 本示例通过模拟下载场景介绍如何将Native的进度信息实时同步到ArkTS侧。 效果图预览 使用说明 点击“Start Download“按钮后&#xff0c;Native侧启动子线程模拟下载任务Native侧启动子线程模拟下载&#xff0c;并通过Arkts的回调函数将进度信息实时传递到Arkts侧 实…...

水利自动化控制系统平台介绍

水利自动化控制系统平台介绍 在当今社会&#xff0c;水资源的管理和保护日益成为全球关注的重要议题。随着科技的进步和信息化的发展&#xff0c;水利监测系统作为一种集成了现代信息技术、自动化控制技术以及环境监测技术的综合性平台&#xff0c;正在逐步改变传统的水利管理模…...

flask后端+网页前端:基于 socket.io 的双向通信和服务器部署

我想实现的效果是&#xff0c;我的服务器提供两个路由网址&#xff0c;网页A用于拍照、然后录音&#xff0c;把照片和录音传给服务器&#xff0c;服务器发射信号&#xff0c;通知另一个路由的网页B更新&#xff0c;把刚刚传来的照片和录音显示在网页上。 然后网页B用户根据这个…...

【Docker】解决 docker build 提示 `Wrong architecture ‘amd64‘`

解决 docker build 提示 Wrong architecture amd64 使用 securify2 的 docker 版本进行 sc 安全扫描 执行语句 RUN wget https://github.com/souffle-lang/souffle/releases/download/1.6.2/souffle_1.6.2-1_amd64.deb -O /tmp/souffle.deb &&\ gdebi --n /tmp/souff…...

机器学习_XGBoost模型_用C++推理示例Demo

1. 需求 将 python 训练好的 xgboost 模型, 使用C 进行加载并进行推理(预测) 2. 代码实现 #include <iostream> #include <fstream> #include <sstream> #include <vector> #include <string> #include <xgboost/c_api.h>const char *m…...

C语言 | Leetcode C语言题解之第21题合并两个有序链表

题目&#xff1a; 题解&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {/…...

2024考研调剂须知

----------------------------------------------------------------------------------------------------- 考研复试科研背景提升班 教你快速深入了解掌握考研复试面试中的常见问题以及注意事项&#xff0c;系统的教你如何在短期内快速提升自己的专业知识水平和编程以及英语…...

PCIE协议版--M.2接口规范V1.0中文版1——电气规格篇

3.电气规范 3.1 Connectivity Socket 1 系统接口信号 表15适用于Socket 1-SD和Socket 1-DP输出版本。 3.1.1.补充NFC信号 当一个SIM设备被用作安全元素时&#xff0c;NFC解决方案可以与表16中列出的附加信号相结合。 3.1.2.电源和地 PCI Express M.2 Socket 1使用一个3.3 V…...

【JVM】JVM堆占用情况分析(频繁创建的对象、内存泄露等问题)、jmap+jhat、jvisualvm工具使用

文章目录 一. 相关命令1. 查看进程堆内存整体使用情况&#xff1a;OOM的可能2. 统计类的对象数量以及内存占用&#xff1a;定位内存泄漏 二. 分析内存占用1. 使用 jhat 排查对象堆占用情况1.1. 排查步骤1.2. 具体分析例子a. 分析频繁创建对象导致的OOM 1.3. OQL查看某一个对象的…...

【蓝桥杯每日一题】4.11 更小的数(不用区间DP)

题目来源&#xff1a; 蓝桥杯 2023 省 A]更小的数 - 洛谷 这题只需要用到双指针就OK~ 思路1&#xff1a; 翻转数组的子数组&#xff0c;然后进行比较大小将翻转后的数组存储在字符串 k k k中&#xff0c;然后将字符串 k k k与字符串 a a a进行逐一元素比较&#xff08;因为…...

【线段树】2276. 统计区间中的整数数目

算法可以发掘本质&#xff0c;如&#xff1a; 一&#xff0c;若干师傅和徒弟互有好感&#xff0c;有好感的师徒可以结对学习。师傅和徒弟都只能参加一个对子。如何让对子最多。 二&#xff0c;有无限多1X2和2X1的骨牌&#xff0c;某个棋盘若干格子坏了&#xff0c;如何在没有坏…...

ChatGPT 写作利器:探索ChatGPT在论文写作中的应用

ChatGPT无限次数:点击直达 ChatGPT 写作利器&#xff1a;探索ChatGPT在论文写作中的应用 引言 ChatGPT是一种强大的自然语言处理工具&#xff0c;能够为我们提供高效、准确的文本生成功能。在论文写作领域&#xff0c;ChatGPT的应用也逐渐受到关注。本文将探讨ChatGPT在论文写…...

从 SQLite 3.4.2 迁移到 3.5.0(二十)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite---调试提示&#xff08;十九&#xff09; 下一篇&#xff1a;SQLite—系列文章目录 ​ SQLite 版本 3.5.0 &#xff08;2007-09-04&#xff09; 引入了一个新的操作系统接口层&#xff0c; 与所有先前版本的 SQLi…...

集群开发学习(一)(安装GO和MySQL,K8S基础概念)

完成gin小任务 参考文档&#xff1a; https://www.kancloud.cn/jiajunxi/ginweb100/1801414 https://github.com/hanjialeOK/going 最终代码地址&#xff1a;https://github.com/qinliangql/gin_mini_test.git 学习 1.安装go wget https://dl.google.com/go/go1.20.2.linu…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...